Fortran第4章_第1頁
Fortran第4章_第2頁
Fortran第4章_第3頁
Fortran第4章_第4頁
Fortran第4章_第5頁
已閱讀5頁,還剩46頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、FORTRAN語言及程序設計語言及程序設計計算機中心計算機中心 楚紅楚紅2012.10Visual Fortran 90 程序設計程序設計4.1關系表達式關系表達式4.3 邏輯邏輯IF語句語句4.4 塊塊IF結構結構4.5 CASE結構結構4.6 程序設計舉例程序設計舉例4.2邏輯表達式邏輯表達式引言:引言: 在任何一種程序設計語言中,都存在在任何一種程序設計語言中,都存在三種基三種基本程序結構本程序結構: 順序結構順序結構 選擇結構選擇結構 循環結構循環結構 選擇結構選擇結構特點:特點:執行過程執行過程嚴格由上而下嚴格由上而下,適用于簡單問題,適用于簡單問題ReadRead* *,a,b,a

2、,bt=at=aa=ba=bb=tb=tPrintPrint* *,a,b,a,bendend順序結構順序結構例:計算例:計算 x2 ,x=0 x方法:需要方法:需要由條件選擇由條件選擇 如如x0, 則則y=x2 否則否則, y=xX0Y=x2Y=xX 、 =、 、 =、 =、 /=(常用)第(常用)第53頁表頁表4.1 .GT.、.GE.、.LT.、.LE.、.EQ.、.NE. (很少使用)(很少使用)2.寫法:寫法: 算術表達式算術表達式1 算術表達式算術表達式2或者或者 字符表達式字符表達式1 字符表達式字符表達式2 例:例: A B ,表示數學式:,表示數學式:A B; X + Y =

3、 C ,表示數學式:,表示數學式:X + Y = C; X Y = 1.0E-6 ,表示數學式:,表示數學式:X Y 10-6; B / = ( C - D ) / LOG ( B ) 表示數學式表示數學式B(C-D)/lnB 4.1 關系表達式關系表達式3.運算順序:先計算算術表達式或字符表達式的值運算順序:先計算算術表達式或字符表達式的值e1、e2 再按關系運算符比較再按關系運算符比較 例例: a*bc*d 等價于等價于 (a*b)(c*d) (運算符順序:(運算符順序:先算術,后關系先算術,后關系)4.關系表達式的值:是邏輯值關系表達式的值:是邏輯值 成立:成立:.TRUE.; 不成立:

4、不成立:.FALSE.例如:當例如:當A = 12.5,B = 14.7,C = 13.5,D = 16時,時,關系表達式:關系表達式: A + B + 1.5 = C + D + 1.0 值為真值為真 其它值不變,但其它值不變,但C改為改為- 13.5時,時, 值為假。值為假。 5.注意點:注意點:(1)寫法:)寫法:一個一個關系運算符關系運算符,兩個兩個算術或字符表達式算術或字符表達式 錯例:錯例:2Xb)c(2)關系運算對象:)關系運算對象:算術或字符算術或字符表達式表達式 錯例:錯例:A=.false.(3)關系運算符兩邊的)關系運算符兩邊的操作數可以是不同類型的算術量操作數可以是不同

