本書全面、系統地介紹FORTRAN95的語法規則以及利用它進行程序設計的方法。主要內容有: FORTRAN95 概述及編譯環境的介紹、FORTRAN95程序設計基礎、順序結構程序設計、選擇結構程序設計、循環結構程序設計、數組、函數與子程序、文件、派生類型與結構體、指針、模塊、常用數值算法。另外根據教學需要,本書擴充了計算思維和計算機系統組成的相關知識。
本書針對程序設計初學者的特點,突出基礎知識的講解,全書概念清晰,語言簡單易懂,實例豐富。本書可作為高等院校理工科學生學習程序設計的教材,也可以作為程序設計的初學者、從事工程計算的工作人員和科研人員的參考書。
1.本書系統介紹FORTRAN95的語法規則以及利用它進行程序設計的方法。2.本書擴展了計算思維和計算機系統組成的相關知識。3.本書配有《FORTRAN95程序設計實驗指導與測試》,配套使用學習效果更佳。
前言
程序設計是高等學校計算機基礎教育的基礎與重點,目的是向學生介紹程序設計的基礎知識,使其掌握高級語言程序設計的基本思想和方法,培養學生的計算思維,增強其用計算機處理問題的能力。
FORTRAN語言是最早出現的計算機高級程序設計語言,其發展過程中不斷吸收現代化編程語言的新特性,以其特有的功能在數值、科學和工程計算領域發揮著重要作用,并且在工程計算領域占有重要地位,很多優秀的工程計算軟件都是使用FORTRAN語言編寫的,如ANSYS、Marc等。
基于Windows平臺下的FORTRAN90的推出,使FORTRAN真正實現了可視化編程,徹底告別了傳統DOS環境(命令行界面),轉到了現代Windows環境(視窗界面),共享微軟公司Windows平臺的豐富資源。本書以FORTRAN95為平臺,重點介紹程序設計的思想和方法。
本書以程序設計為主線,以編程應用為驅動,通過案例和問題引入知識點,重點講解程序設計的思想和方法,內容全面,概念清晰,語言簡單易懂,實用性強。
為使讀者更好地掌握FORTRAN95程序設計基礎,我們還編寫了與本書配套的《FORTRAN95程序設計實驗指導及測試》,可作為學習參考書。另外,還有與本書配套的電子版教學課件,供教師教學參考使用。
書中所有程序實例都是由教師在多年授課過程中精挑細選所得,并采用目前流行的、可視化的Microsoft Develop Studio集成開發環境,使讀者在程序設計的思維訓練和程序組織方面得到極大簡化。為適應不斷更新的計算機操作系統,在實驗教材中還給出了Windows 7、Windows 10操作系統下使用Visual Fortran的上機操作過程。
本書可作為高等學校理工科學生學習程序設計的教材,也可以作為程序設計的初學者、從事工程計算的工作人員和科研人員的參考書。
本書由王麗娟、段志東主編,李玉龍主審。第1、2、12、14章由王紅鷹編寫,第3、5、6、7章由陳權編寫,第9、11、13章和附錄A由段志東編寫,第4、8、10章和附錄B由王麗娟編寫。與本書配套的《FORTRAN95程序設計實驗指導及測試》一書由王紅鷹、陳權主編,李玉龍主審。
本書在規劃、編寫過程中得到了蘭州交通大學教務處、計算機教學示范中心、電信學院、繼續教育學院、土木工程學院的領導和教師們的大力支持,編者在此表示衷心感謝。
鑒于編者水平所限,書中難免有不當或錯誤之處,懇請讀者不吝賜教。
本書的配套電子課件等資源可以從清華大學出版社網站www.tup.com.cn下載,在本書和課件的使用中如有問題,請聯系fuhy@tup.tsinghua.com.cn。
編者
2017年6月
目錄
第1章計算思維與程序設計
1.1什么是計算
1.1.1計算機的硬件
1.1.2計算
1.1.3計算機的軟件
1.1.4計算科學
1.2什么是計算思維
1.2.1計算思維的基本原則
1.2.2計算思維的基本應用
1.2.3計算思維在日常生活中的體現
1.3計算機語言
1.3.1機器語言
1.3.2匯編語言
1.3.3高級語言
1.4算法
1.4.1算法的特征
1.4.2算法評價指標
1.4.3算法的表示
1.5程序設計
1.5.1程序設計步驟
1.5.2程序設計方法
習題1
第2章FORTRAN95概述
2.1FORTRAN語言發展概況
2.2FORTRAN95語言的特點
2.3簡單的FORTRAN95程序分析
2.4FORTRAN95編譯環境與上機步驟
2.4.1Compaq Visual Fortran 6.5的安裝與啟動
2.4.2上機步驟
習題2
第3章FORTRAN95程序設計初步
3.1FORTRAN95的字符集、標識符和關鍵字
3.1.1字符集
3.1.2標識符
3.1.3關鍵字
3.2FORTRAN95程序的書寫格式
3.2.1固定格式
3.2.2自由格式
3.3FORTRAN95的數據類型
3.3.1數值型數據的表示及存儲
3.3.2非數值型數據的表示及存儲
3.4常量和變量
3.4.1常量
3.4.2變量
3.5FORTRAN95的算術運算符與算術表達式
3.5.1算術運算符
3.5.2算術表達式
3.6FORTRAN95標準函數
習題3
第4章順序結構程序設計
4.1賦值語句
4.1.1賦值語句的性質和作用
4.1.2執行算術賦值語句時的類型轉換問題
4.1.3字符賦值語句和字符運算符
4.2簡單的輸出語句
4.2.1輸出語句的作用和分類
4.2.2表控輸出語句
4.3簡單的輸入語句
4.3.1輸入語句的作用和分類
4.3.2表控輸入語句
4.4END語句、STOP語句和PAUSE語句
4.4.1END語句
4.4.2STOP語句
4.4.3PAUSE語句
4.5程序舉例
習題4
第5章選擇結構程序設計
5.1選擇結構中的條件準備
5.1.1關系運算符和關系表達式
5.1.2邏輯運算符和邏輯表達式
5.2邏輯IF語句
5.3塊IF結構
5.3.1單分支塊IF結構
5.3.2雙分支選擇塊IF結構
5.3.3多分支塊IF結構
5.4塊IF結構的嵌套
5.5塊CASE結構
5.6程序舉例
習題5
第6章循環結構程序設計
6.1用DO語句實現循環結構
6.1.1循環語句(DO語句)和循環次數的計算
6.1.2DO循環的執行過程
6.1.3DO循環的一些說明
6.1.4DO循環結構的嵌套
6.1.5隱含DO循環結構
6.2DO WHILE循環結構
6.2.1DO WHILE循環的組成
6.2.2DO WHILE循環的執行過程
6.3循環的流程控制
6.3.1EXIT語句
6.3.2CYCLE語句
6.4幾種循環形式的關系和比較
6.5程序舉例
習題6
第7章格式輸入和輸出
7.1格式輸出
7.1.1I編輯符
7.1.2F編輯符
7.1.3E編輯符
7.1.4D編輯符
7.1.5L編輯符
7.1.6A編輯符
7.1.7撇號編輯符
7.1.8X編輯符
7.1.9斜杠編輯符
7.1.10重復系數
7.1.11WRITE(PRINT)語句與FORMAT語句的相互作用
7.2格式輸入
7.2.1格式輸入的一般形式
7.2.2整數的輸入
7.2.3實數、復數和雙精度數的輸入
7.2.4邏輯型數據的輸入
7.2.5字符型數據的輸入
7.2.6對格式輸入的說明
7.3在輸入輸出語句中包含格式說明
習題7
第8章數組
8.1數組的概念
8.2數組的說明
8.2.1用DIMENSION語句定義數組
8.2.2用類型說明語句定義數組
8.2.3同時使用類型說明符和DIMENSION語句定義數組
8.3給數組賦初值
8.3.1使用數組賦值符賦初值
8.3.2用DATA語句給數組賦初值
8.4對數組的操作
8.4.1對數組元素的操作
8.4.2數組的整體操作
8.4.3數組局部引用
8.4.4WHERE命令
8.4.5FORALL命令
8.5數組的存儲規則
8.5.1一維數組的存儲規則
8.5.2二維數組的存儲規則
8.5.3三維數組的存儲規則
8.6數組的輸入和輸出
8.6.1用DO循環結構輸入輸出數組
8.6.2用數組名作為輸入輸出項
8.6.3用隱含DO循環輸入輸出數組
8.7動態數組
8.8數組應用舉例
8.8.1一維數組程序舉例
8.8.2二維數組程序舉例
習題8
第9章函數與子程序
9.1概述
9.1.1子程序產生的原因
9.1.2FORTRAN子程序
9.2語句函數
9.2.1語句函數的定義
9.2.2語句函數的調用
9.2.3語句函數應用舉例
9.3函數子程序
9.3.1函數子程序的定義
9.3.2函數子程序的調用
9.4子例行子程序
9.4.1子例行子程序的定義
9.4.2子例行子程序的調用
9.5程序單元之間的數據傳遞: 虛實結合
9.5.1簡單變量作為虛參時的虛實結合
9.5.2數組作為虛參時的虛實結合
9.5.3子程序名作為虛參時的虛實結合
9.5.4星號(*)作為虛參
9.5.5子程序中變量的生存周期
9.6特殊的子程序類型
9.6.1遞歸子程序
9.6.2內部子程序
9.7數據共用存儲單元與數據塊子程序
9.7.1等價語句
9.7.2公用語句
9.7.3數據塊子程序
習題9
第10章文件
10.1文件的基本概念
10.1.1記錄
10.1.2文件的概念
10.1.3文件的特性
10.1.4文件的定位
10.2文件的操作語句
10.2.1文件的打開與關閉
10.2.2文件的輸入(read)語句和輸出(wirte)語句
10.2.3查詢文件的狀態(inquire)語句
10.2.4rewind語句
10.2.5backspace語句
10.2.6endfile語句
10.3有格式文件的存取
10.3.1有格式順序文件存取
10.3.2有格式直接文件存取
10.4無格式文件的存取
10.4.1無格式順序文件存取
10.4.2無格式直接文件存取
10.5二進制文件的存取
10.5.1二進制順序文件存取
10.5.2二進制直接文件存取
習題10
第11章派生數據類型與結構體
11.1概述
11.2派生類型定義
11.3結構體的定義與引用
11.3.1結構體定義
11.3.2結構體成員引用
11.4結構體初始化
11.4.1用賦值語句給結構體成員賦值
11.4.2定義的同時給結構體成員賦值
11.5結構體數組
11.5.1結構體數組定義
11.5.2結構體數組初始化
11.6程序舉例
習題11
第12章指針
12.1指針的概念
12.2指針的定義與使用
12.3指針的使用
12.3.1指向一般變量的應用
12.3.2指向動態存儲空間
12.4指針與數組
12.4.1指針指向其他數組
12.4.2指針指向動態配置的內存空間
12.5指針與鏈表
12.5.1結點的定義
12.5.2鏈表的基本操作
12.5.3綜合實例
習題12
第13章模塊、接口與重載
13.1模塊的定義
13.2USE語句
13.3接口界面塊
13.4重載
13.4.1函數和子例行程序的重載
13.4.2賦值號重載
13.4.3操作符重載
13.5應用舉例
習題13
第14章常用數值算法
14.1求解一元方程
14.1.1二分法
14.1.2弦截法
14.1.3迭代法
14.1.4牛頓迭代法
14.2數值積分
14.2.1矩形法
14.2.2梯形法
14.2.3辛普生法
14.3線性代數
14.3.1矩陣的加、減、乘法運算
14.3.2三角矩陣
14.3.3GaussJordan法求聯立方程組
14.4求解常微分方程
習題14
附錄AASCII碼字符編碼表
附錄BFORTRAN庫函數
參考文獻