資訊內容
3.2 塊IF語句
塊IF語句比行IF語句功能更強,適應面更廣,它能夠通過IF—THEN—ELSE、IF—ELSE—END IF結構實現任意多個分支,并從任意多個分支中選擇其中一個分支執行。塊IF語句至少占用兩個語句行。
3.2.1 塊IF語句格式
當THEN部分和ELSE部分包含比較多的內容,需執行多個語句時,用行IF實現選擇結構,在一行內就難以容納,而且程序讀起來也不清晰。QBASIC提供的“塊IF”結構,即是一將一個選擇結構用若干個語句來實現。
塊IF的一般格式如下:
IF<條件>THEN
[<語句組1>]
ELSE
[<語句組2>]
END IF
關于塊 IF結構的說明如下:
(1)執行塊IF時,先判斷所給的條件是否滿足:如求出邏輯表達式的值為真,條件滿足,則執行語句組1,然后跳過ELSE行和語句組2,由END IF出口;如果邏輯表達式為假,條件不滿足,則跳過THEN部分,執行ELSE部分的語句組2,然后由END IF出口。
(2)語句組1和語句組2可以包含多個語句行。
(3)ELSE部分是任選的,即此部分可有可無。例如:
IF a > 8 THEN
Print a
End if
就無ELSE部分,也是合法的。
(4)IF-THEN必須寫在一行上,THEN是該行的行尾,但是“語句組1”不能與IF- THEN寫在同一行上。如下面程序的寫法是錯誤的:
IFa>8 THENPRINT a
ELSE
?? PRINT “a<=8”
END IF
QBASIC 把第一行認為是一個完整的IF語句,不允許出現其它語句,如果像上面的書寫方法,QBASIC語言系統則判斷第一條語句為行IF語句,第二行的ELSE沒有相應的IF與之配對而給出錯誤信息。
(5)<語句組1>和<語句組2>可以缺省。例如:
IF b>0 THEN
ELSE
END IF
是合法語句,但無任何實際意義。
(6)ELSE和“語句組2”可以在一行上書寫。例如:
IF a>0 THEN
ELSE PRINT a
END IF
這樣書寫方法是合法的,但使用這種方法書寫,程序看起來不清晰,容易出現錯誤,一般最好還是將ELSE獨占一行為好。
(7)塊IF結構IF—END IF是一個選擇體,IF和END IF成對出現。<語句組1>或<語句組2>中都允許嵌套塊IF結構,當出現嵌套層時,可用向內縮進若干列的方法,形成鋸齒形排列的形式,以便于了解層次關系。
【例3.4】將任意3個整數按由大到小進行排列。
解:設三個整數位a,b,c。第一先將a與b比較,a>b則a是大數不交換,ac則a是大數不交換,a< p="">
再將b與c比較,b>c則不交換,b< p="">
經過比較由大到小的順序已排好。程序的NS圖如圖3.7所示。
程序如下:
INPUT“a,b,c=”;a,b,c
IF b>a THEN
SWAP a,b
END IF
IF c>a THEN
SWAP a,c
END IF
IF c>b THEN
SWAP c,b
END IF
PRINT“a,b,c=”;a,b,c
END
程序運行后,首先輸入a,b,c
a,b,c=?9,5,10
程序運行結果為:
a,b,c=10? 9? 5
? 在程序中使用了兩變量的交換語句SWAP語句,使得程序減少了許多重復的賦值語句。
3.2.2 塊IF的嵌套及ELSE IF的使用
1、塊IF的嵌套
在塊IF語句中,每個語句允許組包含任何語句,當然也可以包含塊IF語句。如果一個快IF語句完全包含在另一塊IF語句的一個語句組中,就稱為塊IF語句的嵌套。塊IF語句的嵌套可表示為如下的一般形式:
IF…THEN
?? IF…THEN
?? ELSE
??? :
?? END IF
ELSE
:
??? IF…THEN
???? :
??? ENDIF
:
END IF
【例3.5】編寫一個程序,使用戶能輸入月份,根據給出的年份和月份判斷該月有多少天。
INPUT ?“Enter year”;y
INPUT ?“Enter month(1-12)”;m
IF (m=4) OR (m=6)OR (m=9) OR (m=11) THEN
? day=30
ELSE
IF(m=1) OR (m=3) OR (m=5) OR (m=7) OR (m=8) OR (m=10) OR (m=12) THEN
? ????day=31
??? ELSE
IF(Y MOD 4=0 ?AND Y MOD100<>0)OR(Y MOD 4=0 ?AND Y MOD 400<>0)THEN
????? ?day=29
????? ?ELSE
????? ?day=28
????? ?END IF
??? END IF
END IF
PRINT “There are”;day;”daysin the month entered”
END
該程序根據輸入的年、月份求出該月的天數day,程序使用了塊IF的結構嵌套。用戶使用嵌套方法時應注意IF-END IF的配合出現,假設不是成對出現,系統將作出錯誤處理。
2、塊IF語句中使用ELSE IF
使用 ELSE IF的塊IF結構的一般格式為:
????? IF <</strong>條件1> THEN
??????? <</strong>語句組1>
????? ELSE IF<</strong>條件2> THEN
??????? <</strong>語句組2>
ELSE IF<</strong>條件3> THEN
??????? <</strong>語句組3>
:
ELSE IF<</strong>條件n> THEN
?? ?<</strong>語句組n>
ELSE
<</strong>語句組n+1>
END IF
當條件1滿足執行語句組1,若條件1不滿足而滿足條件2則執行語句組2;若條件1和條件2都不滿足而滿足條件3,則執行語句組3……若條件1到n都不滿足,則執行語句組n+1.只要執行完某一個語句組即跳到END IF退出塊IF結構。
INPUT ?“Enter year”;y
INPUT ?“Enter month(1-12)”;m
IF (m=4) OR (m=6)OR (m=9) OR (m=11) THEN
? day=30
ELSE IF(m=1) OR (m=3)OR (m=5) OR (m=7) OR (m=8) OR (m=10) OR (m=12) THEN
? ????day=31
ELSE IF(Y MOD 4=0?AND Y MOD 100<>0)OR(Y MOD 4=0 ?AND Y MOD 400<>0)THEN
????? ?day=29
??? ELSE
????? ?day=28
END IF
PRINT “There are”;day;”daysin the month entered”
END
聲明:本文章由網友投稿作為教育分享用途,如有侵權原作者可通過郵件及時和我們聯系刪除
