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

- 上一篇
少兒編程:5G技術(shù)、人工智能來臨,孩子沒學(xué)你慌嗎?
國家政策傾向少兒編程 目前少兒編程編程行業(yè)在國家政策支持,5G技術(shù)、人工智能等的飛速發(fā)展下,開始逐漸進(jìn)入家長們的視野,一線城市家長開始對(duì)少兒編程行業(yè)有了明顯的認(rèn)知,二、三線家長正在不斷被普及知識(shí)。
- 下一篇
Scratch入門級(jí)游戲課程-星際大戰(zhàn) 上
星際大戰(zhàn)這個(gè)80、90后風(fēng)靡一時(shí)的一款小游戲 “怎么又死了, 快去吃, 加一條命回來。” 這樣的場景是不是記憶猶新呢? 下面我們來看一下這個(gè)星際大戰(zhàn)的游戲制作。