結構化程序設計控制結構_第1頁
結構化程序設計控制結構_第2頁
結構化程序設計控制結構_第3頁
結構化程序設計控制結構_第4頁
結構化程序設計控制結構_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第四章結構化程序設計—控制結構第四章結構化程序設計—控制結構結構化程序設計:按照順序結構、選擇〔分支〕結構和循環(huán)結構進行程序設計,稱為結構化程序設計。任何復雜的算法都可以由以上三種根本結構來實現。早期的Fortran程序只有順序結構和以IF語句為代表的選擇結構,由于沒有循環(huán)結構,需要在程序中添加GOTO無條件轉移語句,程序的可讀性和可維護性差。IF塊〔條件轉移〕的添加和循環(huán)結構,使得Fortran程序設計真正跨入結構化階段。本章著重講解選擇結構和循環(huán)結構。第一節(jié)IF語句IF語句是最早的選擇結構,構造形式為: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,用來賦值當判斷式不成立時,會去執(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二.邏輯運算選擇結構中的條件判別式由邏輯表達式組成。邏輯表達式中的運算符,包括算術運算符、關系運算符和邏輯運算符。*算術運算符:在第2章介紹過;*關系運算符:==(.EQ.);/=(.NE.);>(.GT.);>=(.GE.);<(.LT.);<=(.LE.)*邏輯運算符:.NOT.;.AND.;.OR.;.EQV.;.NEQV.;.XOR.優(yōu)先級由高到低依次為:算術運算符,關系運算符和邏輯運算符。例4-3PROGRAMEX0403IMPLICITNONEINTEGERRAIN,WINDSPEEDWRITE(*,*)"RAIN:"READ(*,*)RAINWRITE(*,*)"WIND:"READ(*,*)WINDSPEED

IF(RAIN>=500.OR.WINDSPEED>=10)THENWRITE(*,*)"停止上班上課"ELSEWRITE(*,*)"照常上班上課"ENDIFSTOPEND

運算符的使用邏輯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結束

ENDIF第2層IF結束ENDIF第1層IF結束例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=任意數ANS=0ENDIF

IF(ANS/=0)THEN!ANS不為0時,代表有解WRITE(*,"('第',I1,'象限')")ANSELSEWRITE(*,*)"落在軸上"ENDIF!STOPEND第二節(jié)浮點數及字符的邏輯運算浮點數的邏輯判斷例4-9PROGRAMEX0409IMPLICITNONEREAL::AREAL::B=3.0

A=SQRT(B)**2-B!理論上A應該要等于0

IF(A==0.0)THEN

WRITE(*,*)"A等于0"ELSEWRITE(*,*)"A不等于0"ENDIFSTOPEND

例4-10PROGRAMEX0410IMPLICITNONEREALAREAL::B=4.0REAL,PARAMETER::E=0.0001!設置誤差范圍

A=SQRT(B)**2-B!理論上A應該要等于0

IF(ABS(A-0.0)<=E)THEN

WRITE(*,*)"A等于0"ELSEWRITE(*,*)"A不等于0"ENDIFEND二、字符的邏輯判斷比較字符大小的依據是:比較它們的字符碼,因為在保存字符時,事實上就是保存它的字符碼?!產’<‘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í)行。這可以應用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論