fortran90-知識(shí)點(diǎn)整理.docx_第1頁
fortran90-知識(shí)點(diǎn)整理.docx_第2頁
fortran90-知識(shí)點(diǎn)整理.docx_第3頁
fortran90-知識(shí)點(diǎn)整理.docx_第4頁
fortran90-知識(shí)點(diǎn)整理.docx_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Fortran90關(guān)于變量說明的新功能:1.在變量說明的同時(shí),可以給變量賦初值。 INTEGER:I=5,J=126 REAL:X=7.2,Z,W=774.22.在說明變量的同時(shí)也可說明其種別 REAL(KIND=4):X,Y 或 REAL(4):X,Y3.在說明變量的同時(shí),還可說明變量的屬性INTEGER,PARAMETER:I=5,J=123 Ps :PARAMETER 屬性(1)功能:用一個(gè)符號(hào)代表一個(gè)常量,稱為符號(hào)常量(常數(shù))(2)寫法:Real,Parameter :G=9.8 &說明類型時(shí)賦值(3)位置:位于可執(zhí)行語句之前 REAL,DIMENSION(1:10):A2.3.6 派生數(shù)據(jù)類型 根據(jù)需要而由基本數(shù)據(jù)類型定義新的數(shù)據(jù)類型。在一個(gè)派生類型中可包含多個(gè)基本類型。如:TYPE STUDENT (定義開始) CHARACTER(LEN=20):DEPARTMENT CHARACTER(LEN=10):CLASS CHARACTER(LEN=15):NAME INTEGER:NUMBER (成員定義) END TYPE STUDENT (定義結(jié)束)派生類型變量的定義: TYPE(STUDENT):PERSON變量的賦值: PERSON=(”COMPUTER”,”92_2”,”LI LIN”,21)成員的表示: PERSON%CLASS=“92_2” PERSON%NAME=“LI LIN”主程序其他限制主程序的可執(zhí)行部分不能包含有RETURN語句或者ENTRY語句。程序名對(duì)可執(zhí)行程序是全局的,而且不得于該可執(zhí)行程序中的任何其它程序單元名、外部過程名或公用塊名相同,也不得于主程序內(nèi)的任何局部名相同。 在主程序的作用范圍內(nèi)的說明不得包含OPTIONAL語句、INTENT語句、PUBLIC語句或它們的等價(jià)屬性,在主程序內(nèi)SAVE語句不起作用。主程序內(nèi)的任何內(nèi)部過程的定義必須跟在CONTAINS語句之后。2.3.2 子程序 子程序是可以完成某一獨(dú)立算法或功能的程序單元,但它功能的具體體現(xiàn)要通過主程序(或子程序)的調(diào)用來實(shí)現(xiàn)。 按子程序與主程序的位置關(guān)系分為內(nèi)部過程和外部過程。2.4.3 模塊 模塊也是一種在程序單元之外獨(dú)立編寫的程序單元。它有獨(dú)特的形式,即模塊程序單元內(nèi)沒有可執(zhí)行語句,除了說明語句外,最多包含內(nèi)部過程。模塊的主要作用是供其它程序單元引用。 程序單元引用模塊,實(shí)際是將模塊內(nèi)的全部語句復(fù)制到本程序單元。因此模塊起共享及復(fù)制的作用。模塊的引用采用語句: USE 模塊1,模塊2,基本語句概述程序的最基本的語句主要有四種:類型說明語句、賦值語句、輸入語句、輸出語句。運(yùn)用這些基本的語句,就可以編寫一些簡(jiǎn)單的程序。內(nèi)在函數(shù)FORTRAN 90配置的函數(shù)稱為內(nèi)在函數(shù)。內(nèi)在函數(shù)分為三種:基本函數(shù) : SIGN符號(hào)函數(shù)值:|A1|(若A20) -|A1|(若A20)SIGN(A1,A2)Eg : SIGN(-3.0,2.0)=3.0 SIGN(3.0,-2.0)=-3.0 某些函數(shù)參數(shù)只能為實(shí)型 如:log(2.0) (loG(2)錯(cuò))轉(zhuǎn)換函數(shù)函數(shù)名含義FORTRAN舉例INT(X)實(shí)型轉(zhuǎn)換整型、復(fù)型的實(shí)部轉(zhuǎn)換整型INT(2.3)=2INT(1.2,3.5)=1REAL(X)整型轉(zhuǎn)換實(shí)型、復(fù)型的實(shí)部轉(zhuǎn)換實(shí)型REAL(8)=8.0REAL(1.2,3.5)=1.2COMPLEX(X,Y)將X,Y合成為復(fù)型COMPLEX(2.3,1.5)=(2.3,1.5)INT(X,KIND):將X值轉(zhuǎn)換為整型,以KIND的值作為種別參數(shù)REAL(X,KIND):將X值轉(zhuǎn)換為實(shí)型,以KIND的值作為種別參數(shù)COMPLEX(X,Y,KIND):將X,Y轉(zhuǎn)換為復(fù)型,以KIND的值作為種別參數(shù)查詢函數(shù)KIND()SELECTED_INT_KIND()SELECTED_REAL_KINDPRECISION()RANGE()不輕易使用整型量除整型量 1.0/2 2.0*(-1)運(yùn)算對(duì)象類型相同時(shí),運(yùn)算結(jié)果的類型為同一類型注意:5/2=2 1/2=0 !運(yùn)算對(duì)象類型不同時(shí),系統(tǒng)一般先轉(zhuǎn)換成相同類型后再運(yùn)算轉(zhuǎn)換規(guī)則是:較低級(jí)的類型轉(zhuǎn)換為較高級(jí)的類型數(shù)據(jù)類型隱含的高低次序?yàn)椋ㄓ傻偷礁撸?整型實(shí)型 雙精度 復(fù)型例: 8/5+2.0*5/2=6.0(逐步轉(zhuǎn)化)賦值語句1、類型要求邏輯型、字符型的賦值語句要求“=”兩邊類型相同數(shù)值型賦值,不區(qū)別整型、實(shí)型和復(fù)型2、種別方面 字符型要求種別相同其余類型的e、V種別允許不同輸入輸出語句1、 I/O的對(duì)象 列在中 I/O是相對(duì)于內(nèi)存而言的,鍵盤屬于輸入設(shè)備,顯示器屬于輸出設(shè)備,優(yōu)盤、硬盤既是輸入設(shè)備,又是輸出設(shè)備。2、I/O的方向及語句READ (U,f) U:設(shè)備(部件) f:格式WRITE其中: 輸入 READ語句 輸出 PRINT語句,只輸出到顯示器 WRITE語句,適合任何輸出設(shè)備U(部件) * : 系統(tǒng)約定設(shè)備某個(gè)值: 指定通道號(hào)(設(shè)備邏輯號(hào)、文件號(hào)) 表控格式I/O(*): 系統(tǒng)約定的格式。f(格式) 基本格式(自定格式)I/O:按用戶要求的格式組織I/0。 帶控制信息表的I/O:I:碰到回車(ENTER)為一個(gè)記錄。O:一行為一個(gè)記錄。程序執(zhí)行過程中按表控格式輸入數(shù)據(jù)各數(shù)據(jù)間有分隔符: ,或空格類型匹配:整型:帶小數(shù)點(diǎn)只取整數(shù)部分; 復(fù)數(shù):(實(shí)部,虛部); 字符:一串字符:賦值時(shí)長度轉(zhuǎn)化或一串字符 即可省略。 邏輯:以T或F作為第一個(gè)字母的字符串(點(diǎn)號(hào)1個(gè)、空格多個(gè)在前忽略)3.輸入的數(shù)據(jù)必須是常數(shù),不能是變量和表達(dá)式如輸入2+1,則出錯(cuò)。4.輸入數(shù)據(jù)個(gè)數(shù): 1)不得少于變量的個(gè)數(shù); 2)可分行輸入; 3)多余的數(shù)據(jù)不起作用5.空格可以多個(gè),/表示輸入數(shù)據(jù)結(jié)束,后面的數(shù)據(jù)被取消,沒有輸入數(shù)據(jù)的變量值為原值;Read*,A,B,C 輸入: 2,1/3 結(jié)果: A=2 B=1 C=06、如果幾個(gè)連續(xù)變量需要賦同一個(gè)值,可以使用重復(fù)因子r,即r*c: r為重復(fù)數(shù) 4*0.5,2*3,2*AB,3*(1.0,-1.0)輸入輸出的三種不同的格式:1表控格式的輸入輸出2有格式的輸入輸出3帶控制信息表的輸入輸出整型編輯符:Iw.m1I 編輯符控制輸出:功能:用于整型數(shù)據(jù)的輸入輸出格式: Iw Iw.mrIww輸入輸出數(shù)據(jù)字段總寬度m至少m位數(shù)字r為重復(fù)系數(shù) 例1設(shè) J=10, K=-12,L=12 WRITE (*,”(I3,I5,I7)”)J,K,L 10-12123注意: 1數(shù)字在指定的區(qū)域內(nèi)右端對(duì)齊,不足w則左邊補(bǔ)空格。 2負(fù)數(shù)的符號(hào)也包含在字段寬度內(nèi) 3如果應(yīng)輸出的列數(shù)超過了規(guī)定的字段寬度,則不輸出有效數(shù)據(jù),以w個(gè)*填充。 4、BN, BZ :Blank interpretation Specifies interpretation of blanks in numeric fields (空格是否當(dāng)0處理)僅用于輸入格式語句,如 read “(BN,2I3)”,I,J 例2如果將格式串改為:“(I3,I5.4,I7.5)” 則輸出: 10-001200123 例3如果L=123456 10-0012123456 !Iw.m :m=n+d+2 當(dāng)實(shí)型數(shù)值大于或等于0.0時(shí),則w=n+d+1 用此來確定w的寬度注意:1 w包括數(shù)符和小數(shù)點(diǎn)兩位2 若數(shù)據(jù)小于w位,則左邊補(bǔ)空格3 輸出值時(shí)舍入,而不是截?cái)?. 如果是科學(xué)計(jì)數(shù)法則轉(zhuǎn)換小數(shù)形式字符型編輯AA用來編輯字符型變量,它不關(guān)心該字符串的長短如何。例: CHARATER*5 A,B,C READ(*,(A,A,A))A,B,CWRITE(*,(A,2X,A,2X,A))A,B,CEND輸入:ABCDBASICFORMAT結(jié)果:ABCDBASICFORMA ! 2X表示X編輯描述符功能1:在輸出時(shí)產(chǎn)生空格,它的一般形式為:nX關(guān)系表達(dá)式與邏輯表達(dá)式關(guān)系運(yùn)算符: 、 =、 、 =、 =(等于)、 /=(不等于) (常用).GT.、.GE.、.LT.、.LE.、.EQ.、.NE.注意1、每個(gè)關(guān)系表達(dá)式中的關(guān)系運(yùn)算符只準(zhǔn)出現(xiàn)1次,運(yùn)算符兩側(cè)都是表達(dá)式; 錯(cuò)例:2Xb)c2、運(yùn)算對(duì)象: 關(guān)系運(yùn)算符兩邊的運(yùn)算對(duì)象類型應(yīng)相容: 錯(cuò)例:A= =.TRUE. 2,=,0) PRINT*,X 執(zhí)行過程: 1、計(jì)算條件表達(dá)式的值 2、真 右邊語句 IF的下一個(gè)語句 3、假 IF的下一個(gè)語句 注意: 1.右邊通常為一條且只一條可執(zhí)行語句。 錯(cuò)例:IF (AB) T=A;A=B;B=T 2.不能為以下語句: END、另一個(gè)邏輯IF、 塊IF、ELSIF、ENDIF、DO 錯(cuò)例:IF(X=I) PTINR*,IEND DO II隱含DO循環(huán)隱含DO循環(huán)實(shí)際上是帶控制變量的DO結(jié)構(gòu)。但簡(jiǎn)化成只有DO結(jié)構(gòu)的第一句,且把DO關(guān)鍵字隱去。隱含DO循環(huán)的形式為:(list,v=u1,u2,u3)說明:1、左括號(hào)相當(dāng)于DO,右括號(hào)相當(dāng)于ENDDO;2、List可以是一個(gè)或多個(gè)常量、變量、數(shù)組元素等,甚至可以是另外的隱含DO循環(huán)(隱含DO循環(huán)嵌套)不能獨(dú)立存在,主要用于輸入輸出語句,常用于數(shù)組的輸入輸出。如:READ *,(A(I),I=1,5) READ *,A(1),A(2),A(3),A(4),A(5)隱DO、顯DO執(zhí)行過程的區(qū)別1、輸入、輸出格式的區(qū)別:PRINT *,(I,I=1,3) PRINT*,1,2,3輸出一行DO I=1,3 PRINT*,1PRINT*,I PRINT*,2ENDDO PRINT*,3 輸出三 行幾種常見的隱含DO循環(huán)的形式1.按指定步長讀寫。例如 PRINT *,(J,J=1,7,2)2.隱含DO循環(huán)與普通變量混合使用。例如 PRINT *,A,B,(X(I) ,I=1,3),C3.用于輸出一些特殊符號(hào)。例如 PRINT *,(-,I=1,80)4.隱含DO循環(huán)可以并列出現(xiàn)。例如 print *,(I,I=1,2),(J,J=1,2)程序單元和過程子程序單元不能獨(dú)立存在,只能被主程序單元或被其它子程序單元調(diào)用,甚至可以遞歸調(diào)用(調(diào)用本身)子程序(又稱過程)的分類1、 函數(shù)子程序分為:內(nèi)部函數(shù)子程序,外部函數(shù)子程序2、 子例行子程序分為:內(nèi)部子例行子程序,外部子例行子程序外部函數(shù)子程序Visual Fortran90的函數(shù):1、內(nèi)在函數(shù)(系統(tǒng)函數(shù)、標(biāo)準(zhǔn)函數(shù))如:sin、cos、sqrt、abs、kind2、Function語句編寫的函數(shù)(自定義) 分為內(nèi)部函數(shù)、外部函數(shù)函數(shù)子程序的編寫方法RECURSIVEFUNCTION 函數(shù)名(虛元表)RESULT(結(jié)果名)說明部分程序體:具體計(jì)算END FUNCTION 函數(shù)名如:FUNCTION FACT(N) RESULT(FACT_RESULT) IMPLICIT NONE INTEGER:N,I,FACT_RESULT FACT_RESULT=1 DO I=1,N FACT_RESULT=FACT_RESULT*I ENDDO END FUNCTION FACTPROGRAM MAININTEGER:FACT,SUM=0,IDO I=1,5SUM=SUM+FACT(I)ENDDOPRINT*,SUMEND說明:子程序END語句寫法:END FUNCTION 函數(shù)名子程序END語句功能:1、函數(shù)單位的結(jié)束標(biāo)志 2、將控制返回到主調(diào)程序。子程序開始語句的寫法RECURSIVEFUNCTION 函數(shù)名(虛元表)RESULT(結(jié)果名)1、作為函數(shù)子程序的第一行(注釋行除外)。2、如果函數(shù)是遞歸的,則應(yīng)以RECURSIVE開頭。3、函數(shù)名與普通變量名的取法相同,且為全局名,即作用域?yàn)檎麄€(gè)程序,不得與已有的全局名同名。4、主調(diào)程序與被調(diào)程序兩個(gè)單位之間的數(shù)據(jù)傳遞:RESULT (結(jié)果名):子程序的一個(gè)輸出結(jié)果一般寫法:函數(shù)名_RESULT,用于保存一個(gè)計(jì)算結(jié)果,稱為函數(shù)值。且結(jié)果名有類型,必須在子程序說明部分說明類型。虛元表:子程序的所有輸入,及除函數(shù)值之外的其他計(jì)算結(jié)果的輸出。虛元之間用逗號(hào)分隔,都要在說明語句中說明類型。如果沒有虛元,函數(shù)名后是一對(duì)空括號(hào)。5、虛元的含義:編寫子程序時(shí)沒有具體值(調(diào)用時(shí)或調(diào)用結(jié)束后才獲得數(shù)值),因此只是一個(gè)符號(hào),表示輸入、輸出,名字可隨便用戶取。6、虛元可以是變量名、數(shù)組名、過程名、指針等。7、虛元的可選屬性INTENT:INTENT(IN):表示函數(shù)開始時(shí),虛元從實(shí)元中獲得值,作為子程序的輸入(不得再改變其值)INTENT(OUT):表示函數(shù)結(jié)束時(shí),把虛元的值傳送給實(shí)元,作為子程序的輸出(對(duì)應(yīng)的實(shí)元不能是表達(dá)式)INTENT(INOUT):表示虛元既要從實(shí)元中獲得值,又要向?qū)嵲獋魉椭担鳛樽映绦虻妮斎胼敵?。例:REAL,INTENT(IN):X,Y子程序程序體的寫法分為說明部分和執(zhí)行部分。1、說明部分應(yīng)對(duì)程序體內(nèi)一切變量、數(shù)組等實(shí)體(包括虛元)作出說明,同時(shí)還要說明函數(shù)結(jié)果變量名,但不可說明函數(shù)名。2、執(zhí)行部分中必須對(duì)函數(shù)結(jié)果名至少賦值一次。外部子例行子程序外部子例行子程序:過程的另一種形式。用戶定義,用于完成復(fù)雜計(jì)算任務(wù),返回一個(gè)或多個(gè)值,或用于其它數(shù)據(jù)處理。外部子例行子程序的結(jié)構(gòu)RecursiveSubroutine 子程序名(虛元表)說明部分程序體End Subroutine 子程序名與函數(shù)子程序的區(qū)別1.沒有RESULT關(guān)鍵字。2、虛元:負(fù)責(zé)子程序的全部輸入和全部輸出3、無虛元時(shí):SUBROUTINT 子程序名 或 SUBROUTINT 子程序名()4、函數(shù)子程序的調(diào)用是表達(dá)式形式。而子例子程序必須通過CALL語句來調(diào)用。 CALL 子程序名(實(shí)元表)如:SUBROUTINE FACT(N,FACT_VALUE)IMPLICIT NONEINTEGER,INTENT(IN):NINTEGER,INTENT(OUT):FACT_VALUEINTEGER:IFACT_VALUE=1DO I=1,NFACT_VALUE=FACT_VALUE*IENDDOEND SUBROUTINE FACTPROGRAM MAININTEGER:SUM=0,I,VALUEDO I=1,5CALL FACT(I,VALUE)SUM=SUM+VALUEENDDOPRINT*,SUMEND待留字符型數(shù)據(jù)基礎(chǔ)字符型常量與變量說明 (1)字符常量區(qū)分字母大小寫 (2)空格為有效字符 (3)字符不受fortran90字符集的限制 (4)單撇號(hào)為有效字符時(shí),改寫為兩個(gè)單撇號(hào)或雙撇號(hào) (5)種別參數(shù)用前綴法表示 (6)長度=0字符型常量長度的計(jì)算 長度為字符的個(gè)數(shù): 起止界不算 兩個(gè)單撇號(hào)或雙撇號(hào)算一個(gè) 空格為有效字符算一個(gè)字符型變量的類型說明:1、一般形式:Character (len=n1,kind=n2 ),屬性列表: 變量名=初值2、只有長度說明而無種別參數(shù)說明時(shí),可采用以下說明: Character(len=7):A Character(7):A Character*7:A3、如若個(gè)別說明,可在變量后指明其具體長度:例: character (8): strg, strh, stri*12 4、不說明長度,長度默認(rèn)為1 5、長度可為整型表達(dá)式,但要加括號(hào)例: character(2):a,b*(2+3)6、有時(shí)可把長度值寫成一個(gè)星號(hào),表示此處暫不指明其長度,也可理解為長度任意,但要加括號(hào)。例: Character(LEN=*):CH,PARA Character(*):CH,PARA Character*(*):CH,PARA Character(2): CH,PARA*(*)使用范圍:(1)具有PARAMETER屬性的字符常量 Character(*),parameter:para=FORTRAN_90 字符串長度取對(duì)應(yīng)的字符常量的長度。(2)用字符變量作為虛元時(shí),虛元的長度取對(duì)應(yīng)實(shí)元的長度 虛元可以和任意長度的實(shí)元相結(jié)合,有利于提高子程序的通用性。字符子串子串的一般形式為:字符變量名(e1:e2)其中,e1和e2為整型表達(dá)式,表示起始和終止位置。 1=e1=e2w,輸入的字符不能滿足,在右邊補(bǔ)足L-w個(gè)空格 若LL,在字符變量左邊補(bǔ)足w-L個(gè)空格輸出(右對(duì)齊),如上例中B; 若wL,從左邊截取w個(gè)字符輸出,若上例中C。 字符型數(shù)組如果具有Dimension屬性,就成為字符數(shù)組。例: character(3),dimension(4):aA的每個(gè)元素的長度均為3A(1)(1:1)表A(1)中的第1個(gè)字符用于字符處理的內(nèi)在函數(shù)1.求字符串長度函數(shù) LEN:字符串的長度 例:LEN(ASD) 值5 LEN_TRIM:去掉尾部空格后的長度。 例:LEN _TRIM(ASD ) 值3注意:若參數(shù)是數(shù)組名,則結(jié)果為數(shù)組中元素的長度。例:CHARACTER(LEN=5),DIMENSION(1:20):A則 LEN(A)的值是5。2.除去字符串尾部空格函數(shù)(TRIM) 例:TRIM(ASD ) 值A(chǔ)SD數(shù)組數(shù)組不得重復(fù)說明 例:INTEGER,DIME

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論