FORTRAN90第二章-選擇結(jié)構(gòu)程序設(shè)計(jì)_第1頁
FORTRAN90第二章-選擇結(jié)構(gòu)程序設(shè)計(jì)_第2頁
FORTRAN90第二章-選擇結(jié)構(gòu)程序設(shè)計(jì)_第3頁
FORTRAN90第二章-選擇結(jié)構(gòu)程序設(shè)計(jì)_第4頁
FORTRAN90第二章-選擇結(jié)構(gòu)程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

程序設(shè)計(jì)語言授課教師:范興朗E-mail:xinglangfan@

§2.1關(guān)系表達(dá)式與邏輯表達(dá)式§2

選擇結(jié)構(gòu)程序設(shè)計(jì)

§2.2

塊IF結(jié)構(gòu)與IF語句§2.3CASE結(jié)構(gòu)§2.4選擇結(jié)構(gòu)程序設(shè)計(jì)舉例§2.5小結(jié)§2.1關(guān)系表達(dá)式與邏輯表達(dá)式

算法中經(jīng)常要根據(jù)某種邏輯判斷的結(jié)果來決定下一個(gè)步驟應(yīng)該做什么。這就是帶分支選擇的算法。選擇結(jié)構(gòu)是結(jié)構(gòu)化算法中一種基本結(jié)構(gòu)。實(shí)現(xiàn)選擇結(jié)構(gòu)的前提是進(jìn)行關(guān)系運(yùn)算和邏輯判斷?!?.1.1關(guān)系表達(dá)式算術(shù)量a與b之間存在六種關(guān)系:a>ba≥ba≠ba=ba≤ba<b

fortran用六種關(guān)系運(yùn)算符表示它們:

>(.gt.)表示>>=(.ge.)表示≥

/=(.ne.)表示≠==(.eq.)表示=

<=(.le.)表示≤<(.lt.)表示<()中是早期版本的寫法,不提倡使用。格式:E1關(guān)系運(yùn)算符E2E1與E2為算術(shù)量或字符型的量關(guān)系表達(dá)式的值是邏輯量:真或假算術(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來代替a==b用abs(a-b)>1e-6來代替a/=b對(duì)于整型數(shù),可直接用==,/=來判斷.§2.1.2邏輯表達(dá)式邏輯型變量:可以將關(guān)系表達(dá)式的結(jié)果賦值給一個(gè)變量,該變量的值只能是真或假,類型是邏輯型

logicala,b,l1a=3+5.gt.sqrt(49.0)-3邏輯賦值語句fortran用五種邏輯運(yùn)算符表示布爾運(yùn)算:.not.邏輯非

.and.邏輯與

.or.邏輯或

.eqv.邏輯等

.neqv.邏輯不等.neqv.也可用

.xor.表示。布爾運(yùn)算按照數(shù)學(xué)上的規(guī)定進(jìn)行。要在理解的基礎(chǔ)上掌握邏輯運(yùn)算的“真值表”判斷幾個(gè)條件是否同時(shí)滿足,數(shù)學(xué)上可以用布爾運(yùn)算,fortran用邏輯表達(dá)式表示。

邏輯表達(dá)式的格式:E1邏輯運(yùn)算符E2E1與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í),執(zhí)行整數(shù)的按位操作,結(jié)果是一個(gè)整數(shù)而不是邏輯型數(shù)據(jù)。3.XOR.5=63.and.5=53.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á)式不可連寫:A<B≤C不能寫成A.LT.B.LE.C須用邏輯表達(dá)式A.LT.B.AND.B.LE.C§2.2塊IF結(jié)構(gòu)與IF語句FORTRAN90有三種方法實(shí)現(xiàn)選擇結(jié)構(gòu):IF語句、塊IF結(jié)構(gòu)和CASE結(jié)構(gòu)?!?.2.1邏輯IF語句§4.2.2塊IF結(jié)構(gòu)§2.2.1邏輯IF語句邏輯IF語句也稱為行IF語句。格式:IF(E)可執(zhí)行語句例:if(x>0)print*,xif(x>0.and.y>0)print*,‘第一象限’邏輯IF語句本身僅僅是一條語句,當(dāng)條件為真時(shí),也只執(zhí)行一條語句,而不可能執(zhí)行多條語句,與下面要介紹的塊IF有明顯的區(qū)別。IF(X<0)Y=XIF(X>=0)Y=X+5也可寫為Y=XIF(X>=0)Y=X+5而IF(X>=0)Y=X+5Y=X是錯(cuò)誤的.§2.2.2

