版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上FORTRAN 心得第一部分:一些小心得1 Fortran不區(qū)分大小寫2 Fortran有5種基本數(shù)據(jù)類型,integer,real, character, logical, complex3 fortran fixed format格式中的變量賦初值一般用DATA,因?yàn)樗荒苡?4 real(kind=8) a這種格式只使用于Fortran90,F(xiàn)ortran77中要使用real*8或real(8)5 FORTRAN中FREE與FIXED兩種格式do循環(huán)的區(qū)別:Fortran 95使用end do來結(jié)束循環(huán)。Fortran 77使用DO循環(huán)要麻煩一點(diǎn),它不使用END
2、 DO來結(jié)束循環(huán),而是使用行號(hào)來結(jié)束循環(huán),程序代碼要在DO的后面寫清楚這個(gè)循環(huán)到哪一行程序代碼結(jié)束。Fortran 77中,經(jīng)常會(huì)使用CONTINUE這個(gè)命令來結(jié)束循環(huán)。因?yàn)镃ONTINUE這個(gè)命令沒有實(shí)際的用途,剛好可以拿來做封裝使用。6 循環(huán)的流程控制: 循環(huán)中的cycle命令相當(dāng)于c+里的continue命令,用于結(jié)束一次循環(huán) 循環(huán)中的exit命令好比c里面的break,用于結(jié)束循環(huán)7 不使用do循環(huán),單純用GOTO語句也能設(shè)計(jì)循環(huán)程序,但不推薦使用GOTO語句7 fortran有等價(jià)聲明:即用equivalence(a,b),這樣使得a,b使用同一塊內(nèi)存,這樣可以節(jié)省內(nèi)存,有時(shí)可精簡(jiǎn)代
3、碼。8 fortran77中只能用單引號(hào)。(還有疑問,因?yàn)閒ixed format能用雙引號(hào))9 邏輯運(yùn)算符 = /= > >= < <= !Fortran90用法 .EQ. .NE. .GT. GE. .LT. .LE. !Fortran77用法9 PAUSE,CONTINUE,STOP pause 暫停程序執(zhí)行,按enter可繼續(xù)執(zhí)行 continue 貌似沒什么用處,可用作封裝程序的標(biāo)志 STOP 命令用來結(jié)束程序,要謹(jǐn)慎使用10 數(shù)組元素之間要用逗號(hào)分隔,而不能像matlab一樣既可以用逗號(hào)也可以用空格,fortran的數(shù)組元素之間不能用空格。11 數(shù)組的聲明:
4、 Fortran 77中數(shù)組的聲明,必須使用DIMENSION命令I(lǐng)nteger a; !先聲明a是整型Dimension a(10) !再聲明a是大小為10的數(shù)組Fortran 95中可以用簡(jiǎn)單的方法:Integer a(10) !最簡(jiǎn)單的方法Integer,dimension(10): a !另一種方法12 數(shù)組的賦值: Fortran 77中數(shù)組的聲明,可以使用DATA命令 或隱含式循環(huán)來賦初值;Fortran 95中可以直接設(shè)置初值;如:integer :a(5)=(/1,2,3,4,5/);此時(shí),括號(hào)和除號(hào)之間不能有空格;13 與C不同,F(xiàn)ortran數(shù)組索引值默認(rèn)從1開始,而且可以
5、在聲明時(shí)改變?cè)撘?guī)則,如 integer a(-3:1) !索引值為-3,-2,-1 ,0,113 數(shù)組在內(nèi)存中的存放順序也與C不同(正好相反),如a(2,2)在內(nèi)存中的存放順序?yàn)閍(1,1),a(2,1),a(1,2),a(2,2); 原則是放低維的元素,再放高維的元素,此規(guī)則稱為column major 矩陣輸出時(shí)也是按列輸出。14 Fortran的特色:隱含式循環(huán)15 a,b都為數(shù)組,則可以這樣用a=sin(b),(內(nèi)部函數(shù)都可以這樣用)16 數(shù)組專用: where命令形式上類似于if,但只用于設(shè)置數(shù)組 where.elsewhere.elsewhere.endwhere (沒有then)
6、 FORALL是Fortran95添加的功能,只能用于數(shù)組操作 forall可以嵌套使用,還可以在forall中使用where,但where中不能使用forall15 Fortran中傳遞參數(shù)的原理與c+不同,F(xiàn)ortran中是傳址調(diào)用,就是傳遞時(shí)用參數(shù)和子程序接受時(shí)用的參數(shù)使用一個(gè)地址,盡管命名可以不同。16 調(diào)用自定義函數(shù)前需要做聲明,調(diào)用子程序則不需要。17 Module中有函數(shù)時(shí)必須在contains命令之后18 全局變量(有的書上叫無名公用區(qū)、有名公用區(qū))全局變量用來定義一塊共享的內(nèi)存空間; 全局變量不能聲明成常量全局變量不能直接使用data命令賦初值,要在block data模塊中
7、使用data來設(shè)置初值。COMMON語句是說明語句,因此它應(yīng)該出現(xiàn)在相應(yīng)程序單元中的所有可執(zhí)行語句之前。 取用全局變量時(shí),是根據(jù)它們的相對(duì)位置關(guān)系來作對(duì)應(yīng),而不是根據(jù)變量名稱來對(duì)應(yīng)。19 傳遞參數(shù)與使用全局變量都可以在不同程序之間共享數(shù)據(jù),那什么時(shí)候該使用參數(shù),還有什么時(shí)候該使用全局變量呢? 簡(jiǎn)單地說,當(dāng)需要共享的變量不多,而且只有少數(shù)幾個(gè)程序需要使用這些數(shù)據(jù)時(shí),那就使用參數(shù),需要共享大筆數(shù)據(jù),或是有很多不同程序都需要使用這些數(shù)據(jù)時(shí),就使用全局變量。20 INCLUDE命令1 INCLUDE命令可以寫在任何地方,它只是單純地用來插入一個(gè)文件的內(nèi)容。2 有時(shí)候也會(huì)應(yīng)用在聲明全局變量,先把聲明全局
8、變量的程序代碼編寫在某個(gè)文件中,需要使用全局變量的函數(shù)再去INCLUDE這個(gè)文件,這樣可以減少程序代碼。第二部分:格式化輸入輸出1 表控輸入輸出(即表控格式輸入輸出)1 注意點(diǎn):不同計(jì)算機(jī)系統(tǒng)對(duì)表控格式輸出的規(guī)定不同,例如對(duì)一個(gè)整型數(shù),有的系統(tǒng)規(guī)定輸出占13列,有的系統(tǒng)規(guī)定輸出占10列,也有的系統(tǒng)不規(guī)定固定的列數(shù)而按照數(shù)據(jù)的實(shí)際長(zhǎng)度輸出,再用一個(gè)空格作分隔符。2 如果在輸入數(shù)據(jù)行中出現(xiàn)”/”號(hào),表示對(duì)READ語句的輸入到此結(jié)束,未被賦值的變量將不予賦值。2 FORMAT 語句語句格式: 標(biāo)號(hào) FORMAT(格式描述符)例如: write(*,100) i,j,k;100 FORMAT(1X,I
9、3,I5,I7),其中,1X是換行控制符(走紙控制),I3表示i變量的值輸出占3列,I5表示j變量的值輸出占5列1 格式描述符主要介紹:I、F、E、X、縱向走紙、'(撇號(hào))、r(重復(fù)系數(shù))、/(斜杠)等(1) X描述符 作用: 用于輸出空格一般形式: nX(2) I描述符 作用: 用于整型數(shù)據(jù)的輸出一般形式: Iw 或 Iw.n(3) F描述符作用:用于實(shí)數(shù)的小數(shù)形式輸出一般形式: Fw.d(4) E描述符作用:用于實(shí)數(shù)的指數(shù)形式輸出一般形式:Ew.d其中:E實(shí)數(shù)的指數(shù)形式輸出; w字段寬度; d數(shù)字部分的小數(shù)位數(shù)。 數(shù)值部分1 (5) A描述符作用:用于字符型數(shù)據(jù)的格式描述一般形式:
10、 Aw或A ,其中w是字段寬度。(6) 號(hào)描述符作用:用于輸出字符常量,即把撇號(hào)內(nèi)的字符串原樣照打例如:write(*,100) i,j 100 format(1x,'i=',i3,' j=',i4)(7) H描述符作用:它的作用與撇號(hào)描述符類似,也可以輸出字符型常量一般形式: nH 建議:建議最好不要使用H描述符,而是使用撇號(hào)描述符,避免錯(cuò)誤例如: I=123 WTRITE(*,100),I 100 FORMAT(1X,2HI=,I3);(8) 斜杠描述符 反斜杠描述符和美元$描述符的作用相同,都是在輸出一個(gè)記錄行后取消回車符,常用于輸出字符串與輸入數(shù)據(jù)顯示于
11、屏幕同一行的情形。例如:write(*,'("please enter your name",$)'); Read(*,*) My_age(9) 重復(fù)系數(shù)r在format語句中,如果出現(xiàn)幾個(gè)(或幾組)相同的格式編輯符,則可以利用重復(fù)系數(shù)而只寫一個(gè)(或一組)編輯符。 r可重復(fù)使用的次數(shù)。 例: write(*,100) n1,n2,x,y1,y2,y3100 format (1x, i10, i10, f8.3, f7.2, f7.2, f7.2) Format (1x, 2i10, f8.3, 3f7.2) 第三部分:函數(shù)操作1 語句函數(shù) 1 語句函數(shù)的定義
12、REAL(KIND=8) X, FF(X)=X*2+X+1 2 語句函數(shù)的調(diào)用 語句函數(shù)一旦被定義后,就可以在本程序單元中被調(diào)用。調(diào)用的形式和調(diào)用內(nèi)容函數(shù)形同,即: 語句函數(shù)名(實(shí)參)2 說明語句函數(shù)定義語句是非執(zhí)行語句,它應(yīng)該放在所有可執(zhí)行語句之前和所有的說明語句之后。語句函數(shù)只能在本程序單元中被使用。2 函數(shù)子程序1 定義的一般形式:類型說明符 FUNCTION 函數(shù)名(形參表)函數(shù)主體函數(shù)名=表達(dá)式;END或者: FUNCTION 函數(shù)名(形參表) 函數(shù)主體函數(shù)名=表達(dá)式;END3 子例行程序子例行程序定義的一般形式: SUBROUTINE 函數(shù)名(形參表) 。end子例行程序的調(diào)用:
13、CALL 子程序名(實(shí)參)4 函數(shù)子程序與子例行程序的區(qū)別1 子例行程序的名稱不用來返回函數(shù)的處理結(jié)果,因此是沒有類型的。所以不能定義子例行程序的類型。2 子例行程序必須以SUBROUTINE語句開頭,以END語句結(jié)束。3 能用函數(shù)子程序?qū)崿F(xiàn)的功能,都能用子例行程序來實(shí)現(xiàn),反之亦然。因此在程序設(shè)計(jì)時(shí),要對(duì)具體問題選擇哪種方式。4 由于不能給子例行程序名賦值,所以在將函數(shù)子程序轉(zhuǎn)換為子例行程序時(shí),應(yīng)該增加一個(gè)變量用來帶回在函數(shù)子程序中由函數(shù)名帶出的子例行程序處理結(jié)果。5 子例行程序的調(diào)用需要專門的CALL語句。5 數(shù)據(jù)塊子程序(BLOCK DATA)1 數(shù)據(jù)塊子程序是非執(zhí)行程序單元,因而在其中不
14、能出現(xiàn)任何可執(zhí)行語句,也不能被別的程序調(diào)用。2 它是專門用來給有名公用區(qū)中的項(xiàng)目賦初值的子程序。注意:COMMON變量不能直接在子程序或主程序中使用DATA命令來設(shè)置初值,要在BLOCK DATA程序模塊中使用DATA命令來設(shè)置初值。3 數(shù)據(jù)塊子程序是一個(gè)完整的程序單元。它由BLOCK DATA語句開始,END語句結(jié)束。4 BLOCK DATA只能用來設(shè)置全局變量的初值,而且在主程序執(zhí)行前,全局變量的初值內(nèi)容就會(huì)設(shè)置完畢,事實(shí)上這一段程序會(huì)在主程序執(zhí)行前就會(huì)生效;5 全局變量不能聲明成常量,所以BLOCK DATA中不能出現(xiàn)PARAMETER。6 MODULE1 MODULE可以用來封裝程序模
15、塊,通常是用來把程序中具備相關(guān)功能的函數(shù)及變量封裝在一起。例如需要使用全局變量時(shí),可以把全局變量都聲明在MODULE中,需要使用這些變量的函數(shù)只要USE這個(gè)MODULE就可以使用它們。2 MODULE中的變量如果不是聲明成全局變量,這些變量被函數(shù)使用時(shí),只會(huì)是函數(shù)中的局部變量。3 MODULE中還可以容納函數(shù),語法如下:Module module_name !先寫聲明相關(guān)程序代碼 contains !從contains后開始寫作函數(shù) subroutine sub_name end subroutine sub_name !subroutine不能省略 function function_nam
16、e . end function function_name !function不能省略 end這個(gè)做法比較符合模塊化概念,編寫大程序時(shí),可以把程序中屬于繪圖功能的部分放在module Graphics中,把數(shù)值計(jì)算的部分放在module Numerical中。Visual Fortran中所提供的一些擴(kuò)充函數(shù)庫就用這個(gè)方法來歸類,像是數(shù)值函數(shù)庫IMSL就放在module IMSL,3D繪圖程序庫OpenGL的函數(shù)就放在module OpengGL中。使用它們之前都要先use IMSL ,use OpenGL。第四部分:FORTRAN的文件操作1 記錄結(jié)構(gòu)(什么是記錄結(jié)構(gòu))一個(gè)數(shù)據(jù)文件在磁盤上
17、的存放格式確定了文件的記錄結(jié)構(gòu)。例如,在DOS或windows下用現(xiàn)有的編輯器建立一個(gè)文件S.DAT,其數(shù)據(jù)存放方式如下:1,2,3,4,56,7,8,9,1011,12,13,14,1516,17,18,19,20文件中存有4行數(shù)據(jù),每行5個(gè)數(shù)據(jù)。在建立這些數(shù)據(jù)時(shí),當(dāng)每行最后一個(gè)數(shù)據(jù)輸完后,打入了一個(gè)回車或換行標(biāo)記(當(dāng)然這是不可見標(biāo)記)。以上文件有4行,每行末尾都有一個(gè)標(biāo)記。因此,將每一行稱為一個(gè)記錄??梢赃@樣說,一個(gè)記錄包括多個(gè)數(shù)據(jù),以回車或換行標(biāo)記作為記錄的結(jié)束。這就是記錄的概念。 文件中的記錄多少,每個(gè)記錄的數(shù)據(jù)多少就是這個(gè)文件的記錄方式也稱為記錄結(jié)構(gòu)。由多個(gè)數(shù)據(jù)記錄按一定的結(jié)構(gòu)形式存
18、入磁盤,就組成了文件。2 open語句的使用: OPEN語句的功能是打開一個(gè)文件,其語句的基本格式為:(前后位置可以變化) OPEN(UNIT=number,FILE=filename,STATUS=status,ACCESS=access,)其中, 1. UNIT=numbernumber必須是一個(gè)正整數(shù),用來給后面的文件指定一個(gè)代碼(這樣方便使用write或read等命令在文件上讀寫),它可以使用變量或是常量來賦值。Number值最好避開1、2、5、6。因?yàn)?、6是默認(rèn)的輸出位置,也就是屏幕。1、5則是默認(rèn)的輸入位置,也就是鍵盤。2 FILE=filename這個(gè)字段用來指定所要打開的文件
19、名稱,文件名要符合操作系統(tǒng)規(guī)定。最好不要使用中文名3 FORM=FORMATTED OR UNFORMATTEDFORM字段只有兩個(gè)值可以設(shè)置:FORMATTED 或 UNFORMATTEDFORM=FORMATTED 表示文件使用“文本文件”格式來保存FORM= UNFORMATTED 表示文件使用“二進(jìn)制文件”格式來保存這一欄不給定時(shí),默認(rèn)值為FORMATTED(潘師兄的程序大部分都沒寫這一欄)4 STATUS=NEW或OLD或SCRATCH或UNKNOWNSTATUS=NEW 一個(gè)存在的舊文件,如果文件存在,則打開。否則出現(xiàn)一個(gè)I/O錯(cuò)誤STATUS=OLD 文件決不能存在,否則出現(xiàn)一個(gè)
20、I/O錯(cuò)誤STATUS= SCRATCH 打開一個(gè)暫存文件,暫存文件是臨時(shí)文件,當(dāng)關(guān)閉或終止程序時(shí),文件將被刪除。這時(shí)不需要指定文件名稱,也就是FILE這一欄可以省略,因?yàn)槌绦虮旧頃?huì)自動(dòng)取一個(gè)文件名。STATUS= UNKNOWN 缺省時(shí)的默認(rèn)值, 文件存在則打開,不存在則創(chuàng)建,相當(dāng)于NEW與OLD的綜合利用。5 ACCESS=SEQUENTIAL或DIRECT這個(gè)字段用來設(shè)置文件讀寫的方法ACCESS=SEQUENTIAL 讀寫文件的操作會(huì)以順序的方法來做讀寫,這就是“順序讀取文件”ACCESS= DIRECT 讀寫文件的操作可以任意指定位置,這就是“直接讀取文件”不賦值時(shí),默認(rèn)值為SEQUENTIAL 6 RECL=length7 ERR=LABEL這個(gè)字段用來設(shè)置當(dāng)文件打開發(fā)生錯(cuò)誤時(shí),程序會(huì)跳躍到LABEL所指的行代碼處來繼續(xù)執(zhí)行程序。3 直接讀取文件的操作在FORTRAN語言中,讀取文件的操作可以有“順序讀取”及“直接讀取”兩種方法。所謂的直接訪問文件,即將文件事先分區(qū)成好幾個(gè)同樣大小的小模塊,(即指定記錄號(hào),且在每條記錄中的數(shù)據(jù)還是按順序的),再來進(jìn)行讀寫
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年注冊(cè)會(huì)計(jì)師備考題庫及參考答案(精練)
- 2026年一級(jí)注冊(cè)建筑師之建筑結(jié)構(gòu)考試題庫300道附答案【達(dá)標(biāo)題】
- 2026年一級(jí)注冊(cè)建筑師之建筑經(jīng)濟(jì)、施工與設(shè)計(jì)業(yè)務(wù)管理考試題庫300道附答案(培優(yōu))
- 建工屋面工程驗(yàn)收規(guī)范詳細(xì)解讀
- 公交公司調(diào)度管理與安全操作規(guī)程
- 高校線上教學(xué)平臺(tái)使用調(diào)查報(bào)告
- 傳統(tǒng)制造業(yè)智能升級(jí)案例分析
- 2026年設(shè)備監(jiān)理師之設(shè)備工程監(jiān)理基礎(chǔ)及相關(guān)知識(shí)考試題庫200道含答案【研優(yōu)卷】
- 2026年機(jī)械員之機(jī)械員專業(yè)管理實(shí)務(wù)考試題庫200道及答案【奪冠系列】
- 審計(jì)行業(yè)面臨的新挑戰(zhàn)及創(chuàng)新對(duì)策
- TRICON安全控制系統(tǒng)
- 幼兒園小班音樂歌唱《碰一碰》課件
- 中醫(yī)診療技術(shù)操作規(guī)程
- CJT 340-2016 綠化種植土壤
- 二年級(jí)上冊(cè)口算練習(xí)1000道
- 2023年11月浙江省慈溪技師學(xué)院(慈溪杭州灣中等職業(yè)學(xué)校)公開招聘1名派遣制工作人員筆試歷年高頻考點(diǎn)-難、易錯(cuò)點(diǎn)薈萃附答案帶詳解
- 農(nóng)業(yè)水價(jià)綜合改革
- 23秋國家開放大學(xué)《液壓氣動(dòng)技術(shù)》形考任務(wù)1-3參考答案
- 廣東省通用安裝工程綜合定額(2018)Excel版
- 21ZJ111 變形縫建筑構(gòu)造
- 2023-2024學(xué)年四川省涼山州小學(xué)語文五年級(jí)期末高分試卷詳細(xì)參考答案解析
評(píng)論
0/150
提交評(píng)論