fortran90-知識點整理_第1頁
fortran90-知識點整理_第2頁
fortran90-知識點整理_第3頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Fortran90關(guān)于變量說明的新功能:1在變量說明的同時,可以給變量賦初值。INTEGER:I=5 J=126REAL:X=7.2 Z, W=774.22在說明變量的同時也可說明其種別REAL(KIND=4):X,Y 或 REAL(4):X,Y3在說明變量的同時,還可說明變量的屬性INTEGER PARAMETER:I=5 J=123Ps :PARAMETER 屬性1功能:用一個符號代表一個常量,稱為符號常量常數(shù)2寫法:Real, Parameter : : G=9.8&&說明類型時賦值3位置:位于可執(zhí)行語句之前REAL DIMENSION(1:10):A派生數(shù)據(jù)類型根據(jù)需要

2、而由根本數(shù)據(jù)類型定義新的數(shù)據(jù)類型。在一個派生類型中可包含多個根本類型。女口: TYPE STUDENT (定義開始)CHARACTER(LEN=20):DEPARTMENTCHARACTER(LEN=10):CLASSCHARACTER(LEN=15):NAMEINTEGER:NUMBER 成員定義END TYPE STUDENT定義完畢派生類型變量的定義:TYPE STUDENT :PERSON變量的賦值:PERSON=" COMPUTER,' 92_2",'' LI LIN", 21成員的表示:PERSON%CLASS= 92_2

3、9;PERSON%NAME“LI LIN'主程序其他限制主程序的可執(zhí)行局部不能包含有RETURN語句或者ENTRY語句。程序名對可執(zhí)行程序是全局的,而且不得于該可執(zhí)行程序中的任何其它程序單元名、外部過程名或公用塊名一樣,也不得于主程序的任何局部名一樣。在主程序的作用圍的說明不得包含OPTIONAL語句、INTENT語句、PUBLIC語句或它們的等價屬性,在主程序 SAVE語句不起作用。主程序的任何部過程的定義必須跟在CONTAINS語句之后。子程序子程序是可以完成某一獨立算法或功能的程序單元,但它功能的具體表達要通過主程序或子程序的調(diào)用來實現(xiàn)。按子程序與主程序的位置關(guān)系分為部過程和外部

4、過程。243模塊模塊也是一種在程序單元之外獨立編寫的程序單元。它有獨特的形式,即模塊程序單元沒有可執(zhí)行語句, 除了說明語句外,最多包含部過程。 模塊的主要作用是供其它程序單元 引用。程序單元引用模塊,實際是將模塊的全部語句復(fù)制到本程序單元。因此模塊起共享與 復(fù)制的作用。模塊的引用采用語句:USE模塊1,模塊2,根本語句概述程序的最根本的語句主要有四種:類型說明語句、賦值語句、輸入語句、輸出語句。運用這些根本的語句,就可以編寫一些簡單的程序。在函數(shù) FORTRAN 9(配置的函數(shù)稱為在函數(shù)。在函數(shù)分為三種: 根本函數(shù):SIGN 符號函數(shù)值:|A1|(假設(shè)A2>0)-|A1|(假設(shè) A2&l

5、t;0) SIGN(A1, A2)Eg : SIGN(-3.0 2.0)=3.0SIGN(3.0, -2.0)=-3.0某些函數(shù)參數(shù)只能為實型如:log(2.0) (loG 2 丨錯)轉(zhuǎn)換函數(shù)函數(shù)名含義FORTRANINT(X)實型轉(zhuǎn)換整型、INT(2.3)=2復(fù)型的實部轉(zhuǎn)換整型INT(1.2 , 3.5)=1REAL(X)整型轉(zhuǎn)換實型、REAL(8)=8.0復(fù)型的實部轉(zhuǎn)換實型REAL(1.2 , 3.5)=1.2COMPLEX, Y)將X, Y合成為復(fù)型COMPLEX(2.3 1.5)=(2.3 , 1.5)INT(X,KIND):將X值轉(zhuǎn)換為整型,以 KIND的值作為種別參數(shù)REAL(X,

6、KIND):將X值轉(zhuǎn)換為實型,以 KIND的值作為種別參數(shù)COMPLEX(X,Y,KIND):將X, Y轉(zhuǎn)換為復(fù)型,以 KIND的值作為種別參數(shù)查詢函數(shù)KIND()SELECTED_INT_KIND() SELECTED_REAL_KIND PRECISION。RANGE()不輕易使用整型量除整型量1.0/22.0*(-1)運算對象類型一樣時,運算結(jié)果的類型為同一類型注意:5/2=21/2=0! !運算對象類型不同時,系統(tǒng)一般先轉(zhuǎn)換成一樣類型后再運算 轉(zhuǎn)換規(guī)那么是:較低級的類型轉(zhuǎn)換為較高級的類型數(shù)據(jù)類型隱含的上下次序為由低到高:整型-實型-雙精度-復(fù)型例:8/5+2.0*5/2=6.0逐步轉(zhuǎn)化