塊IFif(e)then(塊if語句)

一條或多條執(zhí)行語句(then塊)else(else語句)

一條或多條執(zhí)行語句(else塊)endif(endif語句)EIF塊ELSE塊真假§2.2.2

塊IFif(e)then

一條或多條執(zhí)行語句elseif(e)then

一條或多條執(zhí)行語句elseif(e)then

一條或多條執(zhí)行語句…………else

一條或多條執(zhí)行語句endifEIF塊真假EELSEIF塊真假EELSEIF塊真假ELSE塊EndIfIF

塊if語句和endif語句分別標(biāo)志塊IF的開始和結(jié)束。每個(gè)塊IF都有且僅有一條塊if語句、endif語句塊IF中每個(gè)塊都可以省略,表示那種情況下什么也不做。每個(gè)塊IF至多有一條ELSE語句和一個(gè)ELSE塊。沒有ELSE塊的時(shí)候,ELSE語句可有可無。一個(gè)塊IF中可以沒有也可以有一條或多條Elseif語句,省略ELSEIF塊時(shí),Elseif語句可有可無。被省略的塊也可以理解為空塊。塊IF中最多只有一個(gè)塊被執(zhí)行,在省略ELSE語句的情況下,有可能什么也不做。§2.2.2.1

塊IF的幾種形式因各個(gè)塊都可省略,塊IF常以較簡(jiǎn)單的形式出現(xiàn)

形式一:只有IF塊

IF(E)THEN

一條或多條執(zhí)行語句ENDIFEIF塊真假形式二:只有ELSE塊IF(E)THENELSE

一條或多條執(zhí)行語句ENDIFEELSE塊真假形式二實(shí)際是形式一的變種IF(.NOT.E)THEN

一條或多條執(zhí)行語句ENDIF.NOT.ETHEN塊真假§2.2.2.2

塊IF編程例題例:輸入三條邊的長(zhǎng)度,計(jì)算三角形面積。簡(jiǎn)要程序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)thenprint*,‘不能構(gòu)成三角形!’stop12345elses=(a+b+c)*0.5s=sqrt(s*(s-a)*(s-b)*(s-c))print*,‘三角形邊長(zhǎng):’,a,b,c,‘面積:’,sendifend

y=例:計(jì)算分段函數(shù)的值0x<-102x+20-10≤x<0200≤x<2030-0.5x20≤x<4050-x40≤x<500x≥50簡(jiǎn)要程序:read(*,*)xif(x.lt.–10)theny=0elseif(x.lt.0)theny=2*x+20elseif(x.lt.20)theny=20elseif(x.lt.40)theny=30-0.5*xelseif(x.lt.50)theny=50-xelsey=0endifend§2.2.2.3

