




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第四章結(jié)構(gòu)化程序設(shè)計(jì)—控制結(jié)構(gòu)第四章結(jié)構(gòu)化程序設(shè)計(jì)—控制結(jié)構(gòu)結(jié)構(gòu)化程序設(shè)計(jì):按照順序結(jié)構(gòu)、選擇〔分支〕結(jié)構(gòu)和循環(huán)結(jié)構(gòu)進(jìn)行程序設(shè)計(jì),稱為結(jié)構(gòu)化程序設(shè)計(jì)。任何復(fù)雜的算法都可以由以上三種根本結(jié)構(gòu)來實(shí)現(xiàn)。早期的Fortran程序只有順序結(jié)構(gòu)和以IF語句為代表的選擇結(jié)構(gòu),由于沒有循環(huán)結(jié)構(gòu),需要在程序中添加GOTO無條件轉(zhuǎn)移語句,程序的可讀性和可維護(hù)性差。IF塊〔條件轉(zhuǎn)移〕的添加和循環(huán)結(jié)構(gòu),使得Fortran程序設(shè)計(jì)真正跨入結(jié)構(gòu)化階段。本章著重講解選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。第一節(jié)IF語句IF語句是最早的選擇結(jié)構(gòu),構(gòu)造形式為:IF〔邏輯判斷式〕Then…………EndIf流程說明:邏輯成立時(shí),才會(huì)執(zhí)行IF塊里面的程序代碼例4-1警告車速過快的程序
PROGRAMEX0401IMPLICITNONEREAL(KIND=4)::SPEEDWRITE(*,*)"SPEED:"!信息提示
READ(*,*)SPEED!讀入車速
IF(SPEED>100.0)THEN!SPEED>100時(shí)才會(huì)執(zhí)行下面這一行程序
WRITE(*,*)"SLOWDOWN."ENDIFSTOPEND
IF語句IF命令還可以搭配上ELSE,用來賦值當(dāng)判斷式不成立時(shí),會(huì)去執(zhí)行某一段程序代碼。IF(邏輯判斷式)THEN…………邏輯成立時(shí),執(zhí)行這一段程序代碼……ELSE…………邏輯不成立時(shí),那么執(zhí)行這一段程序代碼……ENDIF例4-2PROGRAMEX0402IMPLICITNONEREAL(KIND=4)::HEIGHT!記錄身高
REAL(KIND=4)::WEIGHT!記錄體重
WRITE(*,*)"HEIGHT:"READ(*,*)HEIGHT!讀入身高
WRITE(*,*)"WEIGHT:"READ(*,*)WEIGHT!讀入體重
IF(WEIGHT>HEIGHT-100)THEN!如果體重大于身高減去100,會(huì)執(zhí)行下面的程序
WRITE(*,*)"TOOFAT!"ELSE!如果體重不大于身高減去100,會(huì)執(zhí)行下面的程序
WRITE(*,*)"UNDERCONTROL."ENDIF
STOPEND二.邏輯運(yùn)算選擇結(jié)構(gòu)中的條件判別式由邏輯表達(dá)式組成。邏輯表達(dá)式中的運(yùn)算符,包括算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符。*算術(shù)運(yùn)算符:在第2章介紹過;*關(guān)系運(yùn)算符:==(.EQ.);/=(.NE.);>(.GT.);>=(.GE.);<(.LT.);<=(.LE.)*邏輯運(yùn)算符:.NOT.;.AND.;.OR.;.EQV.;.NEQV.;.XOR.優(yōu)先級(jí)由高到低依次為:算術(shù)運(yùn)算符,關(guān)系運(yùn)算符和邏輯運(yùn)算符。例4-3PROGRAMEX0403IMPLICITNONEINTEGERRAIN,WINDSPEEDWRITE(*,*)"RAIN:"READ(*,*)RAINWRITE(*,*)"WIND:"READ(*,*)WINDSPEED
IF(RAIN>=500.OR.WINDSPEED>=10)THENWRITE(*,*)"停止上班上課"ELSEWRITE(*,*)"照常上班上課"ENDIFSTOPEND
運(yùn)算符的使用邏輯A邏輯BA.AND.BTrueTrueTrueTrueFalseFalseFalseTrueFalseFalseFalseFalse邏輯A邏輯BA.OR.BTRUETRUETRUETRUEFALSETRUEFALSETRUETRUEFALSEFALSEFALSE邏輯A.NOT.ATRUEFALSEFALSETRUE邏輯A邏輯BA.EQV.BTRUETRUETRUETRUEFALSEFALSEFALSETRUEFALSEFALSEFALSETRUE三.多重判斷IF-ELSEIFIF(條件1)THEN……條件1成立時(shí),執(zhí)行這個(gè)模塊程序
……ELSEIF(條件2)THEN……條件2成立時(shí),執(zhí)行這個(gè)模塊程序
……ELSEIF(條件3)THEN……條件3成立時(shí),執(zhí)行這個(gè)模塊程序
…………ELSEIF(條件4)THEN……條件4成立時(shí),執(zhí)行這個(gè)模塊程序
……ELSE!ELSE這個(gè)模塊可以省略
……每個(gè)條件都不成立時(shí),才執(zhí)行這個(gè)模塊程序
……ENDIF例4-5PROGRAMEX0405IMPLICITNONEINTEGERSCORECHARACTERGRADEWRITE(*,*)"SCORE:"READ(*,*)SCORE
IF(SCORE>=90.AND.SCORE<=100)THENGRADE='A'ELSEIF(SCORE>=80.AND.SCORE<=90)THENGRADE='B'ELSEIF(SCORE>=70.AND.SCORE<=80)THENGRADE='C'ELSEIF(SCORE>=60.AND.SCORE<=70)THENGRADE='D'ELSEIF(SCORE>=0.AND.SCORE<=60)THENGRADE='E'ELSE!SCORE<0或SCORE>100的不合理情況
GRADE='?'ENDIF
WRITE(*,"('GRADE:',A1)")GRADESTOPEND
例4-6PROGRAMEX0406IMPLICITNONEINTEGERSCORECHARACTERGRADEWRITE(*,*)"SCORE:"READ(*,*)SCORE
IF(SCORE>100)THENGRADE='?'ELSEIF(SCORE>=90)THEN!會(huì)執(zhí)行到此,代表SCORE<=100GRADE='A'ELSEIF(SCORE>=80)THEN!會(huì)執(zhí)行到此,代表SCORE<=90GRADE='B'ELSEIF(SCORE>=70)THEN!會(huì)執(zhí)行到此,代表SCORE<=80GRADE='C'ELSEIF(SCORE>=60)THEN!會(huì)執(zhí)行到此,代表SCORE<=70GRADE='D'ELSEIF(SCORE>=0)THEN!會(huì)執(zhí)行到此,代表SCORE<=60GRADE='E'ELSEGRADE='?'ENDIF
WRITE(*,"('GRADE:',A1)")GRADESTOPEND
四.嵌套IF語句IF語句的嵌套IF(……)THEN第1層IF開始IF(……)THEN第2層IF開始IF(……)THEN第3層IF開始ELSEIF(……)THENELSEENDIF第3層IF結(jié)束
ENDIF第2層IF結(jié)束ENDIF第1層IF結(jié)束例4-8判斷象限
PROGRAMEX0408IMPLICITNONEREALX,YINTEGERANS
WRITE(*,*)"INPUT(X,Y)"READ(*,*)X,Y
IF(X>0)THENIF(Y>0)THEN!X>0,Y>0ANS=1ELSEIF(Y<0)THEN!X>0,Y<0ANS=4ELSE!X>0,Y=0ANS=0ENDIFELSEIF(X<0)THENIF(Y>0)THEN!X<0,Y>0ANS=2ELSEIF(Y<0)THEN!X<0,Y<0ANS=3ELSE!X<0,Y=0ANS=0ENDIF
續(xù)ELSE!X=0,Y=任意數(shù)ANS=0ENDIF
IF(ANS/=0)THEN!ANS不為0時(shí),代表有解WRITE(*,"('第',I1,'象限')")ANSELSEWRITE(*,*)"落在軸上"ENDIF!STOPEND第二節(jié)浮點(diǎn)數(shù)及字符的邏輯運(yùn)算浮點(diǎn)數(shù)的邏輯判斷例4-9PROGRAMEX0409IMPLICITNONEREAL::AREAL::B=3.0
A=SQRT(B)**2-B!理論上A應(yīng)該要等于0
IF(A==0.0)THEN
WRITE(*,*)"A等于0"ELSEWRITE(*,*)"A不等于0"ENDIFSTOPEND
例4-10PROGRAMEX0410IMPLICITNONEREALAREAL::B=4.0REAL,PARAMETER::E=0.0001!設(shè)置誤差范圍
A=SQRT(B)**2-B!理論上A應(yīng)該要等于0
IF(ABS(A-0.0)<=E)THEN
WRITE(*,*)"A等于0"ELSEWRITE(*,*)"A不等于0"ENDIFEND二、字符的邏輯判斷比較字符大小的依據(jù)是:比較它們的字符碼,因?yàn)樵诒4孀址麜r(shí),事實(shí)上就是保存它的字符碼。‘a(chǎn)’<‘b’!因?yàn)閍的ASCII碼為97,b的ASCII碼為98‘A’<’a’!因?yàn)锳的ASCII碼為65,a的ASCII碼97其他流程控制GOTO命令例4-14PROGRAMEX0414IMPLICITNONEREALHEIGHT!記錄身高
REALWEIGHT!記錄體重
WRITE(*,*)"HEIGHT:"READ(*,*)HEIGHT!讀入身高
WRITE(*,*)"WEIGHT:"READ(*,*)HEIGHT!讀入體重
IF(WEIGHT>HEIGHT-100)GOTO200!上面不成立,沒有跳到200才會(huì)執(zhí)行這里
WRITE(*,*)"UNDERCONTROL."GOTO300!下一行不能執(zhí)行所以要跳到300200WRITE(*,*)"TOOFAT!"300STOPENDPAUSE,CONTINUE,STOPPAUSE的功能就跟它的字面意義相同,程序執(zhí)行到PAUSE時(shí),會(huì)暫停執(zhí)行,直到用戶按下Enter鍵才會(huì)繼續(xù)執(zhí)行。這可以應(yīng)用
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 外墻涂料購銷合同書
- 2025年安徽財(cái)貿(mào)職業(yè)學(xué)院單招職業(yè)傾向性考試題庫附答案
- 市場營銷策略實(shí)戰(zhàn)應(yīng)用作業(yè)指導(dǎo)書
- 項(xiàng)目策劃與管理操作手冊(cè)
- 2025年安徽城市管理職業(yè)學(xué)院單招職業(yè)技能考試題庫匯編
- 2025年內(nèi)蒙古貨運(yùn)車從業(yè)資格證考試內(nèi)容
- 建筑總承包合同書
- 建設(shè)工程施工承包協(xié)議書
- 招投標(biāo)管理論文
- 代理銷售指定產(chǎn)品合同書
- 油缸裝配作業(yè)指導(dǎo)書
- 2022年濟(jì)南工程職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)考試筆試試題及答案解析
- 初中數(shù)學(xué)競賽試題匯編
- 湖南非稅在線繳費(fèi)操作步驟
- GB∕Z 27735-2022 野營帳篷
- 《法院執(zhí)行實(shí)務(wù)》單元三(上)(課堂PPT)課件
- 高分子材料研究方法 X 射線法
- 【課件】第二單元第三節(jié)漢族民歌課件-2021-2022學(xué)年高中音樂人音版(2019)必修音樂鑒賞
- 高中人音版必修 音樂鑒賞20人民音樂家課件
- 風(fēng)電齒輪箱講義(20151010)
- 小組合作學(xué)習(xí)評(píng)價(jià)量化表
評(píng)論
0/150
提交評(píng)論