7、賦值語句1、類型要求邏輯型、字符型的賦值語句要求“=兩邊類型一樣數(shù)值型賦值,不區(qū)別整型、實型和復(fù)型2、種別方面字符型要求種別一樣其余類型的e、V種別允許不同輸入輸出語句1、I/O的對象 列在I/O表中I/O是相對于存而言的,鍵盤屬于輸入設(shè)備,顯示器屬于輸出設(shè)備,優(yōu)盤、硬盤既是輸入設(shè)備,又是輸出設(shè)備。2、I/O的方向與語句READ U, fI/O表U:設(shè)備(部件)f:格式其中:輸入輸出WRITEREAD語句PRINT語句,只輸出到顯示器WRITE語句,適合任何輸出設(shè)備U部件*某個值:系統(tǒng)約定設(shè)備指定通道號設(shè)備邏輯號、文件號表控格式I/O *:系統(tǒng)約定的格式。f格式根本格式自定格式I/O :按用戶

8、要求的格式組織1/0。帶控制信息表的I/O:I:碰到回車ENTER為一個記錄。0: 行為一個記錄。程序執(zhí)行過程中按表控格式輸入數(shù)據(jù)各數(shù)據(jù)間有分隔符:,或空格類型匹配:整型:帶小數(shù)點只取整數(shù)局部;復(fù)數(shù):實部,虛部;字符:'一串字符:賦值時長度轉(zhuǎn)化或一串字符即可省略。邏輯:以T或F作為第一個字母的字符串點號1個、空格多個在前忽略3輸入的數(shù)據(jù)必須是常數(shù),不能是變量和表達式 如輸入2+1,那么出錯。4輸入數(shù)據(jù)個數(shù):1不得少于變量的個數(shù);2可分行輸入;3多余的數(shù)據(jù)不起作用5空格可以多個,/表示輸入數(shù)據(jù)完畢,后面的數(shù)據(jù)被取消,沒有輸入數(shù)據(jù)的變量值為原值;Read*, A, B, C輸入:2,1/3

9、結(jié)果:A=2B=1C=06、如果幾個連續(xù)變量需要賦同一個值,可以使用重復(fù)因子r,即r*c :r為重復(fù)數(shù)4*0.5,2*3,2*' AB',3* 1.0,-1.0輸入輸出的三種不同的格式:1 表控格式的輸入輸出2 有格式的輸入輸出3 帶控制信息表的輸入輸出整型編輯符:lw.m1 I編輯符控制輸出:功能:用于整型數(shù)據(jù)的輸入輸出格式: lw Iw.m rIww輸入輸出數(shù)據(jù)字段總寬度 m 至少m位數(shù)字 r為重復(fù)系數(shù)例 1 .設(shè) J=10,K=-12, L=12WRITE (*," (13, 15, 17)" )J,K丄 10口 -12口口 123注意:1 .數(shù)字在指

