_fortran-第二章fortran基礎(chǔ)知識(shí)_第1頁(yè)
_fortran-第二章fortran基礎(chǔ)知識(shí)_第2頁(yè)
_fortran-第二章fortran基礎(chǔ)知識(shí)_第3頁(yè)
_fortran-第二章fortran基礎(chǔ)知識(shí)_第4頁(yè)
_fortran-第二章fortran基礎(chǔ)知識(shí)_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、本章學(xué)習(xí)目標(biāo): 了解Fortran 中的合法字符 了解Fortran 語(yǔ)句和Fortran 程序基本結(jié)構(gòu) 了解可執(zhí)行和不可執(zhí)行語(yǔ)句之間的區(qū)別 了解常量與變量的區(qū)別 理解INTEGER、REAL 和CHARACTER 數(shù)據(jù)類型的區(qū)別 掌握默認(rèn)和顯式類型說明的不同,理解為什么總該使用顯式類型說明 了解Fortran 賦值語(yǔ)句的結(jié)構(gòu) 掌握整數(shù)運(yùn)算和實(shí)數(shù)運(yùn)算的區(qū)別 了解Fortran 操作符號(hào)的運(yùn)算級(jí)別 掌握Fortran 怎樣計(jì)算混合運(yùn)算表達(dá)式 掌握什么是內(nèi)置函數(shù)和怎樣使用它們 了解怎樣使用表控輸入和輸出語(yǔ)句 了解為什么使用IMPLICIT NONE 語(yǔ)句很重要2.1 Fortran 字符集 For

2、tran 95字符集由86 個(gè)符號(hào)組成,F(xiàn)ortran 2003字符集由97 個(gè)符號(hào)組成:Fortran 不區(qū)分字母大小寫。2.3 Fortran 語(yǔ)句結(jié)構(gòu)語(yǔ)句有兩種基本類型:可執(zhí)行語(yǔ)句( executable) 和不可執(zhí)行語(yǔ)句( unexecutable) 。Fortran 語(yǔ)句可以放在一行的任意位置,每行可以長(zhǎng)達(dá)132 個(gè)字符。如果語(yǔ)句太長(zhǎng),不適合放在一行,那么可以用&符號(hào)標(biāo)記在下一行繼續(xù)這行的書寫。語(yǔ)句標(biāo)號(hào)可以是1 99999 之間的任何一個(gè)數(shù)字。如果使用語(yǔ)句標(biāo)號(hào),它在程序單元中必須是唯一的。感嘆號(hào)后面跟隨的字符是注釋( comment) , Fortran 編譯器不編譯注釋。2

3、.4 Fortran 程序結(jié)構(gòu)聲明部分終止部分執(zhí)行部分聲明部分由不可執(zhí)行語(yǔ)句組成,位于程序的開頭,定義程序名和程序引用的數(shù)據(jù)以及變量的類型。Fortran 95 的程序名可長(zhǎng)達(dá)31 個(gè)字符,可以是宇母、數(shù)字和下劃線( _ )任意組合,但是第一個(gè)字符必須是字母。終止部分由STOP 和END PROGRAM 語(yǔ)句組成。STOP 語(yǔ)句告訴計(jì)算機(jī)停止運(yùn)行。END PROGRAM 語(yǔ)句告訴編譯器程序中不再有語(yǔ)句需要編譯,并自動(dòng)地產(chǎn)生一條STOP 語(yǔ)句,因此,前面的 STOP 語(yǔ)句可省略。2.5 常數(shù)與變量Fortran 常數(shù)(constant ,也稱為常量)是數(shù)據(jù)對(duì)象,它定義在程序執(zhí)行之前,且在程序執(zhí)行

4、期間取值不可改變。Fortran 變量( variable) 是一個(gè)數(shù)據(jù)對(duì)象,它的值在程序執(zhí)行期間可以改變。程序單元中的每個(gè)Fortran 變量有唯一的名字,變量名是內(nèi)存中特定位置的標(biāo)號(hào),該標(biāo)號(hào)方便人類記憶和使用。Fortran 95 中的變量名可以長(zhǎng)達(dá)31 個(gè)字符,由字母、數(shù)字和下劃線字符的任意組合構(gòu)成,但是名字的第一個(gè)字符必須是字母。編程時(shí),給變量取有意義的名字Fortran 有5 個(gè)自帶或內(nèi)置的常數(shù)和變量數(shù)據(jù)類型,其中三個(gè)對(duì)數(shù)字有效(INTEGRE, REAL 和COMPLEX) ,一個(gè)是邏輯的(LOGICAL) ,還有一個(gè)是字符串組成的(CHARACTER)除內(nèi)置數(shù)據(jù)類型以外, For

