版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、§2.1 關(guān)系表達(dá)式與邏輯表達(dá)式,§2 選擇結(jié)構(gòu)程序設(shè)計(jì),§2.2 塊IF結(jié)構(gòu)與IF語(yǔ)句,§2.3 CASE結(jié)構(gòu),§2.4 選擇結(jié)構(gòu)程序設(shè)計(jì)舉例,§2.5 小結(jié),§2.1關(guān)系表達(dá)式與邏輯表達(dá)式,算法中經(jīng)常要根據(jù)某種邏輯判斷的結(jié)果來(lái)決定下一個(gè)步驟應(yīng)該做什么。這就是帶分支選擇的算法。選擇結(jié)構(gòu)是結(jié)構(gòu)化算法中一種基本結(jié)構(gòu)。實(shí)現(xiàn)選擇結(jié)構(gòu)的前提是進(jìn)行關(guān)系運(yùn)算和邏輯判斷。,
2、167;2.1.1 關(guān)系表達(dá)式,算術(shù)量A與B之間存在六種關(guān)系: A>B A≥B A≠B A=B A≤B A(.GT.)表示> >=(.GE.)表示≥ /=(.NE.)表示≠ ==(.EQ.)表示= <=(.LE.)表示≤ <(.LT.)表示<()中是早期版本的寫(xiě)法,不提倡使用。,格式: E1關(guān)系運(yùn)算符 E2 E1與E2為算術(shù)量或字符型的量,關(guān)系表達(dá)
3、式的值是邏輯量:真或假,算術(shù)運(yùn)算符的優(yōu)先級(jí)別高于關(guān)系運(yùn)算符: 3+5.GT.SQRT(49.0)-3 =8.GT.4,真,實(shí)數(shù)的運(yùn)算與存儲(chǔ)都有誤差,對(duì)實(shí)數(shù)進(jìn)行==或/=運(yùn)算時(shí)要特別當(dāng)心。一般用兩者之差的絕對(duì)值作為判斷的依據(jù)。用ABS(A-B)1E-6來(lái)代替A/=B對(duì)于整型數(shù),可直接用==,/=來(lái)判斷.,§2.1.2 邏輯表達(dá)式,邏輯型變量:可以將關(guān)系表達(dá)式的結(jié)果賦值給一個(gè)變量,該變量的值只能是真或假,類(lèi)型是邏輯型
4、 LOGICAL A,B,L1 A=3+5.GT.SQRT(49.0)-3 邏輯賦值語(yǔ)句,FORTRAN用五種邏輯運(yùn)算符表示布爾運(yùn)算: .NOT.邏輯非 .AND.邏輯與 .OR.邏輯或 .EQV.邏輯等 .NEQV.邏輯不等.NEQV.也可用 .XOR.表示。布爾運(yùn)算按照數(shù)學(xué)上的規(guī)定進(jìn)行。要在理解的基礎(chǔ)上掌握邏輯運(yùn)算的“真值表”,判斷幾個(gè)條件是否同時(shí)滿(mǎn)足,數(shù)學(xué)上可以用布爾運(yùn)算,FORTRAN
5、用邏輯表達(dá)式表示。,邏輯表達(dá)式的格式: E1邏輯運(yùn)算符 E2 E1與E2為邏輯型的量,可以是: 邏輯變量、邏輯常量、關(guān)系表達(dá)式、邏輯表達(dá)式、整型量,邏輯表達(dá)式運(yùn)算次序:括號(hào)>函數(shù)>算術(shù)表達(dá)式>關(guān)系表達(dá)式>邏輯運(yùn)算同一級(jí)別的運(yùn)算,從左至右進(jìn)行,邏輯運(yùn)算符優(yōu)先級(jí)別: .NOT.高于.AND.高于.OR.高于.EQV.和 .NEQV.,邏輯表達(dá)式的值也是邏輯量:真或假,當(dāng)邏輯運(yùn)算符作用于整型量時(shí),
6、執(zhí)行整數(shù)的按位操作,結(jié)果是一個(gè)整數(shù)而不是邏輯型數(shù)據(jù)。3.XOR.5=6 3.and.5 = 5 3.or.5=7,五種邏輯運(yùn)算符中,邏輯非、邏輯與、邏輯或是基本的。其它兩種可以由它們組合得到,例如:A.EQV.B 等價(jià)于(注意邏輯運(yùn)算符兩邊小圓點(diǎn)) A.AND.B .OR. .NOT.A.AND..NOT.BA.NEQV.B 等價(jià)于 A.AND..NOT.B .OR. .NOT.A.AND.B,關(guān)系表達(dá)式不可連寫(xiě):A&
7、lt;B≤C 不能寫(xiě)成 A.LT.B.LE.C 須用邏輯表達(dá)式A.LT.B.AND.B.LE.C,§2.2塊IF結(jié)構(gòu)與IF語(yǔ)句,FORTRAN 90有三種方法實(shí)現(xiàn)選擇結(jié)構(gòu):IF語(yǔ)句、塊IF結(jié)構(gòu)和CASE結(jié)構(gòu)。,§4.2.1邏輯IF語(yǔ)句,§4.2.2 塊IF結(jié)構(gòu),§2.2.1 邏輯IF語(yǔ)句,邏輯IF語(yǔ)句也稱(chēng)為行IF語(yǔ)句。 格式: IF (E) 可執(zhí)行語(yǔ)句,例:IF(X&g
8、t;0) PRINT *, XIF(X>0.and.Y>0) PRINT *,‘第一象限’,邏輯IF語(yǔ)句本身僅僅是一條語(yǔ)句,當(dāng)條件為真時(shí),也只執(zhí)行一條語(yǔ)句,而不可能執(zhí)行多條語(yǔ)句,與下面要介紹的塊IF有明顯的區(qū)別。,,,,IF(X=0)Y=X+5,也可寫(xiě)為,Y=XIF(X>=0)Y=X+5,而IF(X>=0)Y=X+5Y=X,是錯(cuò)誤的.,§2.2.2 塊IF,§2.2.2 塊IF,,
9、IF(E) THEN 一條或多條執(zhí)行語(yǔ)句ELSEIF(E)THEN 一條或多條執(zhí)行語(yǔ)句ELSEIF(E)THEN 一條或多條執(zhí)行語(yǔ)句…………ELSE 一條或多條執(zhí)行語(yǔ)句 ENDIF,,塊if語(yǔ)句和end if 語(yǔ)句分別標(biāo)志塊IF的開(kāi)始和結(jié)束。每個(gè)塊IF都有且僅有一條塊if語(yǔ)句、end if 語(yǔ)句,塊IF中每個(gè)塊都可以省略,表示那種情況下什么也不做。,每個(gè)塊IF至多有一條ELSE語(yǔ)句和一個(gè)ELSE塊。沒(méi)有ELS
10、E塊的時(shí)候,ELSE語(yǔ)句可有可無(wú)。,一個(gè)塊IF中可以沒(méi)有也可以有一條或多條Else if語(yǔ)句,省略ELSEIF塊時(shí),Else if語(yǔ)句可有可無(wú)。,被省略的塊也可以理解為空塊。,塊IF中最多只有一個(gè)塊被執(zhí)行,在省略ELSE語(yǔ)句的情況下,有可能什么也不做。,§2.2.2.1 塊IF的幾種形式,因各個(gè)塊都可省略,塊IF常以較簡(jiǎn)單的形式出現(xiàn),§2.2.2.2 塊IF編程例題,例:輸入三條邊的長(zhǎng)度,計(jì)算三角形面積。,簡(jiǎn)要程
11、序Read(*,*) A,B,CIF(A.LE.0.OR.B.LE.0.OR.C.LE.0) THENSTOP ‘ 輸入數(shù)據(jù)錯(cuò)誤,邊長(zhǎng)必須為正數(shù)’ENDIFIF(A+B.LE.C.OR.A+C.LE.B.OR.B+C.LE.A) THEN PRINT *, ‘ 不能構(gòu)成三角形!’ STOP 12345ELSE S = (A+B+C)*0.5 S = SQRT(S*(S-A)*(S-B)*
12、(S-C)) PRINT *, ‘三角形邊長(zhǎng):’,A,B,C, ‘面積:’,SENDIFEND,例:計(jì)算分段函數(shù)的值,0 x <-102x+20 -10≤ x <020 0≤ x <2030-0.5x 20≤ x <4050-x 40≤ x <500 x ≥50
13、,簡(jiǎn)要程序:Read(*,*) XIF(X .LT. –10) THEN Y = 0ELSEIF(X .LT.0) THEN Y = X+X+20ELSEIF (X.LT.20) THEN Y = 20ELSE IF(X.LT.40) THEN Y=30-0.5*XELSE IF(X .LT.50) THEN Y = 50-XELSEY=0End ifEnd,§2.2.2.
14、3 塊IF的嵌套,塊IF中各塊里的執(zhí)行語(yǔ)句都可以出現(xiàn)又一個(gè)塊IF結(jié)構(gòu),稱(chēng)為塊IF的嵌套。塊IF的嵌套理論上可以有無(wú)窮層。,塊IF結(jié)構(gòu)是由塊IF語(yǔ)句和ENDIF語(yǔ)句括起來(lái)的一段程序。塊IF嵌套中的IF與ENDIF必須成對(duì)出現(xiàn),這是顯而易見(jiàn)的。ENDIF 與IF總是就近配對(duì) 。,應(yīng)該推敲算法,減少塊IF嵌套的層數(shù)。因?yàn)閴KIF嵌套太深會(huì)導(dǎo)致程序結(jié)構(gòu)復(fù)雜,可讀性降低。,可選部分如果有,就必須與關(guān)鍵字用空格分開(kāi)。,為提高塊IF嵌套結(jié)構(gòu)的程序可讀
15、性,可以給塊IF結(jié)構(gòu)取名,其一般用法為: named_if_block: if(e) then statements else [named_if_block] statements endif [named_if_block],例:輸入點(diǎn)P(x,y)的坐標(biāo),判別P點(diǎn)在第幾象限。,簡(jiǎn)要程序Read(*,*) X,YIF(X.GT.0) THEN
16、IF(Y.GT.0) THEN PRINT *, ‘P點(diǎn)在第一象限’ ELSE PRINT *, ‘P點(diǎn)在第四象限’ ENDIFELSE IF(Y.GT.0) THEN PRINT *, ‘P點(diǎn)在第二象限’ ELSE PRINT *, ‘P點(diǎn)在第三象限’ ENDIFENDIFEND,未考慮正好在坐標(biāo)軸上的情形,例:將學(xué)
17、生的成績(jī)分為A(G≥90),B(80≤G<90),C(70≤G<80),D(60≤G<70),E(G<60)五等.程序?yàn)?,INTEGER GREAD*,GIF(G>=90)THENPRINT*,’A’ELSE IF(G>=80)THENPRINT*,’B’ELSE IF(G>=70)THEN,PRINT*,’C’ELSEIF(G>=60)THENPRINT*,’D’
18、ELSEPRINT*,’E’END IFEND,例:閱讀程序,寫(xiě)出程序的運(yùn)行結(jié)果,程序1LOGICAL P,QREAD(*,’(1X,2L4)’)P,QX=0;Y=0IF(P)X=1.0IF(Q)Y=1.0WRITE(*,*)X,YEND當(dāng)從鍵盤(pán)輸入FFTTFFTTFFTT,則X,Y的值為 _________.,程序2READ*,XIF(X<0)THENY=0.0ELSE IF(X<15)
19、THENY=1.0ELSE IF(X<30)THENY=2.0ELSEY=3.0END IFWRITE(*,*)YEND當(dāng)X=-12,12,22,32時(shí),對(duì)應(yīng)的Y值各為多少。,§2.3 CASE結(jié)構(gòu),對(duì)多重分支選擇結(jié)構(gòu),可以用CASE結(jié)構(gòu)描述,比起塊IF嵌套結(jié)構(gòu)來(lái),更加直觀(guān)簡(jiǎn)潔。,§2.3.1 CASE結(jié)構(gòu)的形式,CASE結(jié)構(gòu)一般形式:Select case(case_exp) cas
20、e (case_selector1) CASE塊statements case (case_selector2) CASE塊statements….[case default DEFAULT塊statements]End Select,Select case與End Select是CASE結(jié)構(gòu)的入口和出口,必須成對(duì)出現(xiàn)CASE表達(dá)式case_exp可以是整型、邏輯型與字符型,但不可以
21、用實(shí)型或復(fù)型表達(dá)式CASE選擇器必須與CASE表達(dá)式類(lèi)型一致CASE塊可多可少,可以省略。CASE DEFAULT語(yǔ)句應(yīng)不多于一條,并應(yīng)放在所有CASE語(yǔ)句之后。CASE選擇器是整數(shù)時(shí),可以有多種表示法: case(1),case(1,3,5),case(1:5,9,6) case(100:200) case(100:) case(:120),§2.3.2 CASE結(jié)構(gòu)的執(zhí)行過(guò)程,計(jì)算CASE表達(dá)式的值依
22、次比較CASE選擇器的值與CASE表達(dá)式的值,如果找到相等的就執(zhí)行相應(yīng)的CASE塊,否則就執(zhí)行DEFAULT塊。,§2.3.3 CASE結(jié)構(gòu)的命名,CASE結(jié)構(gòu)命名方式與塊IF結(jié)構(gòu)相仿:Case 結(jié)構(gòu)名: Select case(case_exp) case (case_selector1)[Case 結(jié)構(gòu)名] CASE塊statements case (case_selector2) [Case 結(jié)
23、構(gòu)名] CASE塊statements….[case default [Case 結(jié)構(gòu)名] DEFAULT塊statements]End Select [Case 結(jié)構(gòu)名],§2.4 選擇結(jié)構(gòu)程序設(shè)計(jì)舉例,,例:輸入一個(gè)整數(shù),如果能被7整除則輸出“YES”,否則輸出“NO”。,Logical LInteger kRead *,kL = mod(k,7)==0If(L) then pri
24、nt *, 'Yes'Else print *, 'NO'EndifeND,,例:打印學(xué)生成績(jī)等級(jí)IMPLICIT NONEREAL GSELECT CASE(INT(G)) CASE(90:100) PRINT*,’A’ CASE(80:89)PRINT*,’B’CASE(70:79)PRINT*,’C’CASE(60:69)PRINT*,’D’,CASE(:5
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- fortran90程序設(shè)計(jì)chapter7
- fortran90程序設(shè)計(jì)chapter4
- fortran90程序設(shè)計(jì)chapter13
- fortran90程序設(shè)計(jì)chapter14
- 第二章、c語(yǔ)言程序設(shè)計(jì)基礎(chǔ)
- c--語(yǔ)言程序設(shè)計(jì)第二章解析
- c語(yǔ)言程序設(shè)計(jì)第二章網(wǎng)上作業(yè)
- c語(yǔ)言程序設(shè)計(jì)第二章程序的靈魂 -- 算法
- labview 第二章 程序結(jié)構(gòu)
- 第五章 選擇結(jié)構(gòu)程序設(shè)計(jì)
- 選擇結(jié)構(gòu)程序設(shè)計(jì)
- 概論 ★第二章 java語(yǔ)言基礎(chǔ) ★第三章 面向?qū)ο蟪绦蛟O(shè)計(jì)
- 五選擇結(jié)構(gòu)程序設(shè)計(jì)
- 選擇結(jié)構(gòu)程序設(shè)計(jì)實(shí)驗(yàn)
- 四選擇結(jié)構(gòu)程序設(shè)計(jì)
- 第二章 排架結(jié)構(gòu)
- 鋼結(jié)構(gòu)第二章
- c語(yǔ)言第五章選擇結(jié)構(gòu)程序設(shè)計(jì)
- 第二章結(jié)構(gòu)設(shè)計(jì).doc
- 第二章 機(jī)械結(jié)構(gòu)的設(shè)計(jì).doc
評(píng)論
0/150
提交評(píng)論