




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第三章 Fortran語言程序設計初步3.1 Fortran語言發(fā)展概況3.2 簡單的Fortran程序分析3.3 Fortran源程序的書寫格式3.4 Fortran字符集3.5 運行一個Fortran程序的過程 50年代末誕生了第一個主要用于科學計算的高級語言FORTRAN語言。Fortran是英文FORmula TRANslation的縮寫,意為“公式翻譯”。 它是為科學、工程問題中的那些能夠用數學公式表達的問題而設計的語言,主要用于數值計算。這種語言簡單易學,因為可以像抄寫數學教科書里的公式一樣書寫數學公式,它比英文書寫的自然語言更接近數學語言。FORTRAN語言簡介3.1 Fortr
2、an語言的發(fā)展概況 Fortran語言是第一個真正推廣的高級語言。至今它已有五十多年歷史,但仍歷久不衰,始終是數值計算領域所使用的主要語言。Fortran語言問世以來,根據需要幾經發(fā)展,先后推出形成了很多版本。FortranI: 第一代Fortran語言,在1954年提出來的,于1956年在IBM 704計算機上得以實現。FortranII:是1958年出現的,它對FortranI進行了很多擴充(如引進了子程序),FortranII在很多機器上得以實現。 FortranIII:未在任何計算機上實現。FortranIV: 1962年出現。對原來的Fortran作了一些改變,使得FortranII
3、源程序在FortranIV編譯程序下不能全部直接使用,導致了語言不兼容的問題。這樣就形成了當時同時使用FortranII和FortranIV兩種程序設計語言的局面。 Fortran66:1966年正式公布了兩個美國標準文本:標準基本Fortran X3.10-1966 (相當于FortranII)和標準Fortran X3.9-1966(相當于FortranIV)。問題: 很多編譯程序并不向這一標準靠攏,它們往往為實現一些有用的功能而忽略標準; FortranIV、66都不是結構化的語言,沒有直接實現三種基本結構的語句,在程序中往往需要用一些以GOTO語句以實現特定的算法; 而且為了使非標準的
4、Fortran源程序能夠交換移植,產生了“預處理程序”,通過預處理程序讀入非標準的Fortran源程序,生成標準的Fortran文本,從而實現了源程序的交換移植,但這種自動生成的Fortran程序通常讓人難以理解。 Fortran90:因為Fortran77有著明顯的局限性,為了引入一些新的功能,適應語言的發(fā)展,1991年通過了Fortran90新標準ANSI X3.198-1991 ,相應的國際化標準組織的編號為ISO/IEC1539:1991。 新的Fortran標準廢棄了過時的嚴格的源程序書寫格式,改善了語言的正規(guī)性,并提高了程序的安全性,功能有更大的擴充,是一個能適應現代程序設計思想的
5、現代程序設計語言。 為了保護對Fortran77用戶在軟件開發(fā)上的巨大投資,整個Fortran77被作為Fortran90的一個嚴格子集。 對科學計算特別有益之一是自動存儲、假定形狀數組、可選參數、結構和指針。用更友好的接口把軟件很好地工程化。FORTRAN 2000:全面引入面向對象的編程思想。FORTRAN已經完全趕上了編程語言的潮流。Fortran95:它的設計在1995年11月完成,是Fortran90的最小擴展。為什么選擇 Fortran77 由于很多用戶在Fortran程序上作了巨大的投資,許多大型科學計算Fortran程序(有些長達數十萬條語句),如分子動力學模擬計算(C60-C
6、240的碰撞)等程序仍在頻繁地使用。 在科技領域內某些標準程序庫(International Mathematics and Statics Library, Numerical Algorithms Group)內有數千以上的子程序是用Fortran寫的,特別是早期的程序都是用Fortran77編寫的,這些程序庫已通過長期使用驗證了穩(wěn)定性。 科學研究經常需要使用或改編以前的程序,這時必須了解Fortran77的編程手法。因此,仍然需要學習將Fortran77作為基礎,但隨時與Fortran90比較不同之處。Fortran90/95是具有強烈現代特色的語言,總結了現代軟件的要求與算法應用的發(fā)展
7、,增加了許多現代特征的新概念、新功能、新結構、新形式。Fortran90的現代特性表現在:Fortran90/95 加強了程序的可讀性、可維護性: 淘汰所有轉移語句,用新的控制結構實現選擇分叉與重復操作,使程序結構化。 同時增加了結構塊、模塊及過程的調用靈活形式,使程序易讀易維護,新的模塊裝配取代了Fortran77的許多舊語句,使程序員更為清晰明確地定義全局數據。 增加了新的數據種別說明,使得Fortran程序在不同計算機編譯環(huán)境下有更自由的移植性。 發(fā)展了現代算法功能: 加強了數組的算法功能,引進了多種數組操作功能與概念,使數組像一個變量一樣自由操作,使數組的并行化運算成為可能。 增加了適
8、于操作數據結構的派生類型,提高了文字處理功能,勝任信息管理系統、辦公自動化的任務。特別是動態(tài)存儲功能的引進極大地加強了它在數值計算領域中應用的威力。 擴大與編程者的友好界面: 新的編程形式減少了煩瑣與格式束縛,接近自然語言與公式演算。 允許在字符數據中選取不同種別,在字符串中可使用各國文字(例如漢字),還可任意使用化學、物理、數學的各種專業(yè)字符。例1.1 輸入兩個數,求算數平均和幾何平均值。 1.0 2.0 鍵盤輸入(a,b)值 1.500000 1.414214 計算結果輸出至屏幕F77的固定書寫格式 PROGRAM Example_1_1 C-求兩種平均値- (注釋行) REAL a, b
9、, av1, av2 READ (*,*) a, b av1 = (a + b)/2 av2 = sqrt(a*b) WRITE(*,*) av1, av2 END3.2 簡單的FORTRAN 77程序分析F90的自由格式PROGRAM Example_1_1 ! 求兩種平均値REAL: a, b, av1, av2READ *, a, bav1 = (a + b)/2; av2 = (a*b)*0.5PRINT *, av1, av2END 程序説明: 程序中第1行是注釋行,對程序起說明作用。 F77注釋行是以“C”或“*”作為該行第一個字符的, F90可在任意一行末以“!”開始作為注釋符。
10、 第2行是主程序名,第3行是變量類型定義,第4行是輸入語句,第56行是賦值部分,第7行是打印輸出語句,最后是程序結束。 F90中用“;”將兩行并為一行。 例1.2 輸入圓錐底面半徑R,高度H,求體積和表面積。 從數學公式中知道:V=R2H/3圓錐側面積圓錐體積F90的自由格式 PROGRAM Example_1_2 REAL : pi, r, h, v, s pi = 3.141593 PRINT *,Input radius r and height h ? READ *, r, h v = pi*h*r*2/3.0 s = pi*r*(r + sqrt(r*2 + h*2) PRINT *
11、, Volume =, v PRINT *, Area =, s END 例1.3 分別求半徑R=1,3,12.5時的圓周長。此源程序由二部分組成:主程序和子程序。F90的自由格式real : r(3) !MAIN PROGRAMdata r /1, 3, 12.5/do i=1,3 print *, 半徑, r(i), 圓周長, c(r(i)end doendfunction c(radius) ! SUB PROGRAM pi=acos(-1.0) c=2*pi*radius returnend 一個Fortran程序由一個或若干個程序單位組成。 主程序和輔程序分別是一個獨立的程序單位。主
12、程序單元起整體控制作用,各輔程序單元完成總問題中的一個子問題。 每一個程序單位都是以END語句結束的。END既是一個程序單位的結束標志,又是一個獨立的語句(結束語句)。 主程序中的END語句的作用-是使程序“停止運行”。 輔程序中的END語句-是“使流程返回調用程序”。Fortran程序的特點 一個程序單位包括若干行。F77規(guī)定,一行只能寫一個語句,一行中不能寫幾個語句。如果一個語句太長,一行內寫不下的話,可以寫在繼續(xù)行(要用“續(xù)行標志”)。 F77行分為下面兩類。語句行:由一個Fortran語句組成, Fortran語句分為執(zhí)行語句和非執(zhí)行語句。 執(zhí)行語句使計算機在運行時產生某些操作,如賦值
13、語句、打印語句等。 非執(zhí)行語句(包括說明語句,數據語句等)將有關信息通知編譯系統,以便在編譯時作出相應的處理,例如類型說明語句、函數子程序語句等。非語句行:即注釋行它不是Fortran語句,它不被翻譯成機器目標指令。不產生任何機器操作。它僅僅是為了人們閱讀程序的方便而加到程序中的。一個程序中注釋行的數目不受限制,根據需要而定。但一個程序單位不能只由注釋行組成。注釋行的內容完全是根據程序設計人員需要而寫的,一般是為程序(或程序中一部分)的作用作注釋以易于理解程序。 F90行不分類。注釋可以寫在任一行末尾,而且一行不限語句數,可以將幾個F77行合并寫入一行。這樣,極大地簡化了程序寫法,使得程序可以
14、編寫得更為清晰明了。因此F90的格式較F77有柔軟性。 Fortran程序中的語句可以有標號。一個語句有否標號是根據需要而定,其作用是標志一個語句以便被其它語句引用。在同一個程序單元中不能有兩個相同標號的語句。標號不影響語句的執(zhí)行順序。 在F90中因為提倡結構化程序設計,一般不使用標號。 一個程序單位中各類語句的位置是有一定規(guī)定的。 例如 PROGRAM語句應是主程序的第一個語句 FUNCTION語句是函數子程序的第一個語句 SUBROUTINE語句是SUB子程序的第一個語句 END語句只能是程序單位中最后一行。 主程序 PROGRAM 程序名 語句可省略 .END PROGRAM 程序名 E
15、ND必須有FORTRAN 程序的構成a)程序單位輔程序(過程) SUBROUTINE 子程序 FUNCTION 函數 BLOCK DATA 塊數據 MODULE 模塊 (F90) 內部過程CONTAINS (F90)各程序單位(除模塊程序單位外)的程序體形式相同,共分兩部分:前面是說明部分,后面是執(zhí)行部分(模塊程序單位只有說明部分),兩部分之間沒有確切的分界,緊密銜接,但不準彼此穿插。即:程序單位單位起始語句程序體單位結束語句。 程序體說明部分執(zhí)行部分。PROGRAM,FUNCTION,SUBROUTINE,BLOCK DATA等程序單位開始語句 變量類型和語句函數等定義語句(說明部分) 執(zhí)行
16、語句,DATA語句,FORMAT語句 (執(zhí)行部分)END語句b)程序體和語句順序Fortran要求嚴格的語句順序。在每個程序單位中,根據語句種類按如下的次序排列。F77中的順序可簡單歸納為: c)英文名變量名和程序名等使用的英文名是由(F77:6;F90:31)個字符(包含英文字母A-Z、數字0-9、F90:下劃線 _)構成,且第一個字符必須是字母。其英文名的有效使用范圍原則上限于一個程序單位之內(內部過程除外)。如下面的語句是錯誤的: INTEGER : 1A ! 不是以字母開頭 INTEGER: A_name_made_up_of_more_than_31_letters !太長 INTE
17、GER : China:0 ! 含有不允許的字符 INTEGER : A-3 ! 減號在此是無意義的 d) 標號和標簽可在語句開頭加上標號或標簽,用于指定特定的語句。有效范圍限于一個程序單位內。標號:1-5位的10進制整數,且至少一位不為0,前導0不起作用。F90中,不可對空語句加上語句標號。例: DO 10 k = 1,100 . 10 CONTINUE標簽:英文名,后面接“:”(冒號) (F90)注:不能使用整型變量來指定轉向語句的標號。如下是錯誤的。 n = 10 GOTO n例: DO k = 1,100loop2: DO . END DO loop2 !已有標簽名時不能省略標簽名。
18、END DO標號區(qū):第l5列可以寫l至5位整數。也可以沒有標號。標號區(qū)中的空格不起作用。如lOO與100 或1 0 0作用相同。標號應是無符號整數(無正負號或小數點)。標號大小順序沒有任何要求。假如第二行的標號為1000,第三行的標號可以是10,也可以是99999。標號區(qū)內不得出現標號以外的內容,但注釋行例外。注釋行的內容可以寫在標號區(qū)內,一行中第一列為C或*的,該行即被認為注釋行,編譯時對該行內容不作翻譯,對程序運行不產生任何影響。如果在第一列上出現的不是數字、空格或C和*的字符,編譯時按出錯處理。一行分為四個區(qū), 分別書寫源程序不同部分的內容續(xù)行區(qū):第6列如果在一行的第6列上寫一個非空格和
19、非零的字符,則該行作為其上一行的續(xù)行。 F77允許一個語句有19個續(xù)行(即一個語句最多可以寫成20行)。有的程序中第6列上用“l(fā)”,“2”,表示該行是第1個或第2個續(xù)行,但用數字字符容易與第7列的數字形成連續(xù)的數字串而引起錯覺,故最好使用固定的特殊字符。 語句區(qū):第772列不要求一定從第7列開始寫語句,可以從第7列以后(72列以前)的任何一列開始寫,但一行只能寫一個語句。如果寫滿了72列,一旦在終端上修改程序時在該行又插入了一些字符,就會使本行最后幾個字符超出語句區(qū)而引起意料不到的錯誤。特別注意到語句最后的空格將可能溢出72列,在某些計算機系統上將導致難以查出的錯誤。應注意,引號內的字符串中所
20、包括的空格是有效的,不能忽略。注釋區(qū):第7380列在卡片輸入法時代,程序員一般利用此8列為程序行編序號以便查找。注釋區(qū)只對程序員提供辨別信息,不是語句的一部分,在編譯時不對7280列作處理。續(xù)行標志區(qū)b) 自由格式在F90中,用自由格式編寫程序有很大的自由度。與固定格式相比,不易產生鍵入位置的錯誤,而且易讀易懂。行:一行為132列??梢杂袕蛿禇l程序語句,語句間用分號“;”分開。語句沒有位置規(guī)定。注釋行:起始用注釋符“!”號,此行其后的所有字符均作為注釋(字符串中的!號除外,如 print *,help! )。續(xù)行:當一個語句非常長以至于132列都書寫不下時,允許有39個續(xù)行。在語句行最后加上續(xù)行符“&”號。如果字符串跨2行以上,則在續(xù)行的開始位置也要加&號。注意語句的有效字符是從“&”前
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB14-T 1490-2025 鄉(xiāng)鎮(zhèn)農產品質量安全檢測室建設規(guī)范
- 互聯網公司股東退股及網絡安全責任協議
- 高端商務區(qū)停車位租賃與物業(yè)管理合同
- 生物制藥廠區(qū)質量管理體系與物業(yè)管理專項合同
- 2025年飛行器設計與制造專業(yè)職業(yè)考試試題及答案
- 2025年國際商務專業(yè)資格考試試題及答案
- 果洛州氣象現代化基礎工程建設項目公開招標文件
- 2025商場地產父親節(jié)618聯合企劃(爸氣總動員主題)活動策劃方案-37P
- 2026高考廣東省廣州市2025年普通高中畢業(yè)班沖刺(四)語文試題及參考答案
- 場監(jiān)管委天津區(qū)域綠化養(yǎng)護服務合同
- 心率變異性與情緒狀態(tài)的相關性-洞察闡釋
- 2025年初中語文名著閱讀《林海雪原》知識點總結及練習
- 2025年濟南鐵路局招聘筆試參考題庫含答案解析
- JGT266-2011 泡沫混凝土標準規(guī)范
- 特種設備鍋爐日管控、周排查、月調度主要項目及內容表
- 電力電子裝置-2021復習要點
- GB/T 29602-2013固體飲料
- 電力拖動自動控制系統-運動控制系統(第5版)習題答案
- 禾川x3系列伺服說明書
- 毒理學基本概念ppt課件
- 電工電子基礎課程教學大綱
評論
0/150
提交評論