10、定的區(qū)域右端對齊,缺乏w那么左邊補空格。2 負數(shù)的符號也包含在字段寬度3 如果應(yīng)輸出的列數(shù)超過了規(guī)定的字段寬度,那么不輸出有效數(shù)據(jù),4、BN, BZ : Biank interpretationSpecifies in terpretati on of bla nks in nu meric fields空格是否當語句,如read “(BN,2I3)" ,I,J 例2 如果將格式串改為: “13,15.4, 17.5"那么輸出: 10-0012 00123例 3 .如果 L=123456 10-0012 123456! ! Iw.m : m位數(shù),那么按照實際數(shù)輸出實型編輯符

11、1編輯符格式rFw.d將數(shù)據(jù)按小數(shù)形式輸出rEw.d將數(shù)據(jù)按指數(shù)形式輸出rGw.d根據(jù)數(shù)據(jù)大小決定采用E或F格式r重復(fù)系數(shù)w 字段寬度總寬度d小數(shù)局部寬度F編輯符 功能:用于實數(shù)編輯,小數(shù)形式的輸出定點數(shù):單精度實數(shù),當實型數(shù)值小于 0.0負數(shù)時,那么 w>=n+d+2 當實型數(shù)值大于或等于0.0時,那么w>=n+d+1用此來確定w的寬度以w個*填充。0處理僅用于輸入格式4個字節(jié),7個有效數(shù)字1. w包括數(shù)符和小數(shù)點兩位2. 假設(shè)數(shù)據(jù)小于w位,那么左邊補空格3. 輸出值時舍入,而不是截斷4. 如果是科學計數(shù)法那么轉(zhuǎn)換小數(shù)形式字符型編輯AA用來編輯字符型變量,它不關(guān)心該字符串的長短如

12、何。例:CHARATER*5 A,B, CREAD C *,' (A,A,A)'A,B,CWRITE *, ' (A,2X,A,2X,A)'A, B, CEND輸入:AB8 DBASICFORMAT結(jié)果:AB8 D口 BASICS FORMA! ! 2X 表示口X編輯描述符功能1在輸出時產(chǎn)生空格,它的一般形式為:nX關(guān)系表達式與邏輯表達式關(guān)系運算符:>、 >=、 <、<=、=等于卜/=不等于常用.GT、.GE.、.LT、丄E.、.EQ.、.NE.1、 每個關(guān)系表達式中的關(guān)系運算符只準出現(xiàn)1次,運算符兩側(cè)都是表達式;錯例:2<X<

13、;3 丄T.B 或a>b<c2、運算對象:關(guān)系運算符兩邊的運算對象類型應(yīng)相容:錯例:A= =.TRUE. 2< A'復(fù)型:只能進展 =、/=。不能比較大小字符型:可以進展各種關(guān)系運算邏輯運算符5個.NOT. a求反運算,: a與b同時為真,表達式值才為真: a與b有一個為真,表達式值就為真a.EQV.b a與b值相等,表達式值為真a.NEQV.b: a與b值不相等,表達式值為真類型運算符優(yōu)先級括號1算術(shù)運算*2*, /3+,-4關(guān)系運算>,>=,<,<=,=,/=5邏輯運算.NOT.6.AND.7.OR.8.EQV.,.NEQV.9IF語句使用

14、圍:特殊單分支語句寫法:IF條件一條語句例:IF (X>0) PRINT*,X執(zhí)行過程:1、計算條件表達式的值2、 真右邊語句IF的下一個語句3、 假IF的下一個語句 1右邊通常為一條且只一條可執(zhí)行語句。錯例:IF (A<B) T=A;A=B;B=T2不能為以下語句:END、另一個邏輯 IF、塊 IF、ELSIF ENDIF、DO錯例:IFX<2END3常應(yīng)用于簡單的條件賦值或條件轉(zhuǎn)移在循環(huán)結(jié)構(gòu)中4、不管條件真假都執(zhí)行IF結(jié)構(gòu)使用圍:二分支結(jié)構(gòu) 書寫格式:IF條件THEN語句體1 then塊ELSE語句體2 else塊ENDIFIF結(jié)構(gòu)執(zhí)行過程:計算條件的值THEN 塊ELS

