結(jié)構(gòu)化程序設(shè)計控制結(jié)構(gòu)_第1頁
結(jié)構(gòu)化程序設(shè)計控制結(jié)構(gòu)_第2頁
結(jié)構(gòu)化程序設(shè)計控制結(jié)構(gòu)_第3頁
結(jié)構(gòu)化程序設(shè)計控制結(jié)構(gòu)_第4頁
結(jié)構(gòu)化程序設(shè)計控制結(jié)構(gòu)_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第四章結(jié)構(gòu)化程序設(shè)計—控制結(jié)構(gòu)第四章結(jié)構(gòu)化程序設(shè)計—控制結(jié)構(gòu)結(jié)構(gòu)化程序設(shè)計:按照順序結(jié)構(gòu)、選擇〔分支〕結(jié)構(gòu)和循環(huán)結(jié)構(gòu)進(jìn)行程序設(shè)計,稱為結(jié)構(gòu)化程序設(shè)計。任何復(fù)雜的算法都可以由以上三種根本結(jié)構(gòu)來實現(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è)計真正跨入結(jié)構(gòu)化階段。本章著重講解選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。第一節(jié)IF語句IF語句是最早的選擇結(jié)構(gòu),構(gòu)造形式為:IF〔邏輯判斷式〕Then…………EndIf流程說明:邏輯成立時,才會執(zhí)行IF塊里面的程序代碼例4-1警告車速過快的程序

PROGRAMEX0401IMPLICITNONEREAL(KIND=4)::SPEEDWRITE(*,*)"SPEED:"!信息提示

READ(*,*)SPEED!讀入車速

IF(SPEED>100.0)THEN!SPEED>100時才會執(zhí)行下面這一行程序

WRITE(*,*)"SLOWDOWN."ENDIFSTOPEND

IF語句IF命令還可以搭配上ELSE,用來賦值當(dāng)判斷式不成立時,會去執(zhí)行某一段程序代碼。IF(邏輯判斷式)THEN…………邏輯成立時,執(zhí)行這一段程序代碼……ELSE…………邏輯不成立時,那么執(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,會執(zhí)行下面的程序

WRITE(*,*)"TOOFAT!"ELSE!如果體重不大于身高減去100,會執(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)先級由高到低依次為:算術(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成立時,執(zhí)行這個模塊程序

……ELSEIF(條件2)THEN……條件2成立時,執(zhí)行這個模塊程序

……ELSEIF(條件3)THEN……條件3成立時,執(zhí)行這個模塊程序

…………ELSEIF(條件4)THEN……條件4成立時,執(zhí)行這個模塊程序

……ELSE!ELSE這個模塊可以省略

……每個條件都不成立時,才執(zhí)行這個模塊程序

……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!會執(zhí)行到此,代表SCORE<=100GRADE='A'ELSEIF(SCORE>=80)THEN!會執(zhí)行到此,代表SCORE<=90GRADE='B'ELSEIF(SCORE>=70)THEN!會執(zhí)行到此,代表SCORE<=80GRADE='C'ELSEIF(SCORE>=60)THEN!會執(zhí)行到此,代表SCORE<=70GRADE='D'ELSEIF(SCORE>=0)THEN!會執(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時,代表有解WRITE(*,"('第',I1,'象限')")ANSELSEWRITE(*,*)"落在軸上"ENDIF!STOPEND第二節(jié)浮點數(shù)及字符的邏輯運(yù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ù)是:比較它們的字符碼,因為在保存字符時,事實上就是保存它的字符碼?!產(chǎn)’<‘b’!因為a的ASCII碼為97,b的ASCII碼為98‘A’<’a’!因為A的ASCII碼為65,a的ASCII碼97其他流程控制GOTO命令例4-14PROGRAMEX0414IMPLICITNONEREALHEIGHT!記錄身高

REALWEIGHT!記錄體重

WRITE(*,*)"HEIGHT:"READ(*,*)HEIGHT!讀入身高

WRITE(*,*)"WEIGHT:"READ(*,*)HEIGHT!讀入體重

IF(WEIGHT>HEIGHT-100)GOTO200!上面不成立,沒有跳到200才會執(zhí)行這里

WRITE(*,*)"UNDERCONTROL."GOTO300!下一行不能執(zhí)行所以要跳到300200WRITE(*,*)"TOOFAT!"300STOPENDPAUSE,CONTINUE,STOPPAUSE的功能就跟它的字面意義相同,程序執(zhí)行到PAUSE時,會暫停執(zhí)行,直到用戶按下Enter鍵才會繼續(xù)執(zhí)行。這可以應(yīng)用

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論