




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、FORTRAN 心得第一部分:一些小心得1 Fortran不區(qū)分大小寫2 Fortran有5種基本數(shù)據(jù)類型,integer,real, character, logical, complex3 fortran fixed format格式中的變量賦初值一般用DATA,因為它不能用: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)要麻煩一點,它不使用END DO來結(jié)束循環(huán),而是使用
2、行號來結(jié)束循環(huán),程序代碼要在DO的后面寫清楚這個循環(huán)到哪一行程序代碼結(jié)束。Fortran 77中,經(jīng)常會使用CONTINUE這個命令來結(jié)束循環(huán)。因為CONTINUE這個命令沒有實際的用途,剛好可以拿來做封裝使用。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è)計循環(huán)程序,但不推薦使用GOTO語句7 fortran有等價聲明:即用equivalence(a,b),這樣使得a,b使用同一塊內(nèi)存,這樣可以節(jié)省內(nèi)存,有時可精簡代碼。8 fortran77
3、中只能用單引號。(還有疑問,因為fixed format能用雙引號)9 邏輯運算符 = /= = = !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ù)組元素之間要用逗號分隔,而不能像matlab一樣既可以用逗號也可以用空格,fortran的數(shù)組元素之間不能用空格。11 數(shù)組的聲明: Fortran 77中數(shù)組的聲明,必須使用DIMENSION
4、命令I(lǐng)nteger a; !先聲明a是整型Dimension a(10) !再聲明a是大小為10的數(shù)組Fortran 95中可以用簡單的方法:Integer a(10) !最簡單的方法Integer,dimension(10): a !另一種方法12 數(shù)組的賦值: Fortran 77中數(shù)組的聲明,可以使用DATA命令 或隱含式循環(huán)來賦初值;Fortran 95中可以直接設(shè)置初值;如:integer :a(5)=(/1,2,3,4,5/);此時,括號和除號之間不能有空格;13 與C不同,F(xiàn)ortran數(shù)組索引值默認(rèn)從1開始,而且可以在聲明時改變該規(guī)則,如 integer a(-3:1) !索引
5、值為-3,-2,-1 ,0,113 數(shù)組在內(nèi)存中的存放順序也與C不同(正好相反),如a(2,2)在內(nèi)存中的存放順序為a(1,1),a(2,1),a(1,2),a(2,2); 原則是放低維的元素,再放高維的元素,此規(guī)則稱為column major 矩陣輸出時也是按列輸出。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) FORALL是Fortran95添加的功能,只能用于數(shù)組操作
6、 forall可以嵌套使用,還可以在forall中使用where,但where中不能使用forall15 Fortran中傳遞參數(shù)的原理與c+不同,F(xiàn)ortran中是傳址調(diào)用,就是傳遞時用參數(shù)和子程序接受時用的參數(shù)使用一個地址,盡管命名可以不同。16 調(diào)用自定義函數(shù)前需要做聲明,調(diào)用子程序則不需要。17 Module中有函數(shù)時必須在contains命令之后18 全局變量(有的書上叫無名公用區(qū)、有名公用區(qū))全局變量用來定義一塊共享的內(nèi)存空間; 全局變量不能聲明成常量全局變量不能直接使用data命令賦初值,要在block data模塊中使用data來設(shè)置初值。COMMON語句是說明語句,因此它應(yīng)該
7、出現(xiàn)在相應(yīng)程序單元中的所有可執(zhí)行語句之前。 取用全局變量時,是根據(jù)它們的相對位置關(guān)系來作對應(yīng),而不是根據(jù)變量名稱來對應(yīng)。19 傳遞參數(shù)與使用全局變量都可以在不同程序之間共享數(shù)據(jù),那什么時候該使用參數(shù),還有什么時候該使用全局變量呢? 簡單地說,當(dāng)需要共享的變量不多,而且只有少數(shù)幾個程序需要使用這些數(shù)據(jù)時,那就使用參數(shù),需要共享大筆數(shù)據(jù),或是有很多不同程序都需要使用這些數(shù)據(jù)時,就使用全局變量。20 INCLUDE命令1 INCLUDE命令可以寫在任何地方,它只是單純地用來插入一個文件的內(nèi)容。2 有時候也會應(yīng)用在聲明全局變量,先把聲明全局變量的程序代碼編寫在某個文件中,需要使用全局變量的函數(shù)再去IN
8、CLUDE這個文件,這樣可以減少程序代碼。第二部分:格式化輸入輸出1 表控輸入輸出(即表控格式輸入輸出)1 注意點:不同計算機系統(tǒng)對表控格式輸出的規(guī)定不同,例如對一個整型數(shù),有的系統(tǒng)規(guī)定輸出占13列,有的系統(tǒng)規(guī)定輸出占10列,也有的系統(tǒng)不規(guī)定固定的列數(shù)而按照數(shù)據(jù)的實際長度輸出,再用一個空格作分隔符。2 如果在輸入數(shù)據(jù)行中出現(xiàn)”/”號,表示對READ語句的輸入到此結(jié)束,未被賦值的變量將不予賦值。2 FORMAT 語句語句格式: 標(biāo)號 FORMAT(格式描述符)例如: write(*,100) i,j,k;100 FORMAT(1X,I3,I5,I7),其中,1X是換行控制符(走紙控制),I3表示
9、i變量的值輸出占3列,I5表示j變量的值輸出占5列1 格式描述符主要介紹:I、F、E、X、縱向走紙、(撇號)、r(重復(fù)系數(shù))、/(斜杠)等(1) X描述符 作用: 用于輸出空格一般形式: nX(2) I描述符 作用: 用于整型數(shù)據(jù)的輸出一般形式: Iw 或 Iw.n(3) F描述符作用:用于實數(shù)的小數(shù)形式輸出一般形式: Fw.d(4) E描述符作用:用于實數(shù)的指數(shù)形式輸出一般形式:Ew.d其中:E實數(shù)的指數(shù)形式輸出; w字段寬度; d數(shù)字部分的小數(shù)位數(shù)。 數(shù)值部分1 (5) A描述符作用:用于字符型數(shù)據(jù)的格式描述一般形式: Aw或A ,其中w是字段寬度。(6) 號描述符作用:用于輸出字符常量,
10、即把撇號內(nèi)的字符串原樣照打例如:write(*,100) i,j 100 format(1x,i=,i3, j=,i4)(7) H描述符作用:它的作用與撇號描述符類似,也可以輸出字符型常量一般形式: nH 建議:建議最好不要使用H描述符,而是使用撇號描述符,避免錯誤例如: I=123 WTRITE(*,100),I 100 FORMAT(1X,2HI=,I3);(8) 斜杠描述符 反斜杠描述符和美元$描述符的作用相同,都是在輸出一個記錄行后取消回車符,常用于輸出字符串與輸入數(shù)據(jù)顯示于屏幕同一行的情形。例如:write(*,(please enter your name,$); Read(*,*
11、) My_age(9) 重復(fù)系數(shù)r在format語句中,如果出現(xiàn)幾個(或幾組)相同的格式編輯符,則可以利用重復(fù)系數(shù)而只寫一個(或一組)編輯符。 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ù)的定義REAL(KIND=8) X, FF(X)=X*2+X+1 2 語句函數(shù)的調(diào)用 語句函數(shù)一旦被定義后,就可以在本程序單元中被調(diào)用。調(diào)用的形式和調(diào)用內(nèi)容函數(shù)形同
12、,即: 語句函數(shù)名(實參)2 說明語句函數(shù)定義語句是非執(zhí)行語句,它應(yīng)該放在所有可執(zhí)行語句之前和所有的說明語句之后。語句函數(shù)只能在本程序單元中被使用。2 函數(shù)子程序1 定義的一般形式:類型說明符 FUNCTION 函數(shù)名(形參表)函數(shù)主體函數(shù)名=表達式;END或者: FUNCTION 函數(shù)名(形參表) 函數(shù)主體函數(shù)名=表達式;END3 子例行程序子例行程序定義的一般形式: SUBROUTINE 函數(shù)名(形參表) 。end子例行程序的調(diào)用: CALL 子程序名(實參)4 函數(shù)子程序與子例行程序的區(qū)別1 子例行程序的名稱不用來返回函數(shù)的處理結(jié)果,因此是沒有類型的。所以不能定義子例行程序的類型。2 子
13、例行程序必須以SUBROUTINE語句開頭,以END語句結(jié)束。3 能用函數(shù)子程序?qū)崿F(xiàn)的功能,都能用子例行程序來實現(xiàn),反之亦然。因此在程序設(shè)計時,要對具體問題選擇哪種方式。4 由于不能給子例行程序名賦值,所以在將函數(shù)子程序轉(zhuǎn)換為子例行程序時,應(yīng)該增加一個變量用來帶回在函數(shù)子程序中由函數(shù)名帶出的子例行程序處理結(jié)果。5 子例行程序的調(diào)用需要專門的CALL語句。5 數(shù)據(jù)塊子程序(BLOCK DATA)1 數(shù)據(jù)塊子程序是非執(zhí)行程序單元,因而在其中不能出現(xiàn)任何可執(zhí)行語句,也不能被別的程序調(diào)用。2 它是專門用來給有名公用區(qū)中的項目賦初值的子程序。注意:COMMON變量不能直接在子程序或主程序中使用DATA命
14、令來設(shè)置初值,要在BLOCK DATA程序模塊中使用DATA命令來設(shè)置初值。3 數(shù)據(jù)塊子程序是一個完整的程序單元。它由BLOCK DATA語句開始,END語句結(jié)束。4 BLOCK DATA只能用來設(shè)置全局變量的初值,而且在主程序執(zhí)行前,全局變量的初值內(nèi)容就會設(shè)置完畢,事實上這一段程序會在主程序執(zhí)行前就會生效;5 全局變量不能聲明成常量,所以BLOCK DATA中不能出現(xiàn)PARAMETER。6 MODULE1 MODULE可以用來封裝程序模塊,通常是用來把程序中具備相關(guān)功能的函數(shù)及變量封裝在一起。例如需要使用全局變量時,可以把全局變量都聲明在MODULE中,需要使用這些變量的函數(shù)只要USE這個M
15、ODULE就可以使用它們。2 MODULE中的變量如果不是聲明成全局變量,這些變量被函數(shù)使用時,只會是函數(shù)中的局部變量。3 MODULE中還可以容納函數(shù),語法如下:Module module_name !先寫聲明相關(guān)程序代碼 contains !從contains后開始寫作函數(shù) subroutine sub_name end subroutine sub_name !subroutine不能省略 function function_name . end function function_name !function不能省略 end這個做法比較符合模塊化概念,編寫大程序時,可以把程序中屬于繪圖
16、功能的部分放在module Graphics中,把數(shù)值計算的部分放在module Numerical中。Visual Fortran中所提供的一些擴充函數(shù)庫就用這個方法來歸類,像是數(shù)值函數(shù)庫IMSL就放在module IMSL,3D繪圖程序庫OpenGL的函數(shù)就放在module OpengGL中。使用它們之前都要先use IMSL ,use OpenGL。第四部分:FORTRAN的文件操作1 記錄結(jié)構(gòu)(什么是記錄結(jié)構(gòu))一個數(shù)據(jù)文件在磁盤上的存放格式確定了文件的記錄結(jié)構(gòu)。例如,在DOS或windows下用現(xiàn)有的編輯器建立一個文件S.DAT,其數(shù)據(jù)存放方式如下:1,2,3,4,56,7,8,9,1
17、011,12,13,14,1516,17,18,19,20文件中存有4行數(shù)據(jù),每行5個數(shù)據(jù)。在建立這些數(shù)據(jù)時,當(dāng)每行最后一個數(shù)據(jù)輸完后,打入了一個回車或換行標(biāo)記(當(dāng)然這是不可見標(biāo)記)。以上文件有4行,每行末尾都有一個標(biāo)記。因此,將每一行稱為一個記錄。可以這樣說,一個記錄包括多個數(shù)據(jù),以回車或換行標(biāo)記作為記錄的結(jié)束。這就是記錄的概念。 文件中的記錄多少,每個記錄的數(shù)據(jù)多少就是這個文件的記錄方式也稱為記錄結(jié)構(gòu)。由多個數(shù)據(jù)記錄按一定的結(jié)構(gòu)形式存入磁盤,就組成了文件。2 open語句的使用: OPEN語句的功能是打開一個文件,其語句的基本格式為:(前后位置可以變化) OPEN(UNIT=number,
18、FILE=filename,STATUS=status,ACCESS=access,)其中, 1. UNIT=numbernumber必須是一個正整數(shù),用來給后面的文件指定一個代碼(這樣方便使用write或read等命令在文件上讀寫),它可以使用變量或是常量來賦值。Number值最好避開1、2、5、6。因為2、6是默認(rèn)的輸出位置,也就是屏幕。1、5則是默認(rèn)的輸入位置,也就是鍵盤。2 FILE=filename這個字段用來指定所要打開的文件名稱,文件名要符合操作系統(tǒng)規(guī)定。最好不要使用中文名3 FORM=FORMATTED OR UNFORMATTEDFORM字段只有兩個值可以設(shè)置:FORMATT
19、ED 或 UNFORMATTEDFORM=FORMATTED 表示文件使用“文本文件”格式來保存FORM= UNFORMATTED 表示文件使用“二進制文件”格式來保存這一欄不給定時,默認(rèn)值為FORMATTED(潘師兄的程序大部分都沒寫這一欄)4 STATUS=NEW或OLD或SCRATCH或UNKNOWNSTATUS=NEW 一個存在的舊文件,如果文件存在,則打開。否則出現(xiàn)一個I/O錯誤STATUS=OLD 文件決不能存在,否則出現(xiàn)一個I/O錯誤STATUS= SCRATCH 打開一個暫存文件,暫存文件是臨時文件,當(dāng)關(guān)閉或終止程序時,文件將被刪除。這時不需要指定文件名稱,也就是FILE這一欄
20、可以省略,因為程序本身會自動取一個文件名。STATUS= UNKNOWN 缺省時的默認(rèn)值, 文件存在則打開,不存在則創(chuàng)建,相當(dāng)于NEW與OLD的綜合利用。5 ACCESS=SEQUENTIAL或DIRECT這個字段用來設(shè)置文件讀寫的方法ACCESS=SEQUENTIAL 讀寫文件的操作會以順序的方法來做讀寫,這就是“順序讀取文件”ACCESS= DIRECT 讀寫文件的操作可以任意指定位置,這就是“直接讀取文件”不賦值時,默認(rèn)值為SEQUENTIAL 6 RECL=length7 ERR=LABEL這個字段用來設(shè)置當(dāng)文件打開發(fā)生錯誤時,程序會跳躍到LABEL所指的行代碼處來繼續(xù)執(zhí)行程序。3 直接讀取文件的操作在FORTRAN語言中,讀取文件的操作可以有“順序讀取”及“直接讀取”兩種方法。所謂的直接訪問文件,即將文件事先分區(qū)成好幾個同樣大小的小模塊,(即指定記錄號,且在每條記錄中的數(shù)據(jù)還是按順序的),再來進行讀寫
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年考大連銀行面試題及答案
- 鋼架廠房吊頂施工方案
- 燈罩的檢測標(biāo)準(zhǔn)
- 4個月嬰幼兒體重身高標(biāo)準(zhǔn)
- 基坑鋼管支撐施工方案
- 2025年硅湖職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫1套
- 2025年江西司法警官職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫審定版
- 陜西省榆林市2025屆高三下學(xué)期第三次模擬考試生物試題(原卷版+解析版)
- 三農(nóng)村電商打造區(qū)域特色品牌方案
- 三農(nóng)村居民耕地質(zhì)量保護方案
- GB/T 41021-2021法庭科學(xué)DNA鑒定文書內(nèi)容及格式
- 2023年陜西高職單招考試語文真題
- 石油焦生產(chǎn)工藝及設(shè)備解讀課件
- 肺炎-疑難病例討論課件
- 2023全國高中化學(xué)奧林匹克競賽預(yù)賽試題及答案
- 音樂劇悲慘世界歌詞
- 復(fù)合材料鋪層設(shè)計說明
- 戴德梁行物業(yè)培訓(xùn)ppt課件
- GB∕T 16422.3-2022 塑料 實驗室光源暴露試驗方法 第3部分:熒光紫外燈
- 煤礦防治水中長期規(guī)劃2017—2019
- 2022年鄉(xiāng)鎮(zhèn)(街道)執(zhí)法人員資格考試題庫(含答案)
評論
0/150
提交評論