內容簡介
Fortran是計算世界zui早齣現的高級程序設計語言之一,隨著麵嚮對象編程時代的到來,Fortran語言不僅保持瞭發展的步伐,而且繼續在科學計算方麵領先。《Fortran95/2003程序設計(第3版)》在第2~7章介紹瞭Fortan語言基礎知識,為初學者提供入門學習資料;在第8~15章介紹瞭Fortran語言高級特性,為深入用好Fortran語言提供支持;在第16章講述瞭Fortran語言麵嚮對象編程方法,支持代碼的復用實現;在第17章簡述Fortran95版本宣布廢棄的特性,支持人們對新變化的認識。在附錄B詳細列齣內置函數功能說明,使《Fortran95/2003程序設計(第3版)》猶如Fortran語言編程指南。書中語言淺顯易懂,例題詳細展示知識的用法,測驗幫助讀者檢驗學習效果,涉及各學科實際工程計算作業有利於培養解決科學計算方麵問題的能力。《Fortran95/2003程序設計(第3版)》是一切樂於用Fortran語言進行計算的讀者的。
作者簡介
作者:(美國)StephenJ.Chapman譯者:劉瑾龐若梅趙越閤著者:章小莉
內頁插圖
目錄
前言
第1章 計算機和Fortran語言簡介
1.1 計算機
1.2 計算機中數據的錶示
1.3 計算機語言
1.4 Fonran語言發展曆史
1.5 Fortran的演進
1.6 小結
第2章 Fortran基礎知識
2.1 介紹
2.2 Fonran字符集
2.3 Fortran語句結構
2.4 Fonran程序結構
2.5 常數與變量
2.6 賦值語句和算術運算
2.7 內置函數
2.8 錶控輸入和輸齣語句
2.9 變量初始化
2.10 IMPLICITNONE語句
2.11 程序舉例
2.12 調試Fonran程序
2.13 小結
第3章 程序設計與分支結構
3.1 自頂嚮下設計技術入門
3.2 僞代碼和流程圖的使用
3.3 邏輯常數、變量和運算符
3.4 控製結構:分支
3.5 有關調試Fortran程序的問題
3.6 小結
第4章 循環和字符操作
4.1 控製結構:循環
4.2 字符賦值和字符操作
4.3 Fonran循環的調試
4.4 小結
第5章 基本的I/O概念
5.1 格式和格式化wRITE語句
5.2 輸齣設備
5.3 格式描述符
5.4 格式化READ語句
5.5 文件及文件處理初步
5.6 小結
第6章 數組
6.1 聲明數組
6.2 在Fonran語句中使用數組元素
6.3 在Fonran語句中使用整個數組和部分數組
6.4 輸入和輸齣
6.5 程序舉例
6.6 什麼時候該用數組?
6.7 小結
第7章 過程
7.1 子程序
7.2 用模塊共享數據
7.3 模塊過程
7.4 Fonran函數
7.5 過程作為參數傳遞給其他過程
7.6 小結
第8章 數組的高級特性
8.1 二維數組
8.2 多維數組
8.3 對數組使用Fonran內置函數
8.4 加掩碼的數組賦值:wHERE結構
8.5 FORALL結構
8.6 可分配數組
8.7 小結
第9章 過程的附加特性
9.1 給子程序和函數傳遞多維數組
9.2 SAVE屬性和語句
9.3 過程中的可分配數組
9.4 過程中的自動數組
9.5 在Fortran2003過程中的可分配數組
9.6 純過程和逐元過程
9.7 內部過程
9.8 小結
第10章 字符變量的更多特性
10.1 字符比較操作
10.2 內置字符函數
10.3 把字符變量傳入子程序或函數
10.4 可變長字符函數
10.5 內部文件
10.6 例題
10.7 小結
第11章 附加的內置數據類型
11.1 REAL數據類型的可選擇類彆
11.2 INTEGER數據類型的可選長度
11.3 CHARACTER數據類型的可選類彆
11.4 COMPLEX數據類型
11.5 小結
第12章 派生數據類型
12.1 派生數據類型簡介
12.2 派生數據類型的使用
12.3 派生數據類型的輸入與輸齣
12.4 在模塊中聲明派生數據類型
12.5 從函數返迴派生類型
12.6 派生數據類型的動態內存分配
12.7 參數化派生類型
12.8 類型擴展(Fonran2003新特性)
12.9 類型綁定過程
12.1 0ASSOCIATE結構
12.1 1小結
第13章 過程和模塊的高級特性
13.1 作用範圍和作用域
13.2 遞歸過程
13.3 關鍵字參數和可選參數
13.4 過程接口和接口塊
13.5 通用過程
13.6 用用戶自定義操作符和賦值符擴展Fortran
13.7 綁定賦值符和操作符
13.8 限製對模塊內容的訪問
13.9 USE語句的高級選項
13.10 內置模塊
13.11 訪問命令行參數和環境變量
13.12 VOLATILE屬性和語句
13.13 小結
第14章 高級I/O概念
14.1 更多格式描述符
14.2 錶控輸入的默認值
14.3 FortranI/O語句描述符詳述
14.4 有名I/O列錶
14.5 未格式化文件
14.6 直接訪問文件
14.7 流訪問模式
14.8 派生數據類型的非默認I/O
14.9 異步I/O
14.10 訪問特定處理機相關的I/O係統信息
14.11 小結
第15章 指針和動態數據結構
15.1 指針和目標變量
15.2 在賦值語句中使用指針
15.3 使用數組指針
15.4 使用指針的動態內存分配
15.5 指針當作派生數據類型的元素
15.6 指針數組
15.7 在過程中使用指針
15.8 過程指針
15.9 二叉樹結構
15.10 小結
15.10.1 習題
第16章 Fortran麵嚮對象程序設計
16.1 麵嚮對象程序設計介紹
16.2 Fortran類的結構
16.3 CLASS保留字
16.4 在Fortran中實現類和對象
16.5 第一個例子:timer類
16.6 方法的分類
16.7 對類成員的訪問控製
16.8 析構函數
16.9 繼承性和多態性
16.10 避免在子類中重載方法
16.11 抽象類
16.12 小結
第17章 冗餘、廢棄以及已被刪除的Fortran特性
17.1 Fortran90前的字符限製
17.2 已被廢除的源碼格式(不再使用)
17.3 冗餘數據類型
17.4 過時、廢棄以及不適應需求的說明語句
17.5 共享內存空間:COMMON和EQUIVALENCE
17.6 不必要的子程序特性
17.7 其他執行控製特徵
17.8 被廢除的分支和循環結構
17.9 I/O語句的冗餘特性(不再使用)
17.10 小結
附錄A ASCII和EBCDIC編碼係統
附錄B Fortran95/2003內置過程
附錄C Fortran95/2003程序中語句工作狀態一覽錶
附錄D 術語錶
附錄E 各章測驗的答案
精彩書摘
第1章 計算機和Fortran語言簡介
計算機可以說是20世紀最重要的發明,它以多種方式深刻地影響著我們的生活。當我們去食品店購物,收銀颱的掃描設備通過計算機識彆我們購買的食物。客戶在銀行的賬戶是用計算機來管理,這使得我們無論白天還是晚上什麼時候都可以辦理業務,因為有很多的計算機一直在服務著。計算機也控製著我們的電話和電力係統、微波爐和其他設備的運行,甚至它還控製著汽車的引擎。今天,如果突然使他們的計算機失靈,那麼發達國傢幾乎一夜之間就會崩潰。考慮到計算機對人們生活的重要性,很難想象它是在大約65年前纔發明齣來的東西。
這是個怎樣的設備呢?為什麼對我們的生活有如此大的衝擊能力?計算機(computer)是一種特殊的機器,它可以存儲信息,並能對信息以令人難於置信的極高速度進行算術計算。存儲在計算機中的程序(program)能告訴計算機需要按怎樣的順序執行計算任務,從而保證對信息的計算順利完成。大多數計算機都非常靈活,例如,如果在它的上麵執行相應的程序,我用來編寫本書的計算機也可以進行銀行賬戶管理。
前言/序言
本書第一版是我編寫維護國防和地球物理領域的大型Fortran程序的産物。我在工作期間,成功編寫瞭大型程序,這取決於策略和技術,很顯然,那時候對於一個年輕的工程師來說,維護Fortran程序與學校學習Fortran程序的編寫是完全不同的。一旦程序投入服務,維護和修改大型程序絕對需要高昂的令人難於置信的費用。因為編程的人容易理解程序,而修改程序的人相對於原程序員來說就很難明白它們的內容瞭。我編寫本書的目標是,既傳授Fortran語言的基礎知識,又較好地傳授編寫和維護程序的技術。另外,還希望本書對今後打算從事編程工作的學生有一定的參考價值。
在學生學習程序設計過程的早期,要教會他們花更多的精力來保證程序的可維護性是非常難的。因為課堂上的編程任務都很簡單,一個人足可在短期內完成編程任務,且這些程序也不需要多年的維護。也因為項目簡單,一個學生隻要參加瞭課程學習,完成所有編程任務,通過考試,即使始終不學實際工作中參加大型編程項目時需要的經驗,常常就能勝任從“編寫”到産生代碼這一整個過程的任務。
本書一開始傳授編寫的Fortran程序就適用於大型項目開發,這樣可以強調在編代碼前認真進行設計的重要性。其中設計過程使用的技術是自頂嚮下設計技術,即把大型程序分解為可以單獨實現的若乾個邏輯部分。書中還強調完成單個邏輯部分編寫過程的重要性和在將各個獨立部分集成為最終産品的過程開始之前測試單元的重要性。
《Fortran95/2003程序設計(第3版)》:係統掌握現代Fortran編程藝術 在蓬勃發展的科學計算和高性能計算領域,Fortran語言以其高效的數值運算能力和悠久的曆史,始終占據著舉足輕重的地位。從早期的高性能科學應用,到如今在並行計算、大數據分析等前沿領域的廣泛應用,Fortran的生命力曆久彌新。而《Fortran95/2003程序設計(第3版)》正是一部精心打磨的著作,旨在為讀者提供一個係統、深入的學習平颱,全麵掌握Fortran95和Fortran2003標準下的程序設計精髓。本書並非簡單地羅列語法特性,而是從工程實踐齣發,以清晰的邏輯、翔實的案例,引領讀者一步步走嚮Fortran編程的精通之路。 本書的核心價值與內容特色 本書最大的亮點在於其對Fortran95和Fortran2003標準的深度解讀與融閤。Fortran95作為一次重要的現代化演進,引入瞭指針、模塊、動態內存分配、數組賦值等諸多現代編程語言的特性,極大地提升瞭Fortran的靈活性和錶達能力。而Fortran2003則在此基礎上,進一步完善瞭麵嚮對象編程、國際化支持、對C語言的互操作性等,使其在復雜的軟件開發環境中也能遊刃有餘。本書巧妙地將這兩個版本的特性穿插講解,讓讀者在學習新特性的同時,也能深刻理解其演進的脈絡和背後的設計思想。 一、 奠定堅實基礎:從基本概念到核心語法 本書的開篇便從Fortran的基本概念入手,逐步深入到變量、數據類型、運算符、錶達式等核心內容。作者清晰地闡述瞭Fortran特有的數據類型,如整數、實數、復數、邏輯量和字符,並詳細介紹瞭各種類型的精度和範圍,這對於進行精確的科學計算至關重要。 變量與數據類型: 詳盡講解瞭Fortran中變量的聲明、初始化以及各種數據類型的屬性。讀者將理解Fortran如何管理內存,以及如何選擇最適閤計算需求的類型。 運算符與錶達式: 涵蓋瞭算術運算符、關係運算符、邏輯運算符以及賦值運算符,並深入探討瞭錶達式的求值順序和優先級,這是編寫正確計算邏輯的基礎。 控製結構: 循序漸進地介紹瞭Fortran的控製流語句,包括順序結構、選擇結構(IF、CASE)、循環結構(DO、DO WHILE、DO CONCURRENT)以及分支結構(GOTO、EXIT、CYCLE)。特彆地,作者會強調現代Fortran中鼓勵使用的結構化編程方式,例如`DO CONCURRENT`在並行計算中的應用潛力。 二、 模塊化編程與高級特性:提升代碼的可讀性與可維護性 Fortran95引入的模塊(Module)是本書的重點講解內容之一。模塊化編程是現代軟件工程的核心思想,它允許開發者將相關的過程、變量和數據類型組織在一起,實現代碼的封裝和復用,極大地提高瞭代碼的可讀性、可維護性和可擴展性。 模塊(Module): 詳細闡述瞭模塊的定義、接口、包含(CONTAINS)語句的使用,以及如何通過`USE`語句在程序中訪問模塊內的實體。讀者將學會如何構建大型、復雜的Fortran應用程序。 過程(Procedures): 深入講解瞭子程序(SUBROUTINE)和函數(FUNCTION)的定義、調用、參數傳遞(值傳遞與引用傳遞)以及遞歸調用。本書會強調函數在計算中的純粹性原則。 數組處理: Fortran在數組處理方麵一直錶現齣色。本書將係統介紹數組的定義、索引、切片,以及Fortran95/2003引入的強大的數組賦值和數組操作(Array Operations),例如數組的元素級運算(elemental operations)。`RESHAPE`、`PACK`、`UNPACK`等實用函數也會被詳細講解,讓讀者領略Fortran在處理大規模數據時的便捷性。 指針(Pointers): 指針是Fortran95引入的一項革命性特性,它賦予瞭程序動態管理內存的能力。本書會詳細講解指針的聲明、賦值、解引用,以及指針與目標變量(TARGET)的概念。理解指針對於編寫高效的動態數據結構(如鏈錶、樹)至關重要。 動態內存分配: 結閤指針,本書會深入講解動態內存分配(ALLOCATABLE)的概念。讀者將學會如何根據程序運行時的需求動態地分配和釋放內存,這對於處理未知大小的數據集或實現自適應算法非常有幫助。 三、 Fortran2003的革新:邁嚮更強大的編程範式 Fortran2003在Fortran95的基礎上,進一步引入瞭一係列先進的編程特性,使其能夠更好地適應現代軟件開發的需求。 麵嚮對象編程(Object-Oriented Programming - OOP): 這是Fortran2003最顯著的進步之一。本書將清晰地解釋麵嚮對象編程的基本概念,如類(TYPE)、繼承(EXTENDS)、多態性(POLYMORPHISM)和封裝。讀者將學習如何利用Fortran的類型(TYPE)定義對象,如何通過繼承擴展現有類型,以及如何通過過程重載(PROCEDURE OVERLOAD)實現多態行為。這使得Fortran能夠勝任更復雜的軟件工程項目。 C語言互操作性(Interoperability with C): 隨著C語言在係統編程和庫開發中的廣泛應用,Fortran與C的互操作性變得尤為重要。本書將詳細介紹如何使用`ISO_C_BINDING`模塊,實現Fortran與C之間數據類型、過程的無縫轉換和調用。這為Fortran程序與其他語言編寫的組件集成提供瞭強大的支持。 國際化支持: Fortran2003增強瞭對國際化字符集的支持,例如寬字符(WIDE CHAR)和對不同字符編碼的兼容性。本書會簡要介紹這些特性,幫助讀者編寫能夠處理多語言文本的程序。 其他增強特性: 還會涉及Fortran2003的其他重要增強,如`ALLOCATABLE`數組作為過程返迴值、`FLUSH`操作、對`DO CONCURRENT`的進一步完善等。 四、 實踐導嚮:豐富的實例與算法講解 理論知識的學習離不開實踐的檢驗。本書的另一大特色是其豐富的、貼近實際應用的編程示例。從基礎的數學運算到復雜的科學計算問題,每個概念的講解都輔以精心設計的代碼片段,供讀者學習和模仿。 數值算法: 覆蓋瞭綫性代數(矩陣運算、求解綫性方程組)、微分方程求解(歐拉法、龍格-庫塔法)、數值積分、優化算法等經典數值計算方法。 數據處理與文件 I/O: 詳細介紹瞭Fortran在文件讀寫方麵的強大功能,包括順序文件、直接存取文件和記錄式文件。`READ`、`WRITE`、`OPEN`、`CLOSE`等語句的使用會進行深入講解,並會介紹二進製文件讀寫和格式化讀寫。 並行計算初步: 鑒於Fortran在高性能計算領域的地位,本書也會對並行計算進行初步的介紹,可能會提及OpenMP等共享內存並行編程模型,以及`DO CONCURRENT`在自動並行化方麵的作用。 五、 學習與進階指導 本書不僅僅是一本語法手冊,更是一本指導讀者如何成為一名優秀的Fortran程序員的指南。 調試技巧: 提供瞭有效的調試技巧和方法,幫助讀者快速定位和解決程序中的錯誤。 代碼優化: 講解瞭提升Fortran程序運行效率的常用技巧,包括循環優化、內存訪問優化等。 學習路徑建議: 為不同層次的讀者提供瞭學習進階的建議,幫助他們根據自身需求深入學習。 目標讀者 本書適閤以下讀者群體: 計算機科學、物理學、化學、工程學等領域的學生和研究人員: 需要掌握Fortran進行科學計算和數據分析。 有其他編程語言基礎,希望學習Fortran的程序員: 能夠快速掌握Fortran的語法特性和編程範式。 希望深入瞭解Fortran95/2003新特性的Fortran開發者: 提升代碼的現代化水平和開發效率。 從事高性能計算、數值模擬、科學可視化等工作的專業人士。 結語 《Fortran95/2003程序設計(第3版)》以其全麵、深入、實用的內容,為您打開瞭通往現代Fortran編程藝術的大門。無論您是初學者還是有一定經驗的開發者,本書都將成為您學習和掌握Fortran95/2003的得力助手。通過係統學習本書,您將能夠編寫齣高效、可維護、麵嚮未來的Fortran程序,在您的學術研究和工程實踐中取得更大的成就。