notebookoffortran解析_第1頁
notebookoffortran解析_第2頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1、文件名的擴(kuò)展名:固定格式:.for或.f fixed.for自由格式:.f90free.f902、程序單位:主程序(PROGRAM)輔程序:可以是函數(shù)輔程序(FUNCTION和子程序輔 程序(SUBROUTINE)塊數(shù)據(jù)(BLOCK DATA:)用來對有名公用塊的數(shù)據(jù)對 象規(guī)定初始值用于定義全局常數(shù)和進(jìn)行全局初始化。 內(nèi)部過程:在主程序中定義的內(nèi)部過程必須跟在CONTAINS語句之后,主程序是它的內(nèi)部程序的宿主。模塊(MODULE):在主程序中通過USE語句與之相聯(lián)系,模塊 用于組裝若干功能(如:過程,類型定義,語義擴(kuò)展等)為一 個(gè)集團(tuán)。3、程序單位=單位起始語句+程序體+單位結(jié)束語句。程

2、序體=說明部分+執(zhí)行部分。4、整個(gè)程序中只能有一個(gè)PROGRAM一個(gè)BLOCK DATA可 以有多個(gè)各自命名的FUNCTION和SUBROUTINE程序。5、變量名和程序名的命名規(guī)則:F77中:變量名和程序名等使用的英文名最長是由6個(gè)字符(包含英 文字母A-Z、數(shù)字0-9構(gòu)成,且第一個(gè)字符必須是 字母。其英文名的有效使用范圍原則上限于一個(gè)程序單位之 內(nèi)(內(nèi)部過程除外) 。F90中:變量名和程序名等使用的英文名最長是由31個(gè)字符(包含英 文字母A-Z、數(shù)字0-9構(gòu)成和下劃線“一”)且第一 個(gè)字符必須是字母。 其英文名的有效使用范圍原則上限于 一個(gè)程序單位之內(nèi)(內(nèi)部過程除外) 。6、fortran

3、中的標(biāo)號(hào)和標(biāo)簽:(1)標(biāo)號(hào):1-5位的十進(jìn)制數(shù)。且至少一位不為零, 前導(dǎo)零不起作用。f90中不可以對空語句加上標(biāo)號(hào)語句。(2)標(biāo)簽:英文名,后面接冒號(hào)(F90)(3)不能使用整型變量來指定轉(zhuǎn)向語句的標(biāo)號(hào)。如下 是錯(cuò)誤的。n = 10GOTO n(4)例:(F90)DO k = 1,100loop2: DOEND DO loop2 !已有標(biāo)簽名時(shí)不能省略標(biāo)簽名。END DO7、在程序中規(guī)定變量的類型可以用以下幾種方法。1隱含約定(“IN規(guī)則”):Fortran規(guī)定,凡以字母I,J,K,L,M,N六個(gè)字母開頭的變量名,如無另外說明則為 整型變量。以其它字母開頭的變量為實(shí)型變量。表示用I到N之間的字

4、母開頭的變量為整型。例如:I,J,IMAX,NUMBE,RLINE,JOB,Kl為整型變量,而A,Bl,COUNT AMOUNTTOTAL BOOF為實(shí)型變量。2類型指定:如果想改變“IN規(guī)則”對變量類型的約束, 可以用類型說明語句專門指定某些變量的類型。Fortran中 有六個(gè)類型說明語句:(INTEGER語句(整型說明語句)(2) REAL語句(實(shí)型說明語句)(3) DOUBLE PRECISION語句(雙精度說明語句)(4) COMPLEX語句(復(fù)型說明語句)(5) LOGICAL語句(邏輯型說明語句)CHARACTER語句(字符型說明語句)IMPLICIT語句(隱含說明語句)指定:可以

5、用IMPLICIT語句將某一字母開頭的全部變量指定為所需的類型,還可以用一個(gè)IMPLICIT語句同時(shí)指定幾種類型。例如:IMPLICIT INTEGER (A,C,T-V)IMPLICIT REAL (I,J)IMPLICIT INTEGER (A,B),REAL(I,K),INTEGER (X-Z)注:(1)以上三種方法中,以類型說明語句最優(yōu)先,IMPLICIT語句次之,“IN規(guī)則”的隱含約定級(jí)別最低。如下程序中IMAX變量為整型,而其它以I、J開頭的變量為實(shí)型:IMPLICIT REAL(I,J)INTEGER IMAX(2)類型說明語句和IMPLICIT語句是非執(zhí)行語句。(3)類型說明只

6、在本程序單位內(nèi)有效。(4) IMPLICIT語句和類型說明語句應(yīng)該出現(xiàn)在本程序單位中 的所有執(zhí)行語句之前,其中IMPLICIT語句又應(yīng)在所有的類 型說明語句之前。8、Fortran語言中表達(dá)式的注意事項(xiàng):(1)由于用“/”號(hào)作為除號(hào),因此在寫除法運(yùn)算式子時(shí)應(yīng)加 上必要的括號(hào)。(2)乘號(hào)不能省略,如 ,必須寫成A*SIN(X),而不能寫成ASIN(X)。(3) Fortran中無大、中、小括號(hào)之分,一律用小括號(hào)。(4)乘方按“先右后左”原則處理。(5)對單項(xiàng)運(yùn)算符(如-A中的符號(hào))相當(dāng)于在它前面有一個(gè)運(yùn) 算量“0”,如:A*2相當(dāng)于0-A*2而非(-A)*2。Fortran算術(shù)表達(dá)式的求值運(yùn)算的

7、優(yōu)先次序?yàn)椋豪ㄌ?hào) 函數(shù)* * / ,即括號(hào)內(nèi)的運(yùn)算級(jí)別最高,加減最低。9、數(shù)值類型的級(jí)別:整型(低)-實(shí)型(高)10、賦值過程中的類型轉(zhuǎn)換:一個(gè)算術(shù)賦值語句中的被賦值的變量(V)和表達(dá)式(e)的類 型可以相同,也可以不相同。F77作如下規(guī)定:(1)如果變量V與表達(dá)式e的類型相同,則直接進(jìn)行賦值。(2)如果類型不同,則應(yīng)先進(jìn)行表達(dá)式的求值,然后將該 表達(dá)式的值轉(zhuǎn)換為被賦值變量的類型。如:I=3.5*2.1表達(dá)式3.5*2.1的值為7.35,實(shí)型。而變量I為整型,因此I的值等于7。又如:T=3*5/7表達(dá)式的值為2,整型。由于T為實(shí)型,故系統(tǒng)先將整數(shù)2轉(zhuǎn)換成實(shí)數(shù)2.0,再賦給變量T,T的值為2.0

8、。(3)當(dāng)賦值號(hào)兩側(cè)的類型不同時(shí),往往會(huì)產(chǎn)生程序設(shè)計(jì)者 事先預(yù)想不到的結(jié)果。所以在編寫程序時(shí),應(yīng)盡可能使賊值 號(hào)兩側(cè)保持同類型。11、關(guān)系表達(dá)式.GT.greater to.GE.greater than or equal to.LT.less to.LE.less than or equal to.EQ.equal to.NE. not equal to11、case表達(dá)式是整型、字符型或邏輯型表達(dá)式,不能是實(shí)型和復(fù)型表達(dá)式。SELECT CAS是入口語句,END SELECT!出口語句。12、主程序名并不是必要的,是可有可無的,但是如果要寫PROGRAM!句的話,就必須是主程序的第一個(gè)語句

9、,而且要 起一個(gè)名字。其形式為:program name(類型說明)13、(F77)類型說明語句應(yīng)該置于程序單位第一個(gè)可執(zhí)行語句之前,類型語句所列變量只在該類型語 句所在的程序單位有效。而且,在一個(gè)程序單位中,一個(gè)名 字用顯式說明其類型不得多于一次。14、(F77)隱式說明:IMPLICIT INTEGER(R-T),REAL(I-N)表示出類型語句中被顯式說明的符號(hào)名外,凡是以R,S,T開 頭的符號(hào)名都是整型的,凡是以I,J,K,L,M,N開頭的符號(hào)名 都是實(shí)型的IMPLICIT語句值適用予其所在的程序單位, 一個(gè)程序單位的 可以包含若干個(gè)IMPLICIT語句,implicit語句必須置于除

10、parameter語句外的所有其他說明語句的前面。無論是顯式 說明還是隱式說明,均為非執(zhí)行語句。關(guān)于PPARAMETER:15、PARAMETE語句用于給常數(shù)一個(gè)符號(hào)名,語句的形式為PARAMETERP=e),女口:PARAMETER(PI=3.1415926)16、PARAMETE語句和賦值語句不同,它是非執(zhí)行語句。在 同一個(gè)程序單位中,一個(gè)常數(shù)符號(hào)名只能定義一次,即在一 個(gè)程序中定義一個(gè)常數(shù)符號(hào)名后不能再改寫它的值。17、PARAMETER句一次可以定義幾個(gè)常數(shù)符號(hào)名,如:parameter(I=300,PI=3.1415926,X=-9.2)(相當(dāng)予C語言中的宏定義)18、符合先定義后使

