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
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com