首页 理论教育 VisualBasic程序设计-实现块结构条件语句

VisualBasic程序设计-实现块结构条件语句

时间:2023-11-25 理论教育 版权反馈
【摘要】:块结构If必须以End If语句结尾,书写在最后一行。对块结构条件语句,关键字If和End If要成对出现。

VisualBasic程序设计-实现块结构条件语句

单行条件语句在使用时如果遇到Then或者Else子句中需要执行较多语句,就会很不方便。因为把多条语句书写在一行内,就会给书写带来极大的不便,并且程序的易读性也降低了。为此,Visual Basic提供了块结构If语句。

1.简单块结构

块结构If语句的语法格式:

978-7-111-49659-5-Chapter04-91.jpg

说明:

1)在块If结构中,“If<条件>Then”必须在同一行中,且后面不能有任何语句,否则它就会变成单行条件语句,和后面的Else独立开来。所以,要求[语句块1]另起一行书写,有多条语句时可以在多行中分别书写。

2)有Else子句时,[语句块2]应在关键字Else的下一行开始书写。同样,如果有条件语句,可以在多行中分别书写。[语句块2]如果与Else同行,要用复合语句符“:”分开,例如:

978-7-111-49659-5-Chapter04-92.jpg

978-7-111-49659-5-Chapter04-93.jpg

这样书写不如下面的代码清楚:

978-7-111-49659-5-Chapter04-94.jpg

978-7-111-49659-5-Chapter04-95.jpg

图4-24 缺少End If

所以,建议不要把[语句块2]与Else关键字同行。

块结构If必须以End If语句结尾,书写在最后一行。如果漏写End If语句,则系统认为出现语法错误,如图4-24所示。

程序运行时,先对<条件>进行判断,如果条件成立,则结果为真(True),执行Then后面的[语句块1],然后跳过Else块中的[语句块2],直接到达End If语句,并继续向后执行。如果条件不成立,则结果为假(False),跳过Then块中的[语句块1],直接到达Else,执行[语句块2],直到End If语句为止,并继续向后执行。

如果没有Else子句,则当条件成立时就执行[语句块1],直到End If语句,并继续向后执行;当条件不成立时,则直接到达End If语句,并继续向后执行。

单行条件语句是一种简单的选择语句,用于一些比较简单的判断和操作。而块结构条件语句则可以实现比较复杂的判断和操作。在使用块结构书写时,为了提高程序的易读性,建议养成一个好的习惯,就是每部分的语句块都向右缩进一部分,一般用键盘上的Tab键即可。这样,同一条语句的If、Else、End If关键字在同一垂直线上,当有If语句嵌套时,就很容易区分哪些是独立的If语句。书写格式对比如图4-25所示。

978-7-111-49659-5-Chapter04-96.jpg

图4-25 书写格式对比

【例4-8】用块结构实现:输入x的值,输出其绝对值。

“三步法”分析过程请参考【例4-6】,完整代码如下。

978-7-111-49659-5-Chapter04-97.jpg

978-7-111-49659-5-Chapter04-98.jpg

2.嵌套块结构

当判断的条件比较复杂,有多种情况需要进行判断时,可以使用嵌套的If语句结构。If语句的嵌套是指在If或Else语句后面的语句块中又包含另外一个If语句。其语法格式有两种。

(1)第一种格式(见图4-26)

说明:

1)第2层分别是完整的If语句,它们必须完全嵌套在第1层的某个分支中,不能一部分在第1层的Then分支中,另一部分在第1层的Else分支中。

2)第2层中还可以嵌套第3层,每个分支的嵌套层数可以不同。

3)每1层的If语句都是完整语句,可以没有Else分支,但每个的End If关键字都不能省略。

(2)第2种格式(见图4-27)

978-7-111-49659-5-Chapter04-99.jpg

图4-26 If嵌套第一种格式

978-7-111-49659-5-Chapter04-100.jpg

图4-27 If嵌套第二种格式

说明:

1)可以有多个ElseIf子句,但是都必须在Else子句之前出现。