15、E塊IF的下一個語句真假IF then標記語句的開始,!塊IF語句!由假設(shè)干語句組成! ELSE語句!由假設(shè)干語句組成! ENDIF語句ENDIF的下一個語句ENDIF的下一個語句ENDIF與之匹配,標記語句塊完畢2條件表達式寫法IF結(jié)構(gòu)的缺省形式: 缺省ELSE塊:IFlexpTHEN語句體1ENDIF缺省THEN塊:IFlexpTHENELSE語句體2ENDIF多分支結(jié)構(gòu)方法1:轉(zhuǎn)化為單分支,邏輯 IF語句并列方法2:逐次二分,轉(zhuǎn)化為塊IF結(jié)構(gòu)嵌套嵌套過多容易出錯,也不易維護,因此應(yīng)盡量減少嵌套的層次; 方法是把條件分細,列成多條ELSEIF語句,ELSEIF結(jié)構(gòu)為:Elseif 結(jié)構(gòu):I

16、FelTHENblocklELSEIF e2thenblock2ELSEIF e3thenblock3ELSEblock nENDIFIF結(jié)構(gòu)的取名IF結(jié)構(gòu)可:無名或有名IF結(jié)構(gòu)的取名與變量的取名方法一樣IF 結(jié)構(gòu)名:IF (e1) THEN塊1ELSEIF (e2) THENF 結(jié)構(gòu)名塊2ELSEIF(en) THENIF 結(jié)構(gòu)名塊nELSE IF吉構(gòu)名塊n+1END IFIF結(jié)構(gòu)名同一 IF結(jié)構(gòu)中的結(jié)構(gòu)名一定要一致!CASE吉構(gòu)使用圍:多分支結(jié)構(gòu)SELECT CASE情況表達式CASE情況選擇器1blockl塊 1CASE情況選擇器2block塊 2CASE情況選擇器nblock nCAS

17、E DEFAULT默認塊END SELECT執(zhí)行過程:1計算情況表達式的值2順序匹配各情況選擇器,執(zhí)行相應(yīng)的block1,再到END Select下一個語句3. 如果均不匹配,那么執(zhí)行默認塊4. 執(zhí)行END Select的下一個語句情況表達式:整型變量、邏輯變量、字符型變量或相應(yīng)的表達式不能是實型或復(fù)型表達式表達式列表情況選擇器:只能是常量,不能為變量,可有多條語句;類型與情況表達式類型應(yīng)一致,尤其字符型時種別參數(shù)必須一致,但長度可以不同;,(逗號)分隔符表示分隔單個值的列表。例:case3, 5,7丨值不能重復(fù):(冒號)分隔符表示值的圍,連續(xù)的值例: case5: 10; case i

18、9;:' n'下界、上界可省略Case default:最多出現(xiàn)一次例4-8輸入一個數(shù),判斷能否被3整除,打印相關(guān)信息 注意輸出的格式為*,'I6,2X,APROGRAM MAINIMPLICIT NONEINTEGER:N,MREAD *,NM=MOD(N,3)SELECT CASE(M)CASE (0)WRITE(*,'(I6,2X,A)')N,"CAN BE DIVDED &EXACTLY BY 3."CASE DEFAULTWRITE(*,'(I6,2X,A)')N,"CAN NOT DIVD