5、tran 允許程序員定義派生數(shù)據(jù)類型(derived data type)整型數(shù)據(jù)類型的常數(shù)和變量常用計(jì)算機(jī)中的單個(gè)字節(jié)存儲(chǔ)。實(shí)型常數(shù)和變量幾乎所有的計(jì)算機(jī)都支持符合IEEE 標(biāo)準(zhǔn)754 的浮點(diǎn)數(shù)。PC 編譯器既支持32 位實(shí)數(shù)也支持64 位實(shí)數(shù).2.5.3 字符常數(shù)和變量單引號(hào)或雙引號(hào)之間的字符被稱為字符文本( character context)。字符文本可以包含計(jì)算機(jī)上的任何字符,不僅僅是86 (97)個(gè)Fortran 字符集。如果字符串中包含 ,則可以用兩個(gè)連續(xù)的單引號(hào)來表示。如: Toms girl friend“Toms girl friend”2.5.4 默認(rèn)和顯式變量類型有兩種

6、方法可以定義變量的類型:默認(rèn)式和顯式 。如果在程序中沒有明確指定變量類型,那么就是默認(rèn)式定義變量類型:任何以字母i,j,k,l,m,n 開頭的變量名假定為整型,其他字母開頭的變量名則假定為實(shí)型。這一類型默認(rèn)習(xí)慣從1954 年FORTRAN I 就開始啟用。注意,默認(rèn)情況下沒有變量的類型為CHARACTER,因?yàn)樵贔ORTRAN 1 中不存在該數(shù)據(jù)類型!變量的類型也可以在程序開頭的聲明部分顯式地定義,如INTEHER : varl , var2 , var3,REAL : varl , var2 , var3,CHARACTER (len=) : varl , var2 , var3 , .常數(shù)

7、命名可以在類型聲明語(yǔ)句中用PARAMETER 屬性來創(chuàng)建:type , PARAMETER name=value , name2= value2 , .type 是常數(shù)的類型(整型、實(shí)型、邏輯型或字符型)CHARACTER, PARAMETER : ERROR MESSAGE= Unknown error!2.6 賦值語(yǔ)句和算術(shù)運(yùn)算variable name = expressioni=i+1Fortran 中有下列標(biāo)準(zhǔn)算術(shù)操作符:+ 加法: a+b- 減法: a-b* 乘法: a*b/ 除法 a/b* 指數(shù)運(yùn)算: a*b注意:兩個(gè)操作符不可以連續(xù)出現(xiàn)。a*+b乘法符號(hào)不能省略。 a(x+y)

8、圓括號(hào)把一組數(shù)據(jù)項(xiàng)按要求組合在一起。2.6.1 整型運(yùn)算整型運(yùn)算的結(jié)果始終是整型。如3/4=0, 4/4=1, 5/4=1, 9/4=2要特別注意,以免出現(xiàn)不可預(yù)知的錯(cuò)誤結(jié)果。2.6.2 實(shí)數(shù)運(yùn)算實(shí)數(shù)運(yùn)算總是產(chǎn)生實(shí)型結(jié)果,如:3.0/3.=0.75, 4./4.0=1.0, 1.0/3.0=0.333333,3.0/2=1.5注意,在一些計(jì)算機(jī)上,由于字長(zhǎng)所限,會(huì)出現(xiàn)3.0*(1.0/3.0)1.0但是2.0*(1.0/ 2.0)1.02.6.4 混合運(yùn)算1 1/ 41.01/ 41 1.0/ 411.01.25Fortran 95/2003 含有五種轉(zhuǎn)換函數(shù),使得可以顯式地控制整數(shù)和實(shí)數(shù)之間

9、的轉(zhuǎn)換例如,對(duì)于實(shí)數(shù)2.9995 和-2.9995 :2.6.5 混合運(yùn)算和表達(dá)式例如,result=y*x當(dāng)x為整數(shù)時(shí)表示x個(gè)y相乘,當(dāng)x為實(shí)數(shù)時(shí),表示exp( *ln )xy2.7 內(nèi)置函數(shù)內(nèi)置函數(shù)(intrinsic function,或自帶函數(shù)):許多最通用的函數(shù)直接內(nèi)置在Fortran 語(yǔ)言中。外部函數(shù)(external function) 或內(nèi)部函數(shù)(internal function):用戶定義的函數(shù)。Fortran 函數(shù)的輸入?yún)?shù)( argument) ,出現(xiàn)在函數(shù)名后緊跟隨的圓括號(hào)中,函數(shù)的輸出是單個(gè)數(shù)據(jù)、邏輯值或字符串。一些內(nèi)置函數(shù)2.8 表控(list-directed)

10、輸入和輸出語(yǔ)句輸入語(yǔ)句( input statement) 從輸入設(shè)備讀入一個(gè)或多個(gè)數(shù)值,并將其存儲(chǔ)到指定的變量中。輸入設(shè)備可以是交互環(huán)境中的鍵盤,或批處理環(huán)境中的磁盤文件。輸出語(yǔ)句( output statement) 寫一個(gè)或多個(gè)數(shù)值到輸出設(shè)備。輸出設(shè)備可以是交互環(huán)境的顯示屏幕,或批處理環(huán)境的輸出設(shè)備。PROGRAM input exampleINTEGER ; i , jREAL aCHARACTER(len=12) charsREAD (*,*) i , j , a , charsEND PROGRAM input example1, 2, 3., this one.1, 2,. th

