




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Fortran 程序設(shè)計(jì)基礎(chǔ),金鑫 2010.8.6,1,特制分析,Contents,2,特制分析,Fortran語言簡介 作為一門誕生于上個(gè)世紀(jì)50年代后半期的高級(jí)計(jì)算機(jī)語言,F(xiàn)ortran在這個(gè)C/C+、Java等新興語言大行其道的時(shí)代仍然活躍在人們的視野之中。Fortran語言的長項(xiàng)在于數(shù)值計(jì)算,在科學(xué)研究和工程設(shè)計(jì)領(lǐng)域有著廣泛的用途。在描述數(shù)學(xué)語言的自然性方面,F(xiàn)ortran同現(xiàn)存的其他高級(jí)語言相比有著明顯的優(yōu)勢。對(duì)于科研工作者和工程技術(shù)人員而言,F(xiàn)ortran語言的易學(xué)性和易用性是公認(rèn)的。,Fortran語言基礎(chǔ)知識(shí),3,特制分析,1954:IBM 在 IBM 704 上發(fā)展 195
2、7:IBM發(fā)表,F(xiàn)ortran Formula Translator 1966:American Standards Association制定 Fortran 66 鑒于各家編譯器無法相容,故統(tǒng)一標(biāo)準(zhǔn) American Standards Association:美國國家標(biāo)準(zhǔn)局(ANSI)的前身 1978:ANSI 公布 Fortran 77 標(biāo)準(zhǔn) 刪去部分內(nèi)容,新增邏輯與輸入輸出方面的功能 1992:國際標(biāo)準(zhǔn)組織 ISO 公布 Fortran 90 標(biāo)準(zhǔn) 與 77 版本差異較大 加入物件導(dǎo)向、提供指針與加強(qiáng)陣列功能、自由格式寫作 1997:國際標(biāo)準(zhǔn)組織 ISO 公布 Fortran 95
3、標(biāo)準(zhǔn) 加強(qiáng)并行運(yùn)算 Fortran 200 x,Fortran 發(fā)展歷史,4,特制分析,Compaq Visual Fortran 6.5,Fortran 編譯器Compaq Visual Fortran,5,特制分析,固定格式(Fortran77,后綴.f;.for) 自由格式(Fortran90,后綴.f90),Fortran語言的書寫格式,6,特制分析,在Fortran語言中,有五種基本的數(shù)據(jù)類型可供使用。他們分別是整型(INTEGER)、實(shí)型(REAL)、復(fù)型(COMPLEX)、字符型(CHARACTER)和邏輯型(LOGICAL) 對(duì)我們來說常用的數(shù)據(jù)類型為整型、實(shí)型、字符型 各數(shù)據(jù)
4、分類分別包括常量及變量,數(shù)據(jù)類型及I/0格式,7,特制分析,變量名的作用是識(shí)別程序中的變量。Fortran中的變量名命名有一定的規(guī)則,主要有以下幾條。 變量名中只能包含26個(gè)英文字母和09十個(gè)數(shù)字;在Fortran90/95標(biāo)準(zhǔn)中,還允許使用下劃線“_”。 變量名的第一個(gè)字符必須是字母,不能是下劃線“_”或數(shù)字。 在Fortran77標(biāo)準(zhǔn)中,變量名不允許超過6個(gè)字符;在Fortran90/95標(biāo)準(zhǔn)中,變量名不允許超過31個(gè)字符。,數(shù)據(jù)類型及I/0格式,8,特制分析,變量的定義及類型說明: (1)類型說明語句 integer year, month, day real runoff charac
5、ter*10 station (2)隱含約定 IN 規(guī)則,數(shù)據(jù)類型及I/0格式,9,特制分析,輸入、輸出語句 READ(設(shè)備號(hào), 格式說明或格式說明語句標(biāo)號(hào)) 變量列表 WRITE (設(shè)備號(hào), 格式說明或格式說明語句標(biāo)號(hào)) 變量列表 READ,WRITE語句中當(dāng)設(shè)備號(hào)為星號(hào)“*”時(shí),表示從默認(rèn)的設(shè)備輸入輸出;格式說明為星號(hào)“*”表示表控格式輸入、輸出;輸入、輸出項(xiàng)可以有多個(gè),每個(gè)輸出項(xiàng)之間用逗號(hào)“,”分隔;當(dāng)語句中沒有輸出項(xiàng)時(shí),命令將輸出一個(gè)空白行。 表控格式輸入、輸出 格式輸入、輸出,數(shù)據(jù)類型及I/0格式,10,特制分析,格式輸入輸出控制符 常用控制符 i,f,a 寫法: nIw;nfw.d
6、; naw 如: integer year, month, day write(*, (3i8) year, month, day 又如: real runoff write (*, (f9.2) runoff,數(shù)據(jù)類型及I/0格式,11,特制分析,格式說明語句 format 寫法:FORMAT (format-list) 如: integer year, month, day write(*, 15)year, month, day 15 format(3i8),數(shù)據(jù)類型及I/0格式,12,特制分析,Fortran 三種常用運(yùn)算 算數(shù)運(yùn)算:算數(shù)運(yùn)算符及算數(shù)表達(dá)式 關(guān)系運(yùn)算:關(guān)系運(yùn)算符及關(guān)系表
7、達(dá)式 邏輯運(yùn)算:邏輯運(yùn)算符及邏輯表達(dá)式 其中,算數(shù)運(yùn)算是Fortran的基本運(yùn)算,其基本運(yùn)算符包括+,-,*,/,*,Fortran語法結(jié)構(gòu),13,特制分析,Fortran語法結(jié)構(gòu),關(guān)系運(yùn)算 在實(shí)際的數(shù)學(xué)或工程問題中,經(jīng)常會(huì)遇到比較兩個(gè)數(shù)據(jù)誰大誰小的問題。這就是一個(gè)關(guān)系比較的問題。在Fortran中,提供了進(jìn)行這類操作的運(yùn)算符和表達(dá)式規(guī)則。 關(guān)系運(yùn)算符也可以稱作關(guān)系比較符,它是一個(gè)雙目運(yùn)算符。Fortran中定義了六個(gè)基本的關(guān)系運(yùn)算符,14,特制分析,Fortran語法結(jié)構(gòu),關(guān)系表達(dá)式是最簡單的一種邏輯表達(dá)式,它的一般形式為: 關(guān)系運(yùn)算量可以是算術(shù)量,也可以是字符量。算術(shù)量可以是數(shù)值型常量、數(shù)
8、值型變量、數(shù)值函數(shù),還可以是算術(shù)表達(dá)式。如: A+B3.5 等價(jià)于A+B.GT.3.5 40=40 等價(jià)于40.GE.40 40C 等價(jià)于40.LT.C COS(B)=0.5 等價(jià)于COS(B).LE.0.5 (M+N)*X=0.0 等價(jià)于(M+N)*X.EQ.0.0 X-Z.NE.(Y+X) 等價(jià)于 X-Z.NE.(Y+X) 關(guān)系運(yùn)算符等級(jí)低于算數(shù)運(yùn)算符,15,特制分析,Fortran語法結(jié)構(gòu),邏輯運(yùn)算 Fortran語言中提供了5種邏輯運(yùn)算符供程序員在編程時(shí)使用。新舊Fortran標(biāo)準(zhǔn)中的邏輯運(yùn)算符沒有任何區(qū)別,每個(gè)運(yùn)算符的左右兩側(cè)都有一點(diǎn)“.”,書寫時(shí)不可以省略。邏輯運(yùn)算符中有的是雙目運(yùn)
9、算符,有的是單目運(yùn)算符,使用中需要注意。,16,特制分析,Fortran語法結(jié)構(gòu),邏輯表達(dá)式的一般形式為: 同關(guān)系表達(dá)式不同,一個(gè)邏輯表達(dá)式中可以包括多個(gè)邏輯運(yùn)算符,例如邏輯表達(dá)式“A.GE.10.0.AND.A+C.GT.B+D.OR.NOT.TRUE.”中包含了.AND.、.OR.、.NOT.三個(gè)邏輯運(yùn)算符。在邏輯表達(dá)式中除了有邏輯運(yùn)算符外,還可以有關(guān)系運(yùn)算符和算術(shù)運(yùn)算符。 下面是一些邏輯表達(dá)式的例子: (A.GT.B).AND.(A.NE.C)等價(jià)于(AB).AND.(A/=C) (X.LT.-1.0).OR.(X.GT.1.0)等價(jià)于(X1.0) .NOT.(A+C)*D.LE.0.0
10、)等價(jià)于.NOT.(A+C)*DB).EQV.(C=D),17,特制分析,Fortran語法結(jié)構(gòu),在上面的一系列例子中,有的邏輯表達(dá)式中既有邏輯運(yùn)算符,又有關(guān)系運(yùn)算符和算術(shù)運(yùn)算符。對(duì)于這種混合了多種運(yùn)算符的表達(dá)式,F(xiàn)ortran語言規(guī)定了不同運(yùn)算符的運(yùn)算順序: 首先計(jì)算算術(shù)表達(dá)式的值(例如前面一個(gè)范例中的A+C和B+D)。 接下來再求關(guān)系表達(dá)式的值(例如前面一個(gè)范例中的A.LE.10.0和A+C.GT.B+D)。 最后進(jìn)行邏輯運(yùn)算,各個(gè)邏輯運(yùn)算符的先后順序是:.NOT.AND.OR.EQV.=.NEQV.。 如果邏輯表達(dá)式中有括號(hào),則先進(jìn)行括號(hào)內(nèi)的運(yùn)算。,18,特制分析,程序流程控制的常用語句
11、結(jié)構(gòu) 判斷If語句 goto語句 塊if結(jié)構(gòu) do循環(huán)結(jié)構(gòu) 常用結(jié)構(gòu) 選擇結(jié)構(gòu) 循環(huán)結(jié)構(gòu),Fortran程序流程控制,19,特制分析,If語句 IF(邏輯表達(dá)式) 執(zhí)行語句 塊If結(jié)構(gòu) IF(邏輯表達(dá)式1) THEN THEN 塊 ELSE IF(邏輯表達(dá)式2) THEN ELSE IF塊 ELSE ELSE塊 END IF,Fortran程序流程控制,20,特制分析,goto 語句 goto 語句標(biāo)號(hào) do循環(huán)語句 DO 循環(huán)變量 = 循環(huán)初值,循環(huán)終值,循環(huán)增量 循環(huán)體 ENDDO 當(dāng)循環(huán)增量為1時(shí),可省略,Fortran程序流程控制,21,特制分析,選擇結(jié)構(gòu)設(shè)計(jì) 塊IF語句 多層嵌套塊I
12、F語句 循環(huán)結(jié)構(gòu)設(shè)計(jì) “當(dāng)”型循環(huán) “直到”型循環(huán) 其他程序控制語句 End Pause stop,Fortran程序流程控制,22,特制分析,實(shí)例分析 (1)1100求和 (2)輸入5個(gè)數(shù),按大小排序,Fortran程序流程控制,23,特制分析,數(shù)組是Fortran語言中功能最為強(qiáng)大、運(yùn)用最為靈活的一種數(shù)據(jù)結(jié)構(gòu)。在存儲(chǔ)結(jié)構(gòu)上,數(shù)組占用一片連續(xù)的存儲(chǔ)單元。程序中通過數(shù)組索引來對(duì)數(shù)組元素、片斷進(jìn)行操作。 數(shù)組的基本操作 數(shù)組的定義 數(shù)組的引用 數(shù)組的賦值 數(shù)組的計(jì)算 數(shù)組的輸入輸出,數(shù)組操作,24,特制分析,數(shù)組的定義 類型說明 : 數(shù)組名(下標(biāo)下界:下標(biāo)上界,), 如 real runoff(
13、365) real runoff(12,31) real runoff(1:12,1:31) 數(shù)組下標(biāo)下界缺省時(shí),值為1 數(shù)組可用DIMENSION語句定義 DIMENSION runoff(365) Real runoff 使用數(shù)組必須先定義,數(shù)組操作,25,特制分析,數(shù)組引用 (1)引用數(shù)組元素 數(shù)組名(下標(biāo)),如 runoff(15),rain(3,5) (2)引用全部數(shù)組 數(shù)組名,如: real B(10),A(10) B=A (3)引用數(shù)組片段 數(shù)組名(下標(biāo)范圍),數(shù)組操作,26,特制分析,PROGRAM TEST IMPLICIT NONE ! 變量定義 REAL : A1, A2
14、,A3,A4,A5,B(5,5) READ(*, *)A1,A2,A3,A4,A5 ! 數(shù)組片斷的引用 B(1,1:5) = A1 B(2,1:5) = A2 B(3,1:5) = A3 B(4,1:5) = A4 B(5,1:5) = A5 END PROGRAM TEST,數(shù)組操作,27,特制分析,數(shù)組賦值 (1)賦值語句 數(shù)組對(duì)象 = value (2)data語句(賦初始值) data days/31,28,31,30,31,30,31,31,30,31,30,31/ (3)do循環(huán) do i=1,12 do j=1,31 runoff(i,j)=0 enddo enddo,數(shù)組操作,
15、28,特制分析,數(shù)組的運(yùn)算包括數(shù)組之間的運(yùn)算及數(shù)組元素之間的運(yùn)算 數(shù)組的運(yùn)算,如數(shù)組間的數(shù)學(xué)運(yùn)算(+,-,*,/,*),數(shù)組的合并、轉(zhuǎn)置運(yùn)算等,直接以數(shù)組為操作對(duì)象。 數(shù)組元素之間的運(yùn)算多通過循環(huán)語句進(jìn)行,數(shù)組操作,29,特制分析,數(shù)組的輸入輸出 數(shù)組的輸入輸出多通過do循環(huán)語句或隱式do循環(huán)語句進(jìn)行 如 do i=1,12 do j=1,days(i) write(*,*)runoff(i,j) enddo enddo 又可寫成 do i=1,12 write(*,*)(runoff(i,j),j=1,days(i) enddo,數(shù)組操作,30,特制分析,一個(gè)Fortran程序中通常不是只由
16、一個(gè)主程序組成,而是由幾個(gè)按某種方式劃分的不同程序單元來共同組成。盡管Fortran程序中允許只有主程序而沒有子程序,但絕不允許只有子程序而沒有主程序。在Fortran中,程序的執(zhí)行總是從主程序開始的。程序可以有一個(gè)或多個(gè)子程序。 函數(shù)子程序( FUNCTION ) 子例行子程序(SUBRIOUTINE) 各子程序間的數(shù)據(jù)傳遞,子程序及模塊化,31,特制分析,子程序及模塊化,函數(shù)子程序和子例行子程序是子程序的兩種常用基本形式。它們的共同特征就是作為數(shù)據(jù)處理過程的集合。但是這兩種子程序也不完全相同,函數(shù)子程序會(huì)返回一個(gè)函數(shù)值,且通常不會(huì)改變啞元的數(shù)值。因此,函數(shù)子程序更像是數(shù)學(xué)上的一個(gè)函數(shù)。而子
17、例行子程序通常用于完成一項(xiàng)更為復(fù)雜的任務(wù),通過啞元或者其他手段返回幾個(gè)結(jié)果,啞元的數(shù)值通常會(huì)在程序的執(zhí)行過程中改變。,32,特制分析,子程序及模塊化,函數(shù)子程序的一般形式為: prefix FUNCTION name (d-arg-list) RESULT (r-name) . END FUNCTION name 1prefix說明項(xiàng) prefix說明項(xiàng)是一個(gè)可選參數(shù),可以使用如下兩種形式來書寫: type keyword 或 keyword type 2d-arg-list d-arg-list表示函數(shù)的啞元列表。如果函數(shù)子程序不包含啞元,則啞元列表可以省略,但是函數(shù)名后的括號(hào)不能省略。 3
18、RESULT關(guān)鍵字 RESULT關(guān)鍵字用于聲明將函數(shù)的返回值保存在其后的變量名中,稱為函數(shù)結(jié)果名。,33,特制分析,子程序及模塊化,函數(shù)子程序的調(diào)用與內(nèi)在函數(shù)的調(diào)用形式一樣。在主調(diào)程序的任意位置,可以通過下面的語句形式將函數(shù)子程序的計(jì)算結(jié)果賦值給變量: V = 函數(shù)名(實(shí)元表) 其中,V表示用于接收函數(shù)計(jì)算結(jié)果的變量;實(shí)元表是程序中實(shí)際傳入函數(shù)子程序的變量列表,除非有特殊說明,變量列表中的實(shí)元個(gè)數(shù)以及類型必須與函數(shù)子程序定義時(shí)的虛參在個(gè)數(shù)和類型上一致。如果函數(shù)不包含啞元,則調(diào)用形式是在表達(dá)式中直接寫上函數(shù)名再跟空括號(hào)即可: V = 函數(shù)名(),34,特制分析,子程序及模塊化,子例行子程序同函數(shù)
19、子程序非常相似,但是子例行子程序不會(huì)有返回值。這種形式的子程序是以SUBROURTINE語句開始,END語句結(jié)束的過程。其一般語法形式如下: 前綴 SUBROUTINE子程序名 (啞元列表) END SUBROUTINE子程序名 程序調(diào)用 call 子程序名,35,特制分析,各子程序間的數(shù)據(jù)傳遞 (1)虛實(shí)結(jié)合 (2)common語句 (3)數(shù)據(jù)定義模塊 Common語句(公共區(qū)語句)一般形式 Common /公共區(qū)名稱/變量表,子程序及模塊化,36,特制分析,在前面的說明中,大部分的程序在運(yùn)行時(shí),總是從鍵盤上輸入數(shù)據(jù),程序的輸出也幾乎總是顯示在計(jì)算屏幕上。對(duì)于一些小程序,輸入的數(shù)據(jù)不多、數(shù)據(jù)結(jié)構(gòu)也不復(fù)雜,采用這種方式是可行的。但是,對(duì)于一些大型的應(yīng)用程序(如WEP模型等)涉及到幾百兆甚至上G的數(shù)據(jù)輸入與輸出。在這種情況下,如果仍然采用終端輸入輸出的方式就很難想象了。另一方面,使用終端輸入輸出方式時(shí),程序在運(yùn)行中可以通過屏幕查看到輸出的結(jié)果,一旦退出程序,此時(shí)要想再次查看輸出的結(jié)果就很困難了,除非再次運(yùn)行程序。使用文件就可以避免上述問題,同時(shí)文件還能避免重復(fù)處理,保存起來也很方
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年臥式離子風(fēng)機(jī)項(xiàng)目資金申請(qǐng)報(bào)告代可行性研究報(bào)告
- 2025年廣西安全工程職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫帶答案
- 2025屆河北省廊坊市高三上學(xué)期期末英語試題及答案
- 2025年度建筑改造項(xiàng)目承重墻拆除安全責(zé)任免責(zé)協(xié)議
- 2025年度拆除施工與建筑垃圾回收合同
- 2025年度電力設(shè)施安全保證金合同
- 2025年度廢輪胎回收與橡膠顆粒生產(chǎn)合同
- 2025年度房地產(chǎn)銷售代理與服務(wù)合同
- 2025年度醫(yī)療機(jī)構(gòu)與保險(xiǎn)公司合作康復(fù)服務(wù)協(xié)議
- 2025年度工業(yè)廠房轉(zhuǎn)租租賃合同
- 《市場營銷學(xué)》講稿
- 2025年中國陪診服務(wù)行業(yè)現(xiàn)狀、發(fā)展環(huán)境及投資前景分析報(bào)告
- 靜脈治療相關(guān)血管解剖結(jié)構(gòu)與生理
- 統(tǒng)編版九年級(jí)道德與法治上冊(cè)期中考試卷及答案
- 學(xué)校安全隱患報(bào)告和舉報(bào)獎(jiǎng)懲制度
- 福建師范大學(xué)《廣告作品賞析》2022-2023學(xué)年第一學(xué)期期末試卷
- 對(duì)外經(jīng)貿(mào)-會(huì)計(jì)學(xué)原理考試答案
- 消渴病中醫(yī)護(hù)理
- 大學(xué)生職業(yè)素養(yǎng)訓(xùn)練(第六版)課件 第五單元學(xué)會(huì)有效溝通
- 醫(yī)院醫(yī)療項(xiàng)目收費(fèi)管理制度
- 建筑師負(fù)責(zé)制工程建設(shè)項(xiàng)目建筑師標(biāo)準(zhǔn)服務(wù)內(nèi)容與流程
評(píng)論
0/150
提交評(píng)論