19、ED &EXACTLY BY 3."END SELECTEND PROGRAM循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)的分類:1、循環(huán)次數(shù)2、循環(huán)條件循環(huán)的表示與適用圍:循環(huán)均由Do結(jié)構(gòu)表示,其 Do結(jié)構(gòu)共有三種形式:1 不帶循環(huán)變量的 DO結(jié)構(gòu)2 帶循環(huán)變量的 DO結(jié)構(gòu)3. Do WHILE循環(huán)結(jié)構(gòu)不帶循環(huán)變量的 DO結(jié)構(gòu)一般形式結(jié)構(gòu)名:DO!循環(huán)開始語句循環(huán)體!循環(huán)體ENDDO結(jié)構(gòu)名!循環(huán)完畢語句說明:1、結(jié)構(gòu)名可以省略,多層嵌套時,為使結(jié)構(gòu)清晰才用;2、循環(huán)體可以為0n條語句或結(jié)構(gòu),包含以下語句:重復(fù)語句,循環(huán)變量的變化,循環(huán)控制語句等;3、 DO循環(huán)入口語句,只能從該語句進入循環(huán);4、

20、ENDDO循環(huán)終止語句,可以不經(jīng)過該語句退出循環(huán)使用圍:循環(huán)次數(shù)未知,僅給定了循環(huán)終止條件無循環(huán)變量的 DO結(jié)構(gòu)執(zhí)行過程:進入DO結(jié)構(gòu)后,從DO語句下面第一句執(zhí)行起順次執(zhí)行到END DO前的最后一句,再返上來從DO語句下面第一句執(zhí)行起,重復(fù)執(zhí)行整個DO塊。對于不帶控制變量的 DO結(jié)構(gòu),DO塊中必須有EXIT語句,使它停止循環(huán),退出循環(huán),轉(zhuǎn)向執(zhí) 行END DO下面的語句。EXIT和CYCLE語句EXIT語句循環(huán)出口語句,一般形式為:EXIT作用:停止循環(huán),將控制轉(zhuǎn)移到當前循環(huán)或指定do結(jié)構(gòu)之外。一般用法IF 邏輯表達式EXIT DO結(jié)構(gòu)名CYCLE語句短路語句,一般形式為:CYCLE DO吉構(gòu)名

21、作用:在循環(huán)執(zhí)行到該語句時, 跳過循環(huán)體在它后面的那些語句。再從循環(huán)體的第一條語句開始執(zhí)行。一般用法:IF 邏輯表達式CYCLE DO吉構(gòu)名帶循環(huán)變量的DO結(jié)構(gòu)使用圍:計數(shù)型循環(huán)一一循環(huán)次數(shù)一般形式:結(jié)構(gòu)名:DO 循環(huán)控制變量 V=初值e1,終值e2 ,步長值e3循環(huán)體!重復(fù)執(zhí)行的語句ENDDO DO結(jié)構(gòu)名el、e2、e3可以是正值,也可以是負值,最好是整型。例:DO 1=1,100,2S=S+IENDDO有關(guān)本卷須知:1、e1,e2,e3可為常量、已有值的變量或表達式e3=1時可省略2、v與e1,e2,e3類型不一致,按賦值語句轉(zhuǎn)化。do l=1.5,3.6,1.2do I=1,3,13、語

22、句執(zhí)行次數(shù):do語句:1次負責賦初值和循環(huán)次數(shù)的計算循環(huán)體語句次數(shù):max(i nt(e2-e1+e3)/e3), 0)4、e3不允許為零(可正、可負),否那么程序出錯do I=1.5,6.5,-0.5I 的取值為:?5、循環(huán)變量可不在循環(huán)體出現(xiàn),僅控制循環(huán)次數(shù)。do 1=1,10print*, ' a'En ddo6、 DO循環(huán)變量在循環(huán)體不能賦以新值,但可以引用。即循環(huán)變量在循環(huán)體中不能出現(xiàn)在賦 值號的左邊。例:DO 1=3, 6I=5!錯誤J=I+I ; print *, IENDDO7、 循環(huán)變量在循環(huán)體不能被重新賦值,但在循環(huán)體外可以被重新賦值。兩個并列的DO循 環(huán)可