2)当程序运行到嵌套的If块时,先判断<条件1>,若判断结果为True,则执行Then后面的[语句块1]。如果判断的条件为False,则依次判断下面的ElseIf条件,当找到某个条件为True时,则执行该条件的Then语句块,执行完该语句块后,直接转到最后的End If语句,然后向下执行;如果没有一个ElseIf条件为True,则执行Else后面的语句块,然后从End If的后续指令继续执行。

无论哪种形式,嵌套都可以是多层的,但内层条件语句必须完全包含在外层条件语句中。对块结构条件语句,关键字If和End If要成对出现。

书写格式虽然不会影响程序的运行,但是好的书写格式可以增加易读性,帮助纠错。(www.xing528.com)

【例4-9】用块结构实现。有以下函数:

978-7-111-49659-5-Chapter04-101.jpg

要求输入x的值,并求出y的值。

“三步法”分析过程请参考例4-7,完整代码如下。

第一种格式书写:

978-7-111-49659-5-Chapter04-102.jpg

第二种格式书写:

978-7-111-49659-5-Chapter04-103.jpg

【例4-10】输入一个成绩,判断其等级并输出:

978-7-111-49659-5-Chapter04-104.jpg

按“三步法”原则分析如下。

978-7-111-49659-5-Chapter04-105.jpg做什么

1)用户输入成绩,所以需要一个文本框

2)一个“评判”按钮

3)一个用于说明文本框的标签。

978-7-111-49659-5-Chapter04-106.jpg怎么做

步骤描述如下:

1)读取用户输入的数据,保存到变量x中。

2)如果x小于0,则把字符串“不合理的成绩!”赋值给s,然后执行第9)步,否则向下执行。

3)如果x小于60,则把字符串“成绩等级:E”赋值给s,然后执行第9)步,否则向下执行。

4)如果x小于70,则把字符串“成绩等级:D”赋值给s,然后执行第9)步,否则向下执行。

5)如果x小于80,则把字符串“成绩等级:C”赋值给s,然后执行第9)步,否则向下执行。

6)如果x小于90,则把字符串“成绩等级:B”赋值给s,然后执行第9)步,否则向下执行。

7)如果x小于或等于100,则把字符串“成绩等级:A”赋值给s,然后执行第9)步,否则向下执行。

8)只要到达此步,x肯定是大于100了,则把字符串“不合理的成绩!”赋值给s,继续向下执行。

9)输出s。

978-7-111-49659-5-Chapter04-107.jpg实现

本例用第一种If嵌套块结构格式。

从上述步骤描述中可以看出它们之间的逻辑关系,在第2)步中,如果条件成立,则直接执行第9)步,然后输出等级信息。第3)~8)步都是第2)步中条件不成立的情况,那么如何控制不让计算机执行第3)~8)步的判断呢?那就需要把第3)~8)步完全放入第2)步的Else分支中。在书写时,可以先写出对第2)步进行判断的If语句,然后再向相应的块中添加代码,如下:

978-7-111-49659-5-Chapter04-108.jpg

在上述If语句的Else分支中写入对第3)~8)步的判断。在第3)步中,如果第3)步条件成立,则直接执行第9)步,然后输出等级信息。第4)~8)步都是第3)步中条件不成立的情况,那么如何控制不让计算机执行第4)~8)步的判断呢?方法是把第4)~8)步完全放入第3)步的Else分支中。书写时,在第3)步的Else分支中完成,写法同上,如下。

978-7-111-49659-5-Chapter04-109.jpg

其余类推,完整代码如下。

978-7-111-49659-5-Chapter04-110.jpg

使用这种写法一定要注意缩进格式,一定要把每个语句块都向右缩进一个单位,这样可以清楚地判断出哪些If、Else、End If是对应的。下面的格式是不可取的。

978-7-111-49659-5-Chapter04-111.jpg

978-7-111-49659-5-Chapter04-112.jpg

使用这种块结构导致End If非常多,下面改用第二种格式:

978-7-111-49659-5-Chapter04-113.jpg

这种块结构只需要一个End If。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