關(guān)于我們
書單推薦
新書推薦
|
Fortran程序設(shè)計(第四版)
本書介紹了Fortran語言基礎(chǔ)知識,以及結(jié)構(gòu)化程序設(shè)計思想,該設(shè)計思想使得大型Fortran程序的維護(hù)更易于實現(xiàn)。本書在講述Fortran知識過程中,按適用于大型項目開發(fā)的模式來展開。本書的主要內(nèi)容有:計算機(jī)和Fortran語言簡介,F(xiàn)ortran基礎(chǔ)知識,程序設(shè)計與分支結(jié)構(gòu),循環(huán)和字符操作,基本的I/O概念,數(shù)組,過程,數(shù)組的高級特性,過程的附加特性,字符變量的更多特性,附加的內(nèi)置數(shù)據(jù)類型,派生數(shù)據(jù)類型,過程和模塊的高級特性,高級I/O概念,指針和動態(tài)數(shù)據(jù)結(jié)構(gòu),F(xiàn)ortran面向?qū)ο蟪绦蛟O(shè)計,優(yōu)化數(shù)組和并行計算,冗余、廢棄以及已被刪除的Fortran特性。本書是一本理想的Fortran語言資料。
本書介紹了Fortran語言基礎(chǔ)知識,以及結(jié)構(gòu)化程序設(shè)計思想,該設(shè)計思想使得大型Fortran程序的維護(hù)更易于實現(xiàn)。本書面向的讀者是科學(xué)/工程類學(xué)生,意在對他們進(jìn)行相應(yīng)領(lǐng)域的實踐訓(xùn)練。本書是一本理想的Fortran語言資料。本書在講述Fortran知識過程中,按適用于大型項目開發(fā)的模式來展開。書中強(qiáng)調(diào)了在代碼編寫之前貫穿始終的自頂向下詳細(xì)設(shè)計過程的重要性,該設(shè)計技術(shù)將開發(fā)過程劃分成相互獨立實現(xiàn)的幾個邏輯部分。
書中還強(qiáng)調(diào)了過程的使用,每個過程實現(xiàn)一個獨立功能部分;強(qiáng)調(diào)了單元測試的重要性,單元測試發(fā)生在各個過程集成在一起構(gòu)成整個產(chǎn)品之前。另外,也強(qiáng)調(diào)了在發(fā)布產(chǎn)品之前,用多種不同輸入數(shù)據(jù)集對集成的產(chǎn)品進(jìn)行充分測試的重要性,講述了工程師在產(chǎn)業(yè)工程和類庫中實際用到的Fortran語言相關(guān)知識。
譯 者 的 話Fortran起源于1954年,是最早出現(xiàn)的高級程序設(shè)計語言之一,它主要適合用來解決科學(xué)計算方面的問題。今天即使是已經(jīng)進(jìn)入到面向?qū)ο缶幊虝r代,F(xiàn)ortran語言仍然被專注于數(shù)據(jù)計算的科學(xué)家和工程師廣泛使用。本書為第四版,相較于第三版以Fortran 95/2003為藍(lán)本,這次主要講解Fortran 2008,并在第17章增加了并行處理和優(yōu)化數(shù)組兩個Fortran 2008中的全新內(nèi)容。但是原書的結(jié)構(gòu)與風(fēng)格依然未變:章節(jié)學(xué)習(xí)目標(biāo)明確,自上而下的程序設(shè)計方法貫穿始終,理論闡述翔實,例題講解清晰,代碼測試完整,驗證學(xué)習(xí)效果的測驗問題和練習(xí)內(nèi)容豐富。所有這些特性都是作者為方便讀者自學(xué)、掌握Fortran語言程序設(shè)計而精心設(shè)計的,這也成為用Fortran語言編程的人們樂于購買本書的亮點。 本書不僅是Fortran語言初學(xué)者的入門必選,也是熟練掌握Fortran語言人員的首選參考書。本書第1~7章,從計算機(jī)基本結(jié)構(gòu)出發(fā),講述了計算機(jī)中數(shù)據(jù)的表示。Fortran語言的發(fā)展歷史,以及編程良好習(xí)慣如何培養(yǎng),詳盡介紹了Fortran語言基本知識。第8~15章介紹了Fortran語言高級特性,為初學(xué)者掌握和用好Fortran語言提供了強(qiáng)有力的支持。第16章介紹了Fortran語言面向?qū)ο缶幊谭椒,?7章介紹了Fortran 2008中的并行處理和優(yōu)化數(shù)組,第18章逐一簡述已經(jīng)宣布廢棄的那些Fortran舊特性,為遺留的舊版Fortran程序繼續(xù)使用提供支持,這些新知識和舊特性是熟練使用Fortran編程人員最關(guān)心的內(nèi)容。 本書自始至終強(qiáng)調(diào)樹立實際工程編程思想,致力于培養(yǎng)讀者編寫良好的可讀性、維護(hù)性和完整性的程序的能力。書中有大量的工程實例,在每章后面的習(xí)題中配有很多練習(xí),其中不少練習(xí)涉及各個學(xué)科的實際工程計算。例如,相對論、電子工程、萬有引力、逃逸速度、雙曲余弦、振動周期、無線電接收機(jī)等的編程。這極利于讀者明白所學(xué)知識在實際工程中的運用,掌握所學(xué)知識,增加學(xué)習(xí)興趣。 本書主要譯者有劉博雅(第1~4章)、林慕清(第5~7章)、李浩亮(第8~10章)、王志強(qiáng)(第13~15章)、 我們希望這本新修訂的第四版圖書能為用計算機(jī)處理數(shù)據(jù)計算、完成科學(xué)研究的讀者們帶去更多的幫助。限于時間和水平,書中難免存在不足之處,敬請讀者批評指正。 譯 者 前 言本書第一版是我編寫和維護(hù)國防和地球物理領(lǐng)域的大型Fortran程序的產(chǎn)物。在工作期間,很顯然,成功編寫大型程序取決于策略和技術(shù),那時候?qū)σ粋年輕的工程師來說,維護(hù)Fortran程序與在學(xué)校學(xué)習(xí)Fortran程序的編寫完全不同。一旦程序投入服務(wù),維護(hù)和修改大型程序絕對需要高得令人難以置信的費用。因為編程的人容易理解程序,而修改程序的人相較于原程序員來說就很難明白它們的內(nèi)容。我編寫本書的目標(biāo)是,既傳授Fortran語言的基礎(chǔ)知識,也很好地講解編寫和維護(hù)程序的技術(shù)。另外,還希望本書對今后打算從事編程工作的學(xué)生有參考價值。 在學(xué)生學(xué)習(xí)程序設(shè)計過程的早期,要教會他們花更多的精力來保證程序的可維護(hù)性是非常難的。因為課堂上的編程任務(wù)都很簡單,一個人足以在短時間內(nèi)完成編寫任務(wù),且這些程序也不需要多年的維護(hù)。正因為項目簡單,一個學(xué)生只要參加了課程學(xué)習(xí),就能完成所有編程任務(wù),通過考試,即使不學(xué)實際工作中參加大型編程項目時需要的習(xí)慣,常常也能勝任從編寫到產(chǎn)生代碼整個過程的任務(wù)。 本書一開始介紹編寫的Fortran程序就適用于大型項目開發(fā),這樣可以強(qiáng)調(diào)在編代碼前認(rèn)真進(jìn)行設(shè)計的重要性。其中設(shè)計過程使用的技術(shù)是自頂向下設(shè)計,即把大型程序分解為可以單獨實現(xiàn)的若干個邏輯部分。書中還強(qiáng)調(diào)完成單個邏輯部分編寫過程的重要性和在開始將各個獨立部分集成為最終產(chǎn)品的過程開始之前單元測試的重要性。 另外,本書講述的Fortran程序,工程師和科學(xué)家在實際工作與研究中都會遇到。所有編程環(huán)境中一個問題是很常見的:必須維護(hù)大量遺留代碼。在特殊場合的遺留代碼起初是用Fortran Ⅳ(或甚至更早版本。┚帉懙模裉爝@些程序的結(jié)構(gòu)已不再被使用。例如,這些代碼可以通過使用IF語句來完成,或計算轉(zhuǎn)到或賦值轉(zhuǎn)到GO TO語句。第18章將介紹Fortran語言中那些不再被使用,但是在遺留代碼中還是會遇到的舊特性。同時也強(qiáng)調(diào)在新程序中應(yīng)該永不再用這些特性,并教會學(xué)生在遇到這些特性時如何處理它們。 第四版的變化 本書第四版直接基于Fortran 95/2003(適用科學(xué)家和工程師) 的第三版而編寫,保留了上一版的編寫結(jié)構(gòu),但全書都穿插Fortran 2008的新知識(以及Fortran 2015標(biāo)準(zhǔn)建議的相關(guān)內(nèi)容),可喜的是,F(xiàn)ortran起源于1954年,至今還生機(jī)勃勃。 從邏輯上來說,F(xiàn)ortran 2008大部分新增技術(shù)是對Fortran 2003的擴(kuò)展,各章的相應(yīng)地方都介紹了這些新技術(shù)。但是,并行處理和優(yōu)化數(shù)組為全新內(nèi)容,第17章專門對它們有介紹。 絕大多數(shù)Fortran語言課程授課時間限定為三個月或一個學(xué)期,學(xué)生從中掌握Fortran語言的基礎(chǔ)知識和編程基本概念。這些課程的內(nèi)容為本書第1~7章,如果有時間的話,可選學(xué)第8章、第9章。給學(xué)生打下良好基礎(chǔ),以便他們在實踐中更好地使用Fortran語言。 有能力的學(xué)生、工作中的科學(xué)家和工程師會需要第11~15章的COMPLEX(復(fù)數(shù))、派生數(shù)據(jù)類型和指針知識。工作中的科學(xué)家和工程師幾乎肯定需要第18章中陳舊、豐富和已刪除的Fortran特性,這些知識很少在課堂中傳授。但是本書包含了這些知識,目的在于實際中用Fortran語言解決真實問題時,本書依然有參考價值。 本書特點 本書設(shè)計了很多特性來強(qiáng)調(diào)如何用恰當(dāng)?shù)姆椒ň帉懣煽啃愿叩腇ortran程序。這些特性對于首次學(xué)習(xí)Fortran的學(xué)生和實際工程中的人們都很有用。它們是: 1.現(xiàn)代技術(shù) 本書在例題中始終用的是最新特性。許多Fortran 2008現(xiàn)代特性中不僅一直保留著Fortran語言舊版本的特性,還有了可取代它們的新特性。在這種情況下,例題中用的是現(xiàn)代新技術(shù)。舊技術(shù)的使用大部分被移到第18章中講述,在那里強(qiáng)調(diào)了它們是舊版本的/不受歡迎的。保留的舊版本Fortran特性有:使用模塊替代COMMON(通用)塊來實現(xiàn)數(shù)據(jù)共享,DO… END DO循環(huán)替代DO…CONTINUE循環(huán),內(nèi)部過程替代語句函數(shù)、CASE結(jié)構(gòu)替代計算轉(zhuǎn)向GOTO語句。 2.強(qiáng)制類型 全書一直使用IMPLICIT NONE語句來強(qiáng)制每個程序中的每個變量類型要顯式聲明,以便編譯時捕捉到常見的打字錯誤。與程序中每個變量顯式聲明一起,書中強(qiáng)調(diào)創(chuàng)建數(shù)據(jù)字典的重要性。該字典描述程序中每個變量的作用。 3.自頂向下設(shè)計方法 本書第3章介紹了自頂向下設(shè)計方法,并且隨后的其他章節(jié)一直在用該方法。這一方法鼓勵學(xué)生在開始編代碼前,仔細(xì)思考,對程序進(jìn)行好的設(shè)計。強(qiáng)調(diào)明確定義問題的重要性,以便在開始任何其他工作之前準(zhǔn)備好需要的輸入和輸出數(shù)據(jù)。一旦問題被恰當(dāng)定義,緊接著就教授學(xué)生逐步細(xì)化問題,即將問題分解得更小,把單個子任務(wù)設(shè)計為子例程或函數(shù),最后告訴學(xué)生每個階段中測試的重要性,包括關(guān)于構(gòu)建程序的單元測試和最終產(chǎn)品的集成測試。書中給出了幾個程序示例說明如何進(jìn)行測試,這些程序可以在一些數(shù)據(jù)集上正確運行,而在另一數(shù)據(jù)集上運行時卻可能失敗。 通過學(xué)習(xí)本書可以知道標(biāo)準(zhǔn)的程序設(shè)計過程是: (1)清晰地說明要解決的問題。 (2)定義程序需要的輸入和將產(chǎn)生的輸出。 (3)描述打算用于程序的算法。這一步涉及自頂向下、逐步分解、偽代碼或流程圖。 (4)把算法轉(zhuǎn)換成Fortran程序。 (5)測試程序。這一步包括對于特定子例程的單元測試,也包括用許多不同數(shù)據(jù)完成最終程序的集成測試。 4.過程 本書強(qiáng)調(diào)用子例程和函數(shù)來實現(xiàn)在邏輯上大任務(wù)分解出來的子任務(wù),并利用過程隱藏數(shù)據(jù),還強(qiáng)調(diào)要重視在將子任務(wù)集成為最后的程序之前的單元測試。另外,書中還介紹了使用過程時常見的錯誤,以及怎樣避免這些錯誤(參數(shù)類型不匹配、數(shù)組長度不匹配等)。書中強(qiáng)調(diào)對過程要用好顯式接口,因為它使得在對Fortran編譯時,編譯器能盡可能多地捕捉常見的編程錯誤。 5.簡版和標(biāo)準(zhǔn)版Fortran 本書強(qiáng)調(diào)編寫簡潔Fortran代碼的重要性,因為這樣才可以很容易地實現(xiàn)代碼在不同類型計算機(jī)之間的移植。書中還教授學(xué)生在自己的程序中一定要用標(biāo)準(zhǔn)版的Fortran語句,以便代碼達(dá)到最大限度的簡潔。另外,書中還教授多用像SELECTED_REAL_KIND函數(shù)這樣的特性,以避免在不同機(jī)器上運行程序時,發(fā)生數(shù)據(jù)精度和類別不同的問題。 本書也教授學(xué)生不要在少數(shù)特殊的過程中用與機(jī)器型號有關(guān)的代碼(如調(diào)用與機(jī)器系統(tǒng)有關(guān)的類庫文件),以免在移植程序時不得不重寫這些代碼。 6.良好的編程習(xí)慣 當(dāng)介紹良好編程習(xí)慣時,便于對學(xué)生強(qiáng)調(diào)它們,這些知識點被突出表示,以示強(qiáng)調(diào)這是好的編程做法。另外,每章介紹的良好的編程習(xí)慣在每章最后都進(jìn)行了小結(jié)。下面舉例說明書中如何標(biāo)示良好的編程習(xí)慣知識點。
7.編程警示 書中對編程時需要注意的事項進(jìn)行了突出表示,以提示要避免它們的發(fā)生。下面舉例說明書中如何標(biāo)示編程警示知識點。
8.指針和動態(tài)數(shù)據(jù)結(jié)構(gòu) 第15章詳細(xì)討論了Fortran指針,包括指針使用不正確可能帶來的問題。如內(nèi)存不足,指針指向的空間將得不到分配。書中給出了很多動態(tài)數(shù)據(jù)結(jié)構(gòu)示例,包括鏈表和二叉樹。 第16章討論了Fortran的對象和面向?qū)ο缶幊,包括涉及程序多態(tài)性的動態(tài)指針的使用。 9.注意事項 本書中有很多的注意事項,這些注意事項列出的是學(xué)生可能感興趣的其他信息。某些注意事項實質(zhì)上展示了Fortran的發(fā)展史。例如,第1章有一條注意事項描述了IBM Model 704,這是第一臺運行Fortran的機(jī)器。另有一條注意事項是對書本知識的補(bǔ)充。再如,第9章的一條注意事項回顧和概述了Fortran中數(shù)組的多處不同。 10.知識點完整參考資料 最后,書中給出了現(xiàn)代Fortran語言的完整參考資料,以便讀者在實際應(yīng)用中能快速查找需要的相關(guān)知識點。這里把特別關(guān)注點列入在特性表中,很容易查閱,其中包括晦澀和難于理解的特性,如通過地址引用傳遞過程名,在表控輸入語句中的默認(rèn)值等。 本書教學(xué)特點 為了便于學(xué)生理解書中所講內(nèi)容,本書有如下設(shè)計特點: 每章開頭列出了本章學(xué)習(xí)目標(biāo)。共有27個測驗分布于全書之中,相應(yīng)答案在附錄F。這些測驗?zāi)軒椭x者自我檢驗學(xué)習(xí)效果。另外,有大約360個練習(xí)出現(xiàn)在各章節(jié)之后,全部練習(xí)答案在圖書網(wǎng)站可以找到,當(dāng)然練習(xí)答案在教師參考手冊上也有包含。各章中良好的編程習(xí)慣均加粗強(qiáng)調(diào),常見的錯誤在編程警示中給出了提醒,各章末尾也對良好的編程習(xí)慣和Fortran語句和結(jié)構(gòu)進(jìn)行了小結(jié),最后附錄C給出了Fortran內(nèi)置過程的詳細(xì)說明,附錄E列出了全部的術(shù)語。 本書有教師參考手冊,其中含有各章練習(xí)答案,教師也可在該圖書網(wǎng)站的教師參考手冊中找到答案,書中全部例題源代碼和相關(guān)的補(bǔ)充材料也可以從圖書網(wǎng)站上下載獲得。 關(guān)于Fortran編譯器的注意事項 在寫作本書的時候,我用過兩種Fortran編譯器:Intel Visual Fortran Version 16.0和GNU G95 Fortran編譯器。兩個編譯器對Fortran 2008的完整功能基本實現(xiàn),僅有非常少的幾項功能不支持,同時這兩種編譯器對Fortran 2015未來的實現(xiàn)特性的建議給予了關(guān)注。 在此,我對潛在的用戶強(qiáng)烈推薦該兩編譯器,因為Intel Fortran的優(yōu)點是很好地集成了調(diào)試環(huán)境,但其缺點是價格偏高。G95編譯器則可以免費使用,但其調(diào)試功能相對難用。 用戶最后的注意事項 無論我多么努力地審校本書,書中還是會存在一些印刷和打印錯誤,如果讀者發(fā)現(xiàn)這些錯誤,請通過出版社告訴我,我將在重印和改版時努力修正它們。對于你的幫助與支持我深表感謝。 在本書網(wǎng)站上我將提供完整的勘誤表和錯誤改正說明,網(wǎng)址是www.mhhe.com/ chapman4e,如果需要獲取修訂信息和最新更新請查看該網(wǎng)站。 致謝 在此我對Raghu Srinivasan和McGraw-Hill教育團(tuán)隊為本次圖書修訂所做的工作深表感謝。另外,我要感謝我的妻子Rosa和女兒Devorah,她們在本次圖書修訂過程中給予了我大力支持(在前一版的圖書修訂中,我也對其他7個孩子給予了感謝,但是這次他們均已長大成人)。 Stephen J. Chapman 作 者 介 紹 SHEPHEN J. CHAPMAN,1975年在路易斯安那州立大學(xué)獲電子工程專業(yè)學(xué)士學(xué)位,1979年在中佛羅里達(dá)大學(xué)獲電子工程專業(yè)碩士學(xué)位,后在水稻田大學(xué)進(jìn)行了進(jìn)一步的研究升造。Chapman先生現(xiàn)在負(fù)責(zé)澳大利亞墨爾本的澳大利亞BAE系統(tǒng)的系統(tǒng)模型化和可操作分析工作,他是一名海軍艦隊反導(dǎo)彈攻擊模型的開發(fā)團(tuán)隊領(lǐng)導(dǎo)人。該模型的代碼已經(jīng)編寫了十年以上,含有超過40萬條的MATLAB代碼,他具有極其豐富的將MATLAB應(yīng)用于實際問題的經(jīng)驗。Chapman先生是電力與電子工程協(xié)會(以及幾個子協(xié)會)的資深會員,也是計算機(jī)械協(xié)會和(澳大利亞)工程研究會的成員。
你還可能感興趣
我要評論
|