23、以使用一樣的循環(huán)變量DO 1=1,10,2ENDDOI=20DO I=1,5ENDDO9、在帶循環(huán)變量 DO結(jié)構(gòu)中仍可使用 EXIT和 CYCLE語句。10、 在DO結(jié)構(gòu)中包含的IF結(jié)構(gòu)和CASE結(jié)構(gòu)等必須是完整的結(jié)構(gòu),不允許出現(xiàn)結(jié)構(gòu)的交叉。11、 循環(huán)可以不經(jīng) ENDDO終止,但是不能從循環(huán)體外轉(zhuǎn)入循環(huán)體(GOTO)。12、 給定一個循環(huán),首先要判斷循環(huán)是否一次也不做。如果循環(huán)變量大于終止, 循環(huán)一次也 不做,直接輸出結(jié)果。13、 循環(huán)正常退出時,v的值超過循環(huán)變量的終值;循環(huán)非正常退出時,v保持當前值。DO WHILE 結(jié)構(gòu)DO WHILE結(jié)構(gòu)的一般形式:結(jié)構(gòu)名:DO WHILE邏輯表達式

24、循環(huán)體END DO結(jié)構(gòu)名相當于:DOIF.NOT邏輯表達式EXIT循環(huán)體END DODO結(jié)構(gòu)嵌套DO結(jié)構(gòu)嵌套:一個DO結(jié)構(gòu)循環(huán)體可以包含另一個完整的DO循環(huán)結(jié)構(gòu),這就是DO循環(huán)結(jié)構(gòu)的嵌套3、執(zhí)行到EXIT語句,沒有指明結(jié)構(gòu)名時,轉(zhuǎn)到當前循環(huán)體外;假設(shè)指定了結(jié)構(gòu)名,那么轉(zhuǎn) 出該結(jié)構(gòu)名代表的循環(huán)體外;如:II: DO 1=3,50JJDO J= 2, 1-1IF (MOD(I,J)=0) EXITEND DO JJIF(J>=I) PTINR* IEND DO II隱含DO循環(huán)隱含DO循環(huán)實際上是帶控制變量的DO結(jié)構(gòu)。但簡化成只有 DO結(jié)構(gòu)的第一句,且把 DO關(guān)鍵字隱去。隱含DO循環(huán)的形式為

25、:Iist,v=u1,u2,u3說明:1、左括號相當于 DO,右括號相當于 ENDDO;2、 List可以是一個或多個常量、變量、數(shù)組元素等,甚至可以是另外的隱含DO循環(huán)隱含 DO循環(huán)嵌套不能獨立存在,主要用于輸入輸出語句,常用于數(shù)組的輸入輸出。如:READ *, A(I),I=1,5READ *,A(1),A (2) ,A (3) ,A (4) ,A(5)隱DO、顯DO執(zhí)行過程的區(qū)別1、輸入、輸出格式的區(qū)別:PRINT *, I,1=1, 3PRINT*,1,2,3 輸出一行DO I=1,3PRINT*,1PRINT*PRINT*,2ENDDOPRINT*,3輸出三行幾種常見的隱含DO循環(huán)的

26、形式1按指定步長讀寫。例如PRINT *, J, J=1, 7, 22隱含DO循環(huán)與普通變量混合使用。例如PRINT *,A,B, X(l),1=1,3,C3用于輸出一些特殊符號。例如PRINT *, -', 1=1,804隱含DO循環(huán)可以并列出現(xiàn)。例如print *,(I,I=1,2),(J,J=1,2)程序單兀和過程甚至可以遞歸調(diào)用子程序單元不能獨立存在,只能被主程序單元或被其它子程序單元調(diào)用, 調(diào)用本身子程序又稱過程的分類1、函數(shù)子程序分為:部函數(shù)子程序,外部函數(shù)子程序2、子例行子程序分為:部子例行子程序,外部子例行子程序外部函數(shù)子程序Visual Fortran90 的函數(shù):1