11、用的原則,常數(shù)符號(hào)名不得用來定義常 數(shù)的另外一部分,如:形成一個(gè)復(fù)常數(shù)的任一部分。常數(shù)符 號(hào)名不能作為語句標(biāo)號(hào),也不能出現(xiàn)在FORMAT語句中代替常數(shù)。關(guān)于輸入語句:19、read*,a,b,c這條語句中的“*”表示使用表控格 式讀入數(shù)據(jù)。對數(shù)組輸入數(shù)據(jù)的時(shí)候按照左對齊原則,不足 的用空格填滿。20、 一下輸入值正確的:read*,i,j,k在鍵盤上輸入:3*2 /這里采用的是r*c的輸入方法,其中c是常數(shù),r為無符號(hào) 非零整數(shù)。相當(dāng)于常數(shù)c連續(xù)出現(xiàn)r次。因此上例中相當(dāng)于 輸入中是連續(xù)的3個(gè)2,即i,j,k分別都被賦值為2.21、read*,i,j,k在鍵盤上輸入:“5.5/” /為終止執(zhí)行符

12、,在“/”出現(xiàn)后,還未被賦值的變量則保持原來的變量值不變。22、一條輸入語句,如過輸入的時(shí)候沒有出現(xiàn)輸入終止符 “/”,則必須等輸入語句變量列表中的所有變量都被賦值 后,這條語句才能執(zhí)行完畢。否則程序?qū)⒃谶@里暫停執(zhí)行。 這時(shí),一條輸入語句便可讀入多組的輸入數(shù)據(jù),知道所有變 量都被賦值為止。如:read*,x,y,x輸入為:32.2/28.9/50.1/Print語句和write語句23、 輸出數(shù)據(jù)的排放格式為右對齊,不足則左端填補(bǔ)空格。24、 每條print語句的輸出總是在新的一行開始, 如果print語句中無輸出數(shù)據(jù),則表示輸出一空行,即print*表示 輸出一個(gè)空行。25、編輯描述符:I型

