版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第四講選擇結(jié)構(gòu)及基本語句1長安大學(xué)地學(xué)信息技術(shù)研究所4.1概述順序結(jié)構(gòu)程序特點(diǎn):程序自上而下按語句順序逐句執(zhí)行。是三大結(jié)構(gòu)之一。選擇結(jié)構(gòu)程序特點(diǎn):根據(jù)條件判定結(jié)果決定語句執(zhí)行順序。是三大結(jié)構(gòu)之一。FORTRAN90提供IF和SELECT語句來實(shí)現(xiàn)選擇結(jié)構(gòu)。示例:輸入學(xué)生成績,判定合格與否,輸出判定結(jié)果。
PROGRAMexam4_1CHARACTER*6gradeWRITE(*,“(‘輸入學(xué)生成績:’\)”)READ(*,*)s
IF(s>=60)THENgrade=‘合格’
ELSEgrade=‘不合格’
ENDIFWRITE(*,*)‘該學(xué)生成績’,grade,‘?!?/p>
ENDprograms≥60假真輸出grade結(jié)束開始輸入成績s“合格”grade“不合格”grade2長安大學(xué)地學(xué)信息技術(shù)研究所4.2邏輯IF語句邏輯IF語句語法:
<邏輯IF語句>→IF(<邏輯表達(dá)式e>)<語句S>
其中:e為邏輯表達(dá)式或關(guān)系表達(dá)式。
S為賦值語句、輸入輸出語句、STOP、EXIT等可執(zhí)行語句。邏輯IF語句功能:先求e值,為真(.TRUE.),執(zhí)行語句S。示例:
READ(*,*)i,jIF(i<j)WRITE(*,*)IWRITE(*,*)‘邏輯IF語句執(zhí)行結(jié)束?!?/p>
END
輸入:125,200
輸出:125
邏輯IF語句執(zhí)行結(jié)束。輸入:200,125輸出:邏輯IF語句結(jié)束。3長安大學(xué)地學(xué)信息技術(shù)研究所邏輯IF語句中的可執(zhí)行語句S只允許是一條語句。語句S可為賦值語句、I/O語句、STOP、EXIT、CYCLE、GOTO語句。語句S不可為END、IF、DO、ELSEIF、ENDIF語句,及非執(zhí)行語句。邏輯表達(dá)式e兩邊必須有圓括號。合法邏輯IF語句:IF(A.GT.Max)Max=AIF(A>B)READ(*,*)AIF(X.EQ.10.0)WRITE(*,*)XIF(ABS(A-B)<1E-7)STOPIF(A>B)EXITIF(SUM.LT.100.0)G0TO10非法邏輯IF語句:IF(B.LT.100.0)IF(B.GE.80)A=B
IF(X.GT.100.0)ENDIF(A>B)T=AA=BB=TIF(A>B.AND.A>C)DATAA/8/IF(A>B.AND.A>C)IFA.GT.MaxMax=A
4長安大學(xué)地學(xué)信息技術(shù)研究所[例4.1]已知三個(gè)整數(shù)A,B,C,輸入其值并打印三個(gè)數(shù)中最大值。
解:根據(jù)題意設(shè)計(jì)算法并畫程序流程圖,如圖4-2所示。程序:
INTEGERA,B,C,maxWRITE(*,“(‘請輸入三個(gè)整數(shù):’\)”)READ(*,*)A,B,Cmax=AIF(B>max)max=BIF(C>max)max=CWRITE(*,100)max100FORMAT(1X,'max=',I5)END輸入:請輸入三個(gè)實(shí)數(shù):12,100,22↙輸出:max=100
結(jié)束max=AB>max真假max=BC>max假真max=C輸出max輸入:A,B,C5長安大學(xué)地學(xué)信息技術(shù)研究所4.3塊IF語句基本塊IF語句語法:
<基本塊IF語句>→IF(<邏輯表達(dá)式e>)THEN[<THEN語句體>][ELSE[<ELSE語句體>]]ENDIF<基本塊IF語句>→IF(<邏輯表達(dá)式e>)THEN[<THEN語句體>]ENDIF<THEN語句體>→{<可執(zhí)行語句>}
<ELSE語句體>→{<可執(zhí)行語句>}
基本塊IF語句功能:先求e值,為真,執(zhí)行<THEN語句體>,
為假,執(zhí)行<ELSE語句體>。<THEN語句體>和<ELSE語句體>為一程序段(語句序列)。6長安大學(xué)地學(xué)信息技術(shù)研究所選擇結(jié)構(gòu)有三種類型:雙邊結(jié)構(gòu)、單邊結(jié)構(gòu)1、單邊結(jié)構(gòu)2。真假THEN語句體eELSE語句體雙邊選擇結(jié)構(gòu)ENDIFENDIF真假eTHEN語句體單邊選擇結(jié)構(gòu)1ENDIF真假eELSE語句體單邊選擇結(jié)構(gòu)2IF(e)THEN
<THEN語句體>ELSE<ELSE語句體>ENDIFIF(e)THEN<THEN語句體>ENDIFIF(e)THENELSE<ELSE語句體>ENDIFIF(.NOT.e)THEN<ELSE語句體>ENDIF7長安大學(xué)地學(xué)信息技術(shù)研究所[例4.2]輸入一個(gè)整數(shù),判斷它是奇數(shù)還是偶數(shù),并打印輸出。解:根據(jù)題意設(shè)計(jì)算法并畫程序流程圖,如圖4-4所示。程序:
10FORMAT(1X,I5,'ISAEVENNUMBER.')20FORMAT(1X,I5,'ISAODDNUMBER.')WRITE(*,*)'PLEASEINPUTAINTEGERNUMBER:‘READ(*,*)NIF(MOD(N,2)=
=0)THENWRITE(*,10)NELSEWRITE(*,20)NENDIF
END輸入:77↙
輸出:77ISAODDNUMBER.假打印奇數(shù)輸入N結(jié)束MOD(N,2)=
=0打印偶數(shù)真8長安大學(xué)地學(xué)信息技術(shù)研究所多支塊IF語句語法:
<多支塊IF語句>→IF(<邏輯表達(dá)式e1>)THEN[<語句體1>]ELSEIF(<邏輯表達(dá)式e2>)THEN[<語句體2>]ELSEIF(<邏輯表達(dá)式e3>)THEN[<語句體3>]……ELSEIF(<邏輯表達(dá)式en>)THEN[<語句體n>][ELSE[<語句體n+1>]]ENDIF功能:求ei值,為真,執(zhí)行<語句體i>,均為假,執(zhí)行<語句體n+1>。9長安大學(xué)地學(xué)信息技術(shù)研究所給定一學(xué)生成績S,評判該學(xué)生等級,并輸出評判結(jié)果。評判標(biāo)準(zhǔn):優(yōu):90≤S≤100;良:80≤S<90;中:70≤S<80及格:60≤S<70;不及格:S<60解:根據(jù)題意設(shè)計(jì)算法并畫程序流程圖,如下圖所示。有三個(gè)等價(jià)程序可求解這一問題。輸出“優(yōu)”輸出“良”輸出“中”輸出“及”輸出“不及”S<60真假S<70真假S<80真假S<90真假10長安大學(xué)地學(xué)信息技術(shù)研究所
!程序一WRITE(*,“(‘輸入學(xué)生成績:’\)”)READ(*,*)SIF(S<60)WRITE(*,*)‘該學(xué)生成績?yōu)椋翰患案??!疘F(S>=60.AND.S<70)WRITE(*,*)‘該學(xué)生成績?yōu)椋杭案??!疘F(S>=70.AND.S<80)WRITE(*,*)‘該學(xué)生成績?yōu)椋褐??!疘F(S>=80.AND.S<90)WRITE(*,*)‘該學(xué)生成績?yōu)椋毫??!疘F(S>=90)WRITE(*,*)‘該學(xué)生成績?yōu)椋簝?yōu)?!疎ND11長安大學(xué)地學(xué)信息技術(shù)研究所
!程序二WRITE(*,“(‘輸入學(xué)生成績:’\)”)READ(*,*)SIF(S<60)THENWRITE(*,*)‘該學(xué)生成績?yōu)椋翰患案??!疎LSEIF(S<70)THENWRITE(*,*)‘該學(xué)生成績?yōu)椋杭案??!疎LSEIF(S<80)THENWRITE(*,*)‘該學(xué)生成績?yōu)椋褐??!疎LSEIF(S<90)THENWRITE(*,*)‘該學(xué)生成績?yōu)椋毫?。’ELSEwrite(*,*)‘該學(xué)生成績?yōu)椋簝?yōu)?!疎NDIFENDIFENDIFENDIFEND12長安大學(xué)地學(xué)信息技術(shù)研究所READ(*,*)S!程序三IF(S<60)THENwrite(*,*)‘該學(xué)生成績?yōu)椋翰患案??!疎LSEIF(S<70)THENwrite(*,*)‘該學(xué)生成績?yōu)椋杭案??!疎LSEIF(S<80)THENwrite(*,*)‘該學(xué)生成績?yōu)椋褐??!疎LSEIF(S<90)THENwrite(*,*)‘該學(xué)生成績?yōu)椋毫??!疎LSEwrite(*,*)‘該學(xué)生成績?yōu)椋簝?yōu)?!疎NDIFEND13長安大學(xué)地學(xué)信息技術(shù)研究所嵌套塊IF:指塊IF語句中又包含塊IF語句,可有多層嵌套。對于嵌套塊IF,內(nèi)外層塊IF語句體不能相互交叉。塊IF語句可命名,在嵌套塊IF中,可對內(nèi)外層塊IF語句進(jìn)行命名。
示例:求解方程ax2+bx+c=0,需要檢查是否a=0,防止除0溢出。
Disc=b*b—4*a*c
Outer:IF(a/=0)THEN
Inner:IF(Disc<0)THENWRITE(*,*)'Complexroots‘ELSEInnerX1=(-b+SQRT(Disc))/(2*a)X2=(-b-SQRT(Disc))/(2*a)ENDIFInner
ENDIFOuter
14長安大學(xué)地學(xué)信息技術(shù)研究所MS-FORTRAN90引入類似PASCAL和C語言中塊CASE結(jié)構(gòu)的新功能。CASE結(jié)構(gòu)功能:計(jì)算表達(dá)式值,從多個(gè)分支中選擇一分支執(zhí)行。
<SELECT語句>→SELECTCASE(<表達(dá)式e>)CASE(<控制集合1>)<語句體1>CASE(<控制集合2>)<語句體2>……CASE(<控制集合n>)<語句體n>[CASEDEFAULT<語句體n+1>]ENDSELECT<控制集合>→<元素>[:<元素>]{,<元素>[:<元素>]}
集合表示示例:1,5,7-91,3,5,7,9125,250,375,500‘pen’,’pencil’,’desk’‘A’,’B’,’C’,’D’.TRUE.15長安大學(xué)地學(xué)信息技術(shù)研究所給定學(xué)生成績S,評定優(yōu)、良、中、及格、不及格等級,并輸出。
INTEGER(1)SREAD(*,*)SSELECTCASE(INT(S))CASE(90:100)WRITE(*,*)‘該學(xué)生成績?yōu)椋簝?yōu)?!?/p>
CASE(80:89)WRITE(*,*)‘該學(xué)生成績?yōu)椋毫??!?/p>
CASE(70:79)WRITE(*,*)‘該學(xué)生成績?yōu)椋褐??!?/p>
CASE(60:69)WRITE(*,*)‘該學(xué)生成績?yōu)椋杭案??!?/p>
CASE(0:59)WRITE(*,*)‘該學(xué)生成績?yōu)椋翰患案??!?/p>
ENDSELECTCASEDEFAULT
ENDWRITE(*,*)‘輸入成績數(shù)據(jù)錯(cuò)?。?!'
16長安大學(xué)地學(xué)信息技術(shù)研究所4.4選擇結(jié)構(gòu)程序設(shè)計(jì)舉例[例4.4]任意輸入一個(gè)整數(shù)N(N≥2),確定N是否為素?cái)?shù),輸出判定結(jié)果。解:對于整數(shù)N,若為偶數(shù),則一定不是素?cái)?shù);若為奇數(shù),從K=3至√N(yùn)+1,逐個(gè)測試MOD(N,K)是否為零,若有一次為零,則N不是素?cái)?shù),否則N為素?cái)?shù)。LOGICAL::FLAG=.TRUE.READ(*,*)NSELECTCASE(N)CASE(2)WRITE(*,*)'2是素?cái)?shù)。'CASE(3:)IF(MOD(N,2)=
=0)THENWRITE(*,200)NSTOPENDIFM=INT(SQRT(FLOAT(N))+1)DOK=3,M,2IF(MOD(N,K)=
=0)FLAG=.FALSE.ENDDO
IF(FLAG)THENWRITE(*,100)NELSEWRITE(*,200)NENDIFCASEDEFAULTWRITE(*,*)‘?dāng)?shù)據(jù)輸入不正確?!疎NDSELECT100FORMAT(1X,I4,‘是素?cái)?shù)?!?200FORMAT(1X,I4,‘不是素?cái)?shù)?!?END17長安大學(xué)地學(xué)信息技術(shù)研究所[例4.5]求解方程Ax2+Bx+C=0。A,B,C由鍵盤輸入,計(jì)算且輸出方程解。
(1)A=0,B≠0;(方程只有一個(gè)解)(2)A=0,B=0,C=0;(方程有無窮個(gè)解)(3)A=0,B=0,C≠0;(方程無解)(4)A≠0,B2-4AC>0;(方程有二個(gè)不同的實(shí)數(shù)解)(5)A≠0,B2-4AC=0;(方程有二個(gè)相同的實(shí)數(shù)解)(6)A≠0,B2-4AC<0;(方程有二個(gè)不同的復(fù)數(shù)解)解:依題意設(shè)計(jì)算法,并畫流程圖(盒圖或PAD圖)。
程序:輸入:1.0,1.0,-2.0↙
輸出:X1=1.000000X2=-2.000000
18長安大學(xué)地學(xué)信息技術(shù)研究所真假C/=0假真輸出:無窮解輸出:無解輸出:有1解XR=-B/2AD0=SQRT(D)XI=SQRT(-D)/2AX1=(-B+D0)/2AX2=(-B-D0)/2AD=B2-4AC輸出:XR,XI輸出:X1,X2輸入A,B,C開始A=0假真B/=0假真結(jié)束D<019長安大學(xué)地學(xué)信息技術(shù)研究所WRITE(*,*)'PLEASEINPUTA,B,C‘READ(*,*)A,B,CD=B*B-4*A*CIF(A==0)THENIF(B/=0)THENWRITE(*,*)'只有一個(gè)解:',C/BELSEIF(C/=0)THEN
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025中國建筑股份限公司崗位招聘1人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國華能集團(tuán)限公司華能核能技術(shù)研究院限公司招聘50人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國人壽神農(nóng)架支公司招聘10人(湖北)高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中共北京市委黨校公開招聘應(yīng)屆畢業(yè)生11人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年陜西商洛市事業(yè)單位招聘工作人員278人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年聯(lián)考筆試實(shí)錘這幾省份明確會參加高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年湖北事業(yè)單位10.27聯(lián)考(1337人)高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年浙江麗水市青田縣招聘88名國企業(yè)工作人員高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年山東青島市市北區(qū)部分事業(yè)單位招聘23人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年四川省內(nèi)江東興區(qū)部分事業(yè)單位考聘89人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 淮安市2023-2024學(xué)年七年級上學(xué)期期末歷史試卷(含答案解析)
- 培養(yǎng)學(xué)生深度思考的能力
- 醫(yī)院感染管理培訓(xùn)課件:內(nèi)鏡操作中的感染控制要點(diǎn)
- 美容皮膚科培訓(xùn)課件
- 《傳染病及預(yù)防》教學(xué)設(shè)計(jì)
- 高中研究性課題報(bào)告環(huán)境保護(hù)
- 25題電控工程師崗位常見面試問題含HR問題考察點(diǎn)及參考回答
- 天津市西青區(qū)2023-2024學(xué)年八年級上學(xué)期期末數(shù)學(xué)達(dá)標(biāo)卷(含答案)
- 社會心理學(xué)理論考試試題及答案
- 國開2023秋《電子商務(wù)概論》實(shí)踐任務(wù)B2B電子商務(wù)網(wǎng)站調(diào)研報(bào)告參考答案
- 國家開放大學(xué)《個(gè)人理財(cái)》形考任務(wù)1-4
評論
0/150
提交評論