27、、在函數(shù)系統(tǒng)函數(shù)、標準函數(shù)如:sin、cos、sqrt、abs、kind2、Function語句編寫的函數(shù)自定義分為部函數(shù)、外部函數(shù)函數(shù)子程序的編寫方法RECURSIVEFUNCTION 函數(shù)名(虛元表)RESULT結(jié)果名)說明局部 程序體:具體計算END FUNCTION 函數(shù)名女口: FUNCTION FACT(N) RESULT(FACT_RESULT)IMPLICIT NONEINTEGER:N,I,FACT_RESULTFACT_RESULT=1DO I=1,NFACT_RESULT=FACT_RESULT*IENDDOEND FUNCTION FACTPROGRAM MAININT

28、EGERFACTSUM=0,lDO I=1,5SUM=SUM+FACT(I)ENDDOPRINT*,SUMEND 說明:子程序END語句寫法:END FUNCTION函數(shù)名子程序END語句功能:1、函數(shù)單位的完畢標志2、將控制返回到主調(diào)程序。子程序開始語句的寫法RECURSIVEFUNCTION 函數(shù)名虛元表RESULT結(jié)果名)1、作為函數(shù)子程序的第一行注釋行除外。2、 如果函數(shù)是遞歸的,那么應(yīng)以RECURSIVE頭。3、函數(shù)名與普通變量名的取法一樣,且為全局名,即作用域為整個程序,不得與已有的全 局名同名。4、主調(diào)程序與被調(diào)程序兩個單位之間的數(shù)據(jù)傳遞: RESULT結(jié)果名):子程序的一個輸出

29、結(jié)果一般寫法:函數(shù)名_RESULT用于保存一個計算結(jié)果,稱為函數(shù)值。且結(jié)果名有類型,必須在子程序說明局部 說明類型。 虛元表:子程序的所有輸入,與除函數(shù)值之外的 其他計算結(jié)果的輸出。虛元之間用逗號分 隔,都要在說明語句中說明類型。如果沒有虛元,函數(shù)名后是一對空括號。5、虛元的含義:編寫子程序時沒有具體值調(diào)用時或調(diào)用完畢后才獲得數(shù)值,因此只是 一個符號,表示輸入、輸出,名字可隨便用戶取。6、虛元可以是變量名、數(shù)組名、過程名、指針等。7、虛元的 可選屬性INTENT:INTENT(IN):表示函數(shù)開始時,虛元從實元中獲得值,作為子程序的輸入(不得再改變其值)INTENT(OUT):表示函數(shù)完畢時,

30、把虛元的值傳送給實元,作為子程序的輸出對應(yīng)的實元不能是表達式INTENT(INOUT):表示虛元既要從實元中獲得值,又要向?qū)嵲獋魉椭?,作為子程序的輸入?出。例:REAL,INTENT(IN):X,Y子程序程序體的寫法分為說明局部和執(zhí)行局部。1、說明局部應(yīng)對程序體一切變量、數(shù)組等實體包括虛元作出說明,同時還要說明 函數(shù)結(jié)果變量名,但不可說明函數(shù)名。2、執(zhí)行局部中必須對函數(shù)結(jié)果名至少賦值一次。外部子例行子程序外部子例行子程序:過程的另一種形式。用戶定義,用于完成復(fù)雜計算任務(wù),返回一個或多個值,或用于其它數(shù)據(jù)處理。外部子例行子程序的結(jié)構(gòu)RecursiveSubroutine 子程序名虛元表說明局部