5、類型的算術量。在。在進行比較運算時應先轉化成相同類型,轉化的規律是將進行比較運算時應先轉化成相同類型,轉化的規律是將低級低級類型向高級類型轉化類型向高級類型轉化(4)復型:只能進行)復型:只能進行 =、/=(5)= =或或/=要小心使用要小心使用 實型實型量一般要量一般要改寫改寫:用最小誤差來判定:用最小誤差來判定 A=B改寫為改寫為ABS(A-B)=1E-6 例:例: 0 x5 0 x 同時同時 應該為應該為0=x.AND.x5 x51.邏輯運算符及優先級(第邏輯運算符及優先級(第55頁表頁表4.2) .NOT.、.AND.、.OR.、 .EQV.、.NEQV. .XOR.高高 低低 .EQ

6、V.、.NEQV.為同一級為同一級4.2邏輯表達式邏輯表達式表示復雜的條件表示復雜的條件2.運算規則:(第運算規則:(第55頁表頁表4.3) .not.a:求反求反運算,運算, a.and.b:a與與b同時為真同時為真,表達式值才為真,表達式值才為真 a.or.b: a與與b有一個為真有一個為真,表達式值就為真,表達式值就為真a.eqv.b: a與與b值值相等相等,表達式值為真,表達式值為真a.neqv.b: a與與b值值不相等不相等,表達式值為真,表達式值為真a.XOR.b: a與與b值值不相等不相等,表達式值為真,表達式值為真注:注:NOT為單目運算符,位于操作數之前為單目運算符,位于操作

7、數之前3.邏輯表達式寫法邏輯表達式寫法: 用邏輯運算符將若干個用邏輯運算符將若干個邏輯量邏輯量相連相連4.邏輯量邏輯量: 邏輯常量、邏輯變量、邏輯常量、邏輯變量、 邏輯函數、關系表達式邏輯函數、關系表達式即即值為值為.TRUE. .FALSE.的量的量 例:例:AB+D.OR.NOT.TRUE.例例 : LOGICAL: A 則則 A 為一個邏輯表達式為一個邏輯表達式 .TRUE. 為一個邏輯表達式為一個邏輯表達式 .NOT.A 為一個邏輯表達式為一個邏輯表達式注:邏輯運算符的注:邏輯運算符的運算對象為邏輯量,運算結果為邏輯量運算對象為邏輯量,運算結果為邏輯量 算術量不參與邏輯運算算術量不參與

8、邏輯運算錯例:錯例: AA.AND.LOG (AA為整型為整型 LOG為邏輯型)為邏輯型) A=.true.5.邏輯表達式的計算:邏輯表達式的計算: 運算順序:運算順序: ( ) 函數函數 算術算術 關系關系 邏輯邏輯乘方乘方(最高最高)乘乘/除除加加/減減關系運算符關系運算符邏輯非邏輯非邏輯和邏輯和邏輯或邏輯或邏輯等邏輯等/邏輯不等邏輯不等(最低最低)* * * *,/ /+ +,- -, = ,/ =.NOT.AND.OR.EQV.,.NEQV.例:例: K=2,J=3,A=.TRUE. 則則K-JJ 值為值為.TRUE. 例:例:A1(邏輯型變量)為真,(邏輯型變量)為真,A=1,B=2

9、,X=3 A1.eqv.a+b=x*2練習表達式的寫法練習表達式的寫法 1、 數學式數學式 ABCD 2、 1x2+y22 3、 M能被能被N整除整除 4、 整數整數A、B之一為之一為0 但不同時為但不同時為0 5、 A、B同時為正,或同時為負同時為正,或同時為負 6、 邏輯型變量值為假(或為真)邏輯型變量值為假(或為真)時的條件時的條件 7、邏輯量邏輯量L1、L2、L3同時為真時的條件同時為真時的條件 AB.AND.BC.AND.CD1X*2+Y*2.AND. X*2+Y*20 或或 SIGN(A,B)=AIF(.NOT.A) IF(A)IF( L1 .AND. L2 .AND. L3) 標

10、準的邏輯運算符只允許有邏輯類型的操作數。但是在標準的邏輯運算符只允許有邏輯類型的操作數。但是在FORTRAN 90中操作數可以是中操作數可以是整型常量、整型變量、整型結構體組分或整型算術表達式整型常量、整型變量、整型結構體組分或整型算術表達式。這時候邏輯運算是這時候邏輯運算是按位進行按位進行的,且兩個整型表達式進行邏輯運算的結果為的,且兩個整型表達式進行邏輯運算的結果為整型,而不是邏輯型。整型,而不是邏輯型。例如:例如: PROGRAM LOGICAL2PROGRAM LOGICAL2IMPLICIT NONEIMPLICIT NONEINTEGER AINTEGER A,B B,C CA=3

11、;B=5A=3;B=5C=A.XOR.BC=A.XOR.BPRINTPRINT* *,AA與與B B異或的結果為:異或的結果為: PRINTPRINT* *,C CENDEND 執行程序,在屏幕上的輸出結果為:執行程序,在屏幕上的輸出結果為:A與與B異或的結果為:異或的結果為:6語句語句寫法寫法: IF(條件)(條件) 一個可執行語句一個可執行語句 注:注:1.一個語句一個語句 2.END. 另一個邏輯另一個邏輯IF、 塊塊IF、ELSIF、 ENDIF、DO不可使用不可使用 錯例:錯例:IF(X2) y=1.0 IF(x6) y=3.0 IF (x3) y= -1.0 PRINT*,Y EN

12、D注意:語句順序的改變對結果的影響注意:語句順序的改變對結果的影響 閱讀技巧:畫表閱讀技巧:畫表例例2.1 一貨物單價為一貨物單價為10元,購買元,購買100個以上九五折,輸入購買個以上九五折,輸入購買個數,求貨款。用邏輯個數,求貨款。用邏輯IF語句實現的程序如下:語句實現的程序如下:個數個數100TF單價單價=單價單價* 0.95PROGRAM EXAM41IMPLICIT NONEINTEGER : NREAL : PRICE, SUMPRICE = 10.0READ *, NIF( N = 100 ) PRICE = PRICE * 0.95SUM = PRICE * NPRINT *,

13、SUMEND PROGRAM EXAM41IFTHEN、ELSE、ENDIF結構結構一、書寫格式:一、書寫格式: IF(條件)(條件)then !塊!塊IF語句語句 then塊塊 !由若干語句組成!由若干語句組成 ELSE !ELSE語句語句 else塊塊 !由若干語句組成由若干語句組成 ENDIF !ENDIF語句語句二分支結構二分支結構使用范圍:使用范圍:條件條件TFthen塊塊else塊塊4.4 塊塊IF結構結構注:注:1. IFthen標記語句的開始標記語句的開始 ENDIF 與之與之匹配匹配,標記語句塊結束,標記語句塊結束 2.條件表達式寫法條件表達式寫法 3.與邏輯與邏輯IF語句的

14、區別:語句的區別: 有無有無then關鍵字關鍵字 有無有無ENDIF關鍵字關鍵字 可執行語句的個數可執行語句的個數二、執行過程:計算條件的值二、執行過程:計算條件的值 真真 THEN塊塊 ENDIF的下一個語句的下一個語句 假假 ELSE塊塊 ENDIF的下一個語句的下一個語句例:例: IF(x0)then y=x*2 else y=SQRT(x) ENDIF.TRUE.FALSE.三、退化形式:三、退化形式: IF(e)then IF(e)then(一般單分支一般單分支 ) 語句體語句體1 ELSE 語句體語句體2 ENDIF ENDIF執行過程:同上執行過程:同上例例1 A、B、C打印最大

15、值打印最大值MAX 分析方法:分析方法:1.初值初值 MAX=A 2.B與與最大值最大值比比 邏輯邏輯IF或或 塊塊IF退化退化 3.C與與最大值最大值比比 畫流程圖或畫流程圖或N-S圖說明圖說明 編寫程序編寫程序 BMAXTFMAX =B應用應用Program mainProgram mainImplicit noneImplicit noneInteger:a,b,c,maxInteger:a,b,c,maxReadRead* *,a,b,c,a,b,cmax=amax=aIf(bmax) max = bIf(bmax) max = bIf(cmax) max = cIf(cmax) ma

16、x = cprintprint* *,max,maxendend例例2 輸入一個整數,判斷是奇數還是偶數輸入一個整數,判斷是奇數還是偶數 分析:分析: 輸入輸入N MOD(N,2)= =0TF輸出輸出N是偶數是偶數輸出輸出N是奇數是奇數PROGRAM MAININTEGER:NREAD*,NIF(MOD(N,2)=0)THEN PRINT*,N,是偶數ELSE PRINT*,N,是奇數ENDIFEND例:將百分制成績例:將百分制成績X, 轉化為相應的等級制轉化為相應的等級制 打印打印 A x=80 B 70=x80 C 60=x70 D x=80)PRINT*,AIF(70=X.AND.X80

17、)PRINT*,BIF(60=X.AND.X70)PRINT*,CIF(X=80)THENIF(X=80)THEN PRINT PRINT* *,A,AELSEELSE IF(X=70)THENIF(X=70)THEN PRINT PRINT* *,B,B ELSEELSE IF(X=60)THENIF(X=60)THEN PRINT PRINT* *,C,C ELSE ELSE PRINT PRINT* *,D,D ENDIFENDIF ENDIFENDIFENDIFENDIF塊塊IF結構取名的一般格式為:結構取名的一般格式為:塊塊IF結構名:結構名:IF( E ) THEN BLOCK1