塊IF的嵌套塊IF中各塊里的執(zhí)行語句都可以出現(xiàn)又一個(gè)塊IF結(jié)構(gòu),稱為塊IF的嵌套。塊IF的嵌套理論上可以有無窮層。塊IF結(jié)構(gòu)是由塊IF語句和ENDIF語句括起來的一段程序。塊IF嵌套中的IF與ENDIF必須成對(duì)出現(xiàn),這是顯而易見的。ENDIF與IF總是就近配對(duì)。應(yīng)該推敲算法,減少塊IF嵌套的層數(shù)。因?yàn)閴KIF嵌套太深會(huì)導(dǎo)致程序結(jié)構(gòu)復(fù)雜,可讀性降低。可選部分如果有,就必須與關(guān)鍵字用空格分開。為提高塊IF嵌套結(jié)構(gòu)的程序可讀性,可以給塊IF結(jié)構(gòu)取名,其一般用法為:named_if_block:if(e)thenstatementselse[named_if_block]statementsendif[named_if_block]例:輸入點(diǎn)P(x,y)的坐標(biāo),判別P點(diǎn)在第幾象限。簡(jiǎn)要程序read(*,*)

x,yif(x.gt.0)thenif(y.gt.0)thenprint*,‘p點(diǎn)在第一象限’

elseprint*,‘p點(diǎn)在第四象限’

endifelseif(y.gt.0)thenprint*,‘p點(diǎn)在第二象限’

elseprint*,‘p點(diǎn)在第三象限’

endifendifend未考慮正好在坐標(biāo)軸上的情形例:將學(xué)生的成績(jī)分為a(g≥90),b(80≤g<90),c(70≤g<80),d(60≤g<70),e(g<60)五等.程序?yàn)?integergread*,gif(g>=90)thenprint*,’a’elseif(g>=80)thenprint*,’b’elseif(g>=70)thenprint*,’c’elseif(g>=60)thenprint*,’d’elseprint*,’e’endifend例:閱讀程序,寫出程序的運(yùn)行結(jié)果程序1logicalp,qread(*,’(1x,2l4)’)p,qx=0;y=0if(p)x=1.0if(q)y=1.0write(*,*)x,yend當(dāng)從鍵盤輸入ffttffttfftt,則x,y的值為

_________.

程序2read*,xif(x<0)theny=0.0elseif(x<15)theny=1.0elseif(x<30)theny=2.0elsey=3.0endifwrite(*,*)yend當(dāng)x=-12,12,22,32時(shí),對(duì)應(yīng)的y值各為多少。§2.3CASE結(jié)構(gòu)

對(duì)多重分支選擇結(jié)構(gòu),可以用CASE結(jié)構(gòu)描述,比起塊IF嵌套結(jié)構(gòu)來,更加直觀簡(jiǎn)潔。§2.3.1CASE結(jié)構(gòu)的形式

CASE結(jié)構(gòu)一般形式:Selectcase(case_exp)case(case_selector1)CASE塊statementscase(case_selector2)CASE塊statements….[casedefaultDEFAULT塊statements]EndSelect

Selectcase與EndSelect是CASE結(jié)構(gòu)的入口和出口,必須成對(duì)出現(xiàn)CASE表達(dá)式case_exp可以是整型、邏輯型與字符型,但不可以用實(shí)型或復(fù)型表達(dá)式CASE選擇器必須與CASE表達(dá)式類型一致CASE塊可多可少,可以省略。CASEDEFAULT語句應(yīng)不多于一條,并應(yīng)放在所有CASE語句之后。CASE選擇器是整數(shù)時(shí),可以有多種表示法:case(1),case(1,3,5),case(1:5,9,6)case(100:200)case(100:)case(:120)§2.3.2CASE結(jié)構(gòu)的執(zhí)行過程

計(jì)算CASE表達(dá)式的值依次比較CASE選擇器的值與CASE表達(dá)式的值,如果找到相等的就執(zhí)行相應(yīng)的CASE塊,否則就執(zhí)行DEFAULT塊?!?.3.3CASE結(jié)構(gòu)的命名CASE結(jié)構(gòu)命名方式與塊IF結(jié)構(gòu)相仿:Case結(jié)構(gòu)名:Selectcase(case_exp)case(case_selector1)[Case結(jié)構(gòu)名]CASE塊statementscase(case_selector2)[Case結(jié)構(gòu)名]CASE塊statements….

溫馨提示

  • 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)論