11、is one. ,3.程序的每條READ 語(yǔ)句從輸入數(shù)據(jù)的一個(gè)新行開始讀取。假如前一輸入行的數(shù)據(jù)有遺留,那么這些數(shù)據(jù)會(huì)被拋棄。PROGRAM input example 2INTEGER:i, j, k,lREAD (*,*)i, jREAD (*,*) k,lEND PROGRAM input example 2輸入數(shù)據(jù)1,2,3,45,6,7,8表控輸出(list-directed output )意味著輸出列表中的值類型決定輸出數(shù)據(jù)的格式,如:Program output_exampleInteger:ixReal : thetaix=1Test=.true.Theta= 3.14159

12、3WRITE (*,*) ix= , ixWRITE (*,*) THETA= ,thetaWRITE (*,*) COS(THETA)= , cos(theta) WRITE (*,*) REAL(ix) , NINT(theta)END PROGRAM output_example輸出結(jié)果為:ix= 1THETA= 3.141593COS(THETA)= -1.0000001.000000 3表控輸出語(yǔ)句的輸出不是很漂亮。打印出的值沒有按整齊的列輸出,不能控制實(shí)數(shù)顯示數(shù)據(jù)的格式。2.9 變量初始化在Fortran 95/2003 中沒有給未初始化的變量定義值。一些編譯器自動(dòng)地設(shè)置沒有初始化

13、變量為0 ,而有些編譯器設(shè)置它們?yōu)槿我庵?。一些舊版的Fortran 編譯器讓未初始化的變量保留它所在程序單元前面己經(jīng)存在的數(shù)據(jù)值。沒有初始化的變量可能帶來嚴(yán)重問題!有三種方法初始化變量: 賦值語(yǔ)句、READ 語(yǔ)句和類型聲明語(yǔ)句中的初始化。2.10 IMPLICIT NONE 語(yǔ)句IMPLICIT NONE 語(yǔ)句出現(xiàn)在類型聲明語(yǔ)句之前。IMPLICIT NONE 語(yǔ)句使默認(rèn)類型功能喪失。當(dāng)程序含有IMPLICIT NONE 語(yǔ)句,沒有顯式類型聲明語(yǔ)的變量被認(rèn)為是錯(cuò)的。例1:設(shè)計(jì)一個(gè)Fortran 程序,讀取輸入的華氏溫度,轉(zhuǎn)換為開氏溫度。2.11 程序舉例5()()32.0273.159ooTC

14、TF例2:編寫程序,讀取碳14 在樣本中的剩余百分比,計(jì)算樣本的年齡,打印出計(jì)算結(jié)果,并給出計(jì)量單位。01logdecayQtQ 其中,Q為當(dāng)前放射性材料量,Q0為初始初始量,碳14的衰減常數(shù)為0.00012097/年。2.12 調(diào)試Fortran 程序在調(diào)試Fortran 程序時(shí)會(huì)遇到三種錯(cuò)誤:1 語(yǔ)法錯(cuò)誤(syntax error) 。如拼寫錯(cuò)或標(biāo)點(diǎn)符號(hào)錯(cuò),在編譯時(shí)被編譯器檢測(cè)出來。2 運(yùn)行錯(cuò)誤(run-time error) ,當(dāng)程序執(zhí)行時(shí)企圖做非法運(yùn)算操作,則發(fā)生運(yùn)行錯(cuò)誤(例如,除以0) 。這些錯(cuò)誤導(dǎo)致程序執(zhí)行時(shí)異常中斷。3 邏輯錯(cuò)誤(logical error ),程序能夠正常編譯和

15、運(yùn)行,但是結(jié)果是錯(cuò)誤的。2.13.1 良好編程習(xí)慣l.盡可能給變量取有意義的名字。以便一看就可以理解變量的作用。如day, month, money 。2. 在程序中始終用IMPLICIT NONE 語(yǔ)旬,以便編譯時(shí),編譯器發(fā)現(xiàn)打字錯(cuò)誤。3. 在編寫的程序中明確地注釋程序的每個(gè)變量,要注意每個(gè)物理量相應(yīng)的計(jì)量單位。4. 常數(shù)的取值要始終一致。例如,不要在程序某點(diǎn)取值3.14. 而在另二個(gè)地方又取值3.141593 。為保證一致性,要用常數(shù),需要的時(shí)候就引用常數(shù)名即可。5. 保證給所有常數(shù)指定所用機(jī)器支持的相應(yīng)精度。例如, 取值3.141 593. 而不是3.14 。6. 實(shí)際連續(xù)變化的量不該用整型數(shù)據(jù)來計(jì)算,如距離、時(shí)間等。僅對(duì)固定值使用整型數(shù),如

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論