18、ELSE 塊塊IF結構名結構名 BLOCK2 ENDIF 塊塊IF結構名結構名注意:注意:(1)(1) 塊塊IFIF結構取名時,將名字寫在結構取名時,將名字寫在IF-THENIF-THEN語句的前面,與語句的前面,與IF-THENIF-THEN語句用語句用冒號分割冒號分割;(2)(2) ENDIF ENDIF的后面應寫上塊的后面應寫上塊IFIF結構名,并用結構名,并用空格分開空格分開;(3)(3) ELSE ELSE語句后的塊語句后的塊IFIF結構名可以省略,如果不省略,結構名可以省略,如果不省略,ELSEELSE語句與塊語句與塊IFIF結構名之間用結構名之間用空格分開空格分開;(4)(4)

19、IF-THEN IF-THEN語句、語句、ELSEELSE語句和語句和ENDIFENDIF語句中的塊語句中的塊IFIF結構名應結構名應一致。一致。塊塊IF結構的命名結構的命名方法方法3:將之簡寫為將之簡寫為Else IF多重條件的多重條件的IF結構結構READREAD* *,X,XIF(X=80)THENIF(X=80)THEN PRINT PRINT* *,A,AELSEIF(X=70)THENELSEIF(X=70)THEN PRINT PRINT* *,B,BELSEIF(X=60)THENELSEIF(X=60)THEN PRINTPRINT* *,C,CELSE ELSE PRINT