13、:rIW,整型編輯描述符F型:rFW.d,實(shí)型編輯描述符E型:rWE.d,實(shí)數(shù)的指數(shù)型編輯描述符A型:rAW,字符型編輯描述符X型:nX,空格編輯描述符H型:nHh1h2.hn,文字型編輯描述符, 其中的n表示要輸出的字符寬度,h1h2hn表示要輸出的具體字符,H前的n和其后的字符實(shí)際長度要一直,否則F77以出錯(cuò)對待。說明: r:為非零無符號(hào)整常數(shù),稱為重復(fù)說明,表示一個(gè)描述符連 續(xù)重復(fù)出現(xiàn)的次數(shù)。W非零無符號(hào)整常數(shù),表示字段寬度d:無符號(hào)整常數(shù),表示實(shí)數(shù)中小數(shù)部分的字段寬度write(6,*)其中的6指的是6號(hào)部件。在6號(hào)部件輸出 其后的數(shù)據(jù)。程序中斷:Ctral+C分支結(jié)構(gòu):26、計(jì)算GO

14、TC語句:GOTO(S1,S2),ISi是與計(jì)算GOTO語句在同一程序單位中的可執(zhí)行語句的語句標(biāo)號(hào)。同一個(gè)語句標(biāo)號(hào)可以在同一個(gè)GOTO語句中出現(xiàn)多次。例如:寫程序完成下面的計(jì)算(2x2+ 3x 1 x 2丫=”_3X+ 22 x 3=x + 53 x 4I x 4x 5程序?yàn)椋?0 Read*,xI=int(x)GOTO(20,30,40,50),IGOTO 1020丫=(2*X+3)*XGOTO 6030 U=(X-3)*X+2GOTO 6040 Y=X+5GOTO 6050 Y=X60 PRINT*,丫END28、賦值GOTOg句和語句標(biāo)號(hào)賦值語句(ASSIGN賦值GOTOg句的形式為:G

15、OTO l,(S,S)其中I為整型變量名(注意這里的I為整型變量名,而計(jì)算GOTO句中的I為整型表達(dá)式),S是與GOTOg句在同一個(gè) 程序單位的一個(gè)語句標(biāo)號(hào)。29、 算術(shù)IF語句:if(e)S1,S2,S3S1,S2,S3為語句標(biāo)號(hào)e0時(shí)轉(zhuǎn)向S3語 句30、 邏輯IF語句:If(e)S其中:e為邏輯表達(dá)式,S為語句標(biāo)號(hào)若邏輯表達(dá)式e為真則執(zhí)行S,若為假,則執(zhí)行if語句的下 一條語句。循環(huán)結(jié)構(gòu)31、Loop-wh ile型循環(huán):該類循環(huán)的特點(diǎn)是先判斷后執(zhí)行。Loop-until型循環(huán):該類循環(huán)的特點(diǎn)是先執(zhí)行后判斷。以上兩種循環(huán)結(jié)構(gòu)都可以用IF結(jié)構(gòu)和GOT語句實(shí)現(xiàn),GOTO語句在這兩種結(jié)構(gòu)中的地位

16、很重要,但是要注意GOTO語句的使用,濫用會(huì)使得源程序的可讀性降低。32、數(shù)組的說明:DIMENSION A(5,3),B(-3:3)A是二維數(shù)組,5行,3列。行標(biāo)是從1到5,列標(biāo)是從1到3。B是一維數(shù)組,下標(biāo)的范圍為-3到3,共七個(gè)數(shù)組元素,A(0)是有效的。33、數(shù)組格式說明:Real A(-2:3),N(2,3)等價(jià)于:DIMENSION A(-2:3),N (2,3)REAL N(2,3)32、數(shù)組的存儲(chǔ):如果要將數(shù)組:1 2丁4 5 67 8 9-存入數(shù)組:A(3,3)A(3,3)在計(jì)算機(jī)中的排列是:A(1,1)A(2,1)A(3,1)A(1,2)A(2,2)A(3,2)A(1,3)

17、A(2,3)A(3,3)(是以列優(yōu)先的方式排列的)所以數(shù)據(jù)的輸入順序是:1 4 7,2 5 8,3 6 9 33、數(shù)組的賦值:DIMENSION A(10,20)DATA A/200*0.0/該例中的所有元素都被賦值為0.0DIMENSION X(3,5)DATA X(1,1),X(2,1),X(3,1)/3*1.0/該例中,將數(shù)組的第一列的所有元素都賦值為1.034、DO循環(huán):DO S,I=e1,e2,e3其中:S為一條可執(zhí)行語句的標(biāo)號(hào),該語句一般是循環(huán)體的 最后一條語句。這條語句經(jīng)常是繼續(xù)語句,格式如下:CONTINUEI為以整型,實(shí)型或是雙精度型變量名,稱為DO變量(也稱為循環(huán)控制變量)

18、 ,e1,e2,e3均為整型,實(shí)型或雙精度型的 表達(dá)式。其中:el的值(M1)稱之為初值,即循環(huán)開始時(shí),DO變量所具有的值。e2的值(M2)稱之為終值,即循環(huán)要結(jié)束是DO變量應(yīng)具有的值。e3的值(M3)稱之為步長,即循環(huán)一次DO變量的增值。M3=1的時(shí)候,e3可以省略。(和C語言中的for循環(huán)是相似的) 注意:DO循環(huán)的終止語句不得為無條件GOTO賦值GOTO算術(shù)IF、塊IF、ELESEIF、ELSE ENDIFRETURN STOR END以及DO語句。34、DO WHILE語句:DO S WHILE(e)其中:S為循環(huán)終止語句標(biāo)號(hào)。通常為CONTINUED句。DO WHILE語句的執(zhí)行是這

19、樣的:先判定邏輯表達(dá)式e的值,為真則執(zhí)行循環(huán)體,為假則表示 循環(huán)結(jié)束,跳出循環(huán),執(zhí)行S語句后的語句。35、隱DO循環(huán):dlist,I=e1,e2,e3READ*,(A(I),I=1,3)相當(dāng)于給A(1),A(2),A(3)通過鍵盤輸入數(shù)據(jù)。36、當(dāng)dlist中的變量名和數(shù)組元素同時(shí)出現(xiàn)的時(shí)候,應(yīng)將它們視作每次循環(huán)的一個(gè)整體,如:READ*,(X,A(I),I=1,3)這時(shí)的輸入順序是:X,A(1),X,A(2),X,A(3)關(guān)于過程:37、語句函數(shù):FUN(x,y,z)=e x,y,z代表語句函數(shù)的自變量,稱為語句函數(shù)的虛元。虛元 表只用來指出函數(shù)變元的個(gè)數(shù)、次序和類型。e代表語句函數(shù)所代表的

20、表達(dá)式。例如:ROOT(A,B,C)=(-B+SQRT(B*B-4.0*A*C)/(2.0*A)語句函數(shù)的注意事項(xiàng):1) 語句函數(shù)語句屬于非執(zhí)行語句, 它在程序單位中的為止 必須位于該程序單位中的說明之后, 且位于第一條可執(zhí) 行語句之前。2) 在引用時(shí)虛元和實(shí)元是按照為止一一對應(yīng)結(jié)合的。 因而 實(shí)元的個(gè)數(shù)、類型、次序應(yīng)與虛元對應(yīng)一致。38、 外部函數(shù)的定義是以FUNCTION開始的。外部函數(shù)的引 用和C語言中的函數(shù)引用是一樣的。39、FORTRAN沒有保留字,在適用內(nèi)部函數(shù)的時(shí)候,要用INTRINSIC來加以聲明,INTRINSIC語句的作用是聲明函數(shù) 是內(nèi)部函數(shù)。40、 實(shí)元是外部過程名的時(shí)

21、候,必須在調(diào)用程序中用外部 語句EXTERNA來指明用作實(shí)元的外部函數(shù)名program simpsoncalculatorexternal f1,f2print*,entera,b,n=read(*,*)a,b,ncall simpson(a,b,n,f1,s1) write(*,10)s110 format(1x,s1=,f10.5) call simpson(a,b,n,f2,s2) write(*,20)s220 format(1x,s2=,f10.5) endsubroutine simpson(a,b,n,f,s)h=(b-a)/(2*n)s=f(a)-f(b)do 30 i=1,2*n-1,2x1=a+i*hx2=x1+hs=s+4*f(x1)+2*f(x2)30 continues=s*h/3.0endfunction f1(x) intrinsic sin f1=sin(x)/(1+x) end function f2(x) intrinsiccos,exp f2=cos(x)*exp(x) e

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論