31、程序體End Subroutine 子程序名與函數(shù)子程序的區(qū)別1沒有RESULTS鍵字。2、虛元:負責子程序的全部輸入和全部輸出3、無虛元時:SUBROUTINT子程序名 或SUBROUTINT子程序名丨4、函數(shù)子程序的調(diào)用是表達式形式。而子例子程序必須通過 CALL語句來調(diào)用。CALL子程序名實元表如:SUBROUTINE FACT(FACT_VALUEIMPLICIT NONEINTEGERINTENT(IN):NINTEGERINTENT(OUT):FACT_VALUEINTEGER:IFACT_VALUE=1DO I=1,NFACT_VALUE=FACT_VALUE*IENDDOEND

32、 SUBROUTINE FACTPROGRAM MAININTEGER:SUM=0I,VALUEDO 1=1,5CALL FACT,(VALUE)SUM=SUM+VALUEENDDOPRINT*,SUMEND字符型數(shù)據(jù)根底字符型常量與變量 說明(1)字符常量區(qū)分字母大小寫(2) 空格為有效字符(3) 字符不受fortran90字符集的限制(4) 單撇號為有效字符時,改寫為兩個單撇號或雙撇號(5) 種別參數(shù)用前綴法表示(6) 長度=0字符型常量長度的計算長度為字符的個數(shù):起止界不算兩個單撇號或雙撇號算一個 空格為有效字符算一個字符型變量的類型說明:1、一般形式:Character (len=n1

33、,kind=n2),屬性列表:變量名=初值2、只有長度說明而無種別參數(shù)說明時,可采用以下說明:Character(le n=7):A Character(7):ACharacter*7:A3、如假設(shè)個別說明,可在變量后指明其具體長度:例: character 8: strg, strh, stri*124、 不說明長度,長度默認為15、長度可為整型表達式,但要加括號例: character(2):a,b* (2+3)6、有時可把長度值寫成一個星號,表示此處暫不指明其長度,也可理解為長度任意,但要 加括號。例:Character LEN=*:CH,PARACharacter *:CH, PARA

34、Character* *:CH, PARACharacter 2: CH, PARA* *使用圍:1具有PARAMETER!性的字符常量Character(*),parameter:para= FORTRAN_90字符串長度取對應(yīng)的字符常量的長度。2用字符變量作為虛元時,虛元的長度取對應(yīng)實元的長度虛元可以和任意長度的實元相結(jié)合,有利于提高子程序的通用性。字符子串子串的一般形式為:字符變量名e1:e2其中,e1和e2為整型表達式,表示起始和終止位置。1<=e1<=e2<=長度 L如:A= '123456' A 1:3'123'字符表達式字符運算符

35、“ 功能:將兩個字符型數(shù)據(jù)按順序首尾連接起來,成為一個新的字符型數(shù)據(jù)。例:abc' /' def' 得 abcdef'字符型數(shù)據(jù)的輸入與輸出字符型賦值語句長:截取左邊短:右補空格表控格式的輸入與輸出例如:CHARACTER; 5 : A, B, CRead *, A, B, C輸入:'CHINA',' NEW',' SHANGHAI'結(jié)果:A 值 CHINA ; B 值 NEW ; C值 SHANG注意(1) :表控格式輸入字符型數(shù)據(jù)時必須輸入用單撇號或雙撇號做定界符的字符串。各常量之間應(yīng)用逗號分隔。(2) :長度

36、轉(zhuǎn)換同賦值長:截取左邊 短:右補空格(3) :表控格式輸出時:按值左對齊輸出,沒有定界符,輸出多個變量時,各變量連續(xù)輸出,中間不留空格。2用字符型編輯符:Aww是規(guī)定的輸入寬度.注意:長度轉(zhuǎn)化規(guī)那么是:假設(shè)長度L=w,輸入的字符個數(shù)恰好夠用。假設(shè)L>w,輸入的字符不能滿足,在右邊補足L-w個空格假設(shè)L<w,從右邊截取L個字符送給變量用字符型編輯符:Aww是規(guī)定的輸出寬度.例:CHARACTER(LEN=5):A,B,C*4A='A1234'B='B1234'C='C123'PRINT '(1X,A5,A7,A2)', A,B,C長度轉(zhuǎn)化規(guī)那么是:假設(shè)長度w=L,輸出的字符個數(shù)

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論