流程控制與邏輯運(yùn)算.ppt
1,Fortran95程序設(shè)計(jì),彭國(guó)倫編著,韋劼群wjq2008.11,2,5-1IF語(yǔ)句,能夠在程序執(zhí)行當(dāng)中自動(dòng)選擇轉(zhuǎn)向、跳過(guò)某些程序模塊來(lái)執(zhí)行程序代碼,這是IF關(guān)鍵字的功能。5-1-1IF基本用法最基本的使用方法是由一個(gè)程序模塊所構(gòu)成,當(dāng)IF所賦值的邏輯判斷式成立,這模塊中的代碼才會(huì)執(zhí)行。,IF(邏輯判斷式)then.Endif,邏輯成立時(shí)才會(huì)執(zhí)行這里面的程序代碼,ex0501.f90,3,5-1IF語(yǔ)句,單行IFIf(speed>100.0)write(*,*)“Slowdown”如果.那么就.,否則就.。,ex0502.f90,IF(邏輯判斷式)then.ELSE.Endif,邏輯成立時(shí),執(zhí)行這一段的程序代碼,邏輯不成立時(shí)則執(zhí)行這一段的程序代碼,4,5-1-2邏輯運(yùn)算,If命令需搭配邏輯表達(dá)式才能使用。邏輯運(yùn)算符號(hào):,ex0501.for,5,5-1-2邏輯運(yùn)算,邏輯表達(dá)式除了可以單純對(duì)兩個(gè)數(shù)字比較大小之外,還可以對(duì)兩個(gè)邏輯表達(dá)式間的關(guān)系來(lái)運(yùn)算。如:If(a>=80.and.AB,ex0504.f90,當(dāng)A的數(shù)值大于B時(shí),logical_var這個(gè)邏輯變量會(huì)被設(shè)定成“真”(.TRUE.),否則會(huì)被設(shè)定為“假”(.FALSE.),7,5-1-3多重判斷IF-ELSEIF,多重判斷可一次列出多個(gè)條件及多個(gè)程序模塊,ex0505.f90,IF(條件1)then.elseif(條件2)then.elseif(條件3)then.elseif(條件4)then.else.Endif,條件1成立時(shí),執(zhí)行這個(gè)模塊程序,條件2成立時(shí),執(zhí)行這個(gè)模塊程序,條件3成立時(shí),執(zhí)行這個(gè)模塊程序,條件4成立時(shí),執(zhí)行這個(gè)模塊程序,Else這個(gè)模塊可以省略,每個(gè)條件都不成立時(shí),才執(zhí)行這個(gè)模塊程序,ex0506.f90,8,5-1-3多重判斷IF-ELSEIF,利用多個(gè)獨(dú)立的IF語(yǔ)句也能實(shí)現(xiàn)多重判斷的效果如:判別成績(jī)等級(jí)If(score>=90)grade=AIf(score>=80)grade=BIf(score>=70)grade=CIf(score>=60)grade=DIf(score>=0)grade=EIf(score>=100.or.score<0)grade=?,ex0507.f90,9,5-1-4嵌套IF語(yǔ)句,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é)束,ex0508.f90,10,5-2浮點(diǎn)數(shù)及字符的邏輯運(yùn)算,5-2-1浮點(diǎn)數(shù)的邏輯判斷使用浮點(diǎn)數(shù)做邏輯運(yùn)算時(shí),要避免使用“等于”的判斷使用浮點(diǎn)數(shù)計(jì)算,有效位數(shù)是有限的,難免會(huì)出現(xiàn)計(jì)算上的誤差,理想中的等號(hào)不一定會(huì)成立例:EX0509.f90浮點(diǎn)數(shù)的計(jì)算誤差經(jīng)常發(fā)生,在判斷式中要給誤差預(yù)留一點(diǎn)空間例:EX0510.f90abs()取絕對(duì)值的函數(shù),ex0510.f90,ex0509.f90,11,5-2-2字符的邏輯判斷,字符也可比較大小,根據(jù)是比較它們的字符碼(ASCII),ex0511.f90,12,5-3SELECTCASE語(yǔ)句,ex0512.f90,ex0513.f90,Selectcase(變量)case(數(shù)值1).case(數(shù)值2).case(數(shù)值n).casedefault.Endif,放入所要判斷的變量,變量等于數(shù)值1時(shí),執(zhí)行此程序段,變量等于數(shù)值2時(shí),執(zhí)行此程序段,變量等于數(shù)值n時(shí),執(zhí)行此程序段,變量不等于任何數(shù)值時(shí),執(zhí)行此程序段,13,5-3SELECTCASE語(yǔ)句,使用SELECTCASE來(lái)取代某些使用IF-ELSEIF的多重語(yǔ)句,會(huì)讓代碼看起來(lái)比較簡(jiǎn)潔。SELECTCASE有一些限制:只能使用整數(shù),字符和邏輯變量,不能使用浮點(diǎn)數(shù)和復(fù)數(shù)。每個(gè)case中所使用的數(shù)值必須是固定的常量,不能使用變量。,14,5-4其他流程控制,5-4-1GOTO古老的“跳轉(zhuǎn)”語(yǔ)句不建議使用使用GOTO會(huì)使編寫的程序在結(jié)構(gòu)上變亂,導(dǎo)致程序代碼難以閱讀5-4-2IF與GOTO的聯(lián)用IF判斷還有一種叫做算術(shù)判斷的方法,做法和GOTO類似。例:ex0517.for,ex0514.f90,ex0515.f90,ex0516.f90,15,5-4-3PAUSE,CONTINUE,STOP,PAUSE:暫停執(zhí)行CONTINUE:繼續(xù)向下執(zhí)行f90后很少使用STOP:結(jié)束程序執(zhí)行,16,5-5二進(jìn)制的邏輯運(yùn)算,二進(jìn)制的邏輯運(yùn)算和IF中的邏輯判斷式不太相同,比較接近單純的數(shù)學(xué)運(yùn)算。0.and.0=00.and.1=01.and.0=01.and.1=1F90的庫(kù)函數(shù):IAND()IOR()針對(duì)二進(jìn)制進(jìn)制integer:aa=B“10”!a=2a=O“10”!a=8a=Z“10”!a=16,ex0429.f90,17,作業(yè),P981、2、3、4,ex0435.f90,ex0436.f90,