3.2 块IF语句
2019-03-29 19:02
块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