20、PRINT* *,D,D ENDIFENDIF注:注: Else IF無無ENDIF匹配匹配以前面所講的判斷學生成績等級為例,編寫出相應的程序。以前面所講的判斷學生成績等級為例,編寫出相應的程序。設學生設學生成績為整型變量成績為整型變量,成績等級為字符型變量成績等級為字符型變量:PROGRAM DJPROGRAM DJIMPLICIT NONEIMPLICIT NONEINTEGER : XINTEGER : XCHARACTER(LEN=1):GRADECHARACTER(LEN=1):GRADEREADREAD* *,X,XIF (X = 80) THENIF (X = 80) THEN

21、GRADE = A GRADE = AELSE IF (X =70) THENELSE IF (X =70) THEN GRADE = B GRADE = BELSE IF (X = 60) THENELSE IF (X = 60) THEN GRADE = C GRADE = CELSEELSE GRADE = D GRADE = DEND IFEND IFPRINT PRINT * *, X = ,X, GRADE = , GRADE, X = ,X, GRADE = , GRADEEND END Else IF一般結構一般結構: IF(e1)THEN block1 ELSEIF(e2)t

22、hen block2 ELSEIF(e3)then block3 - ELSE block ENDIF可沒有可沒有ELSE及相應的塊及相應的塊2.執行過程執行過程 按順序計算條件值是否成立:按順序計算條件值是否成立: 真真 相應的相應的block ENDIF下一個語句下一個語句 假假 下一個條件語句下一個條件語句 所有條件均不成立所有條件均不成立 else后的后的Block ENDIF下一個語句下一個語句 例上例上 閱讀閱讀 練習:練習: 分段函數計算分段函數計算(64頁例頁例4-5 ) 算法分析:邏輯算法分析:邏輯IF并列或塊并列或塊IF結構嵌套結構嵌套例:計算例:計算y=f(x)+g(x)

