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