23、 f(x)=x2-16 g(x)= 1+ ex+1,f(x)0 +25 ,f(x )=0 0 ,f(x)0 3x 分析:分析: 1.計算計算f 注:注:f 與與f(x)的區別)的區別 2.計算計算g 3.f +g READREAD* *,X,XF=XF=X* * *2-162-16IF(F0)THENIF(F0)THENELSEIF(F0)THEN G=0 G=0ELSEELSE G=SQRT(X G=SQRT(X* * *3)+253)+25ENDIFENDIFY=F+GY=F+G閱讀練習閱讀練習 1.Read*,A IF(A=3.5)then y=3.0 ELSE IF(A=2.5)the

24、n ; y=4.5 ELSE ; y=4.0 輸入輸入0.5 ENDIF y=7.0 y=? ( 7.0) ENDIF write(* ,*) y END技巧:結構清晰技巧:結構清晰 按塊閱讀按塊閱讀 畫表法畫表法2.LOGICAL:P Read *,x,y p=.TRUE. IF(x+yx) p=.FALSE. z=y IF(p)then z=x+z ELSE z=x ENDIF write(*,*)z END 3.6,1.2 :4.8 3.6,-1.2 :3.6多重同級選擇判斷多重同級選擇判斷特殊多分支特殊多分支1. CASE結構的格式結構的格式(寫法寫法): SELECT CASE(情況

25、(情況表達式表達式) CASE(情況(情況選擇器選擇器1) block1(塊(塊1) CASE(情況(情況選擇器選擇器2) block(塊(塊2) - CASE(情況(情況選擇器選擇器n) block n CASE default 默認塊默認塊 END Select4.5 CASE結構1. 情況表達式是:情況表達式是:多分支分類的依據多分支分類的依據 可為:整型、邏輯型、字符型可為:整型、邏輯型、字符型表達式,表達式, 不能是:實型或復型不能是:實型或復型表達式表達式 2.情況選擇器:是具體的分支,由情況選擇器:是具體的分支,由常量常量構成,各選擇器值不能重復構成,各選擇器值不能重復 常量的寫

26、法有兩種常量的寫法有兩種: (1)用用 逗號分隔符的逗號分隔符的單個值單個值的列表。的列表。 例:例: case(3,5,7) (2) 用冒號分隔的用冒號分隔的值的范圍值的范圍 例:例: case(5:10); case(i:n) case(5:):) ; case(:(:10) 值范圍下界、上界可省略。值范圍下界、上界可省略。 3.情況表達式與情況選擇器的情況表達式與情況選擇器的類型一致類型一致 4. Case default4. Case default:有一個或沒有:有一個或沒有 5. CASE5. CASE結構可以嵌套:即結構可以嵌套:即BLOCKBLOCK可以是可以是CASE CAS

27、E 結構。結構。幾點說明幾點說明 1. 計算情況表達式的值計算情況表達式的值 2. 順序匹配各情況選擇器,執行相應的順序匹配各情況選擇器,執行相應的block1 再到再到 END Select下一個語句下一個語句 3. 如果均不匹配,則執行默認塊如果均不匹配,則執行默認塊 再到再到 END Select下一個語句下一個語句 4.5.2.CASE結構的執行過程結構的執行過程例:輸入學生的成績例:輸入學生的成績mark,打印學生成績的等級,打印學生成績的等級優秀優秀 90100 良良 7589通過通過 6074 不及格不及格=59 其他輸入有錯其他輸入有錯分析:分類的依據分析:分類的依據mark-

28、情況表達式情況表達式 mark值的分類值的分類-情況選擇器情況選擇器Implicit noneImplicit nonereal:markreal:markreadread* *,mark,markselect case (select case (int (mark)int (mark) ) case(90:100) case(90:100) print print* *, , 優秀優秀 case(75:89) case(75:89) print print* *, , 良好良好 case(60:74) case(60:74) print print* *, , 通過通過 Case(:59)Case(:59) print print* *,不及格不及格 case default case default print print* *,輸入有誤!輸入有誤!endSelectendSelectendend執行過程執行過程例例(字符型情況表達式)(字符型情況表達式):輸入學生的等級,打印學:輸入學生的等級,打印學生成績的百分制分數段生成績的百分制分數段CHARACTER(1):GRADEREAD

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論