4.3.2 单行条件语句
单行条件语句比较简单,语法格式如下。
说明:
1)<条件>可以是关系表达式,也可以是逻辑表达式或者数值表达式。如果用数值表达式作为判断条件,则当其值为0时条件为假,非0时为真。
2)当条件为真时,执行Then分支中的<语句1>,否则执行Else分支中的<语句2>。
3)如果没有Else子句,则<语句1>为必要部分。当条件为真时,执行<语句1>;当条件为假时,不进行任何操作。
4)如果没有Then子句,而Else子句不为空,那么,当条件为真时,不进行任何操作;当条件为假时,执行Else分支。
5)书写时,所有关键字、语句都必须在一行中书写完毕。如果每个分支中有多条语句,则各语句之间要用冒号“:”分开。
下面是一些单行条件语句的例子。
如果a大于b,则输出a,否则输出b。
如果a大于0,则输出a;如果a小于或等于0,则不执行任何语句。
如果a大于b并且b大于c,则输出a、b、c;否则不执行任何语句。
如果a小于b,则交换a、b中的值。这是经典的交换两个变量值的方法,应熟练掌握。
【例4-6】输入数值x的值,输出其绝对值。
按“三步法”原则分析如下。
做什么
1)用户输入x值:所以应该有输入语句,这里用文本框实现。
2)求绝对值:所以应该有“计算”按钮。
3)一个用于说明文本框的标签。
怎么做
步骤描述如下:
1)读取用户输入的数据到变量x中。
2)判断变量x值的正负,如果为正数,则执行第3)步;如果为负数,则执行第4)步。
3)输出x,然后转到第5)步。
4)输出-x,然后转到第5)步。
5)根据程序功能任务已经完成,程序结束。
实现
1)获取数据:
2)从步骤描述的逻辑来看,第3)、4)步是第2)步判断的两种情况,其中肯定有一个被执行,并且由于第3)、4)步是互斥的,因此只能有一个被执行。它们谁能够执行,取决于第2)步的判断结果。所以第2)、3)、4)三个步骤实际上可以用一个判断语句实现:
3)程序功能已经执行完毕,所以就不用编写其他代码了,结束事件过程即可。
实现效果如图4-21所示。
为了使界面更友好,可以把语句
改为
实现效果如图4-22所示。
但是这样写的If语句比较长,并且不难发现,这两条输出语句就差一个负号,所以可以再进行修改。这次修改“怎么做”和“实现”两步,修改如下。
怎么做
步骤描述如下。
图4-21 计算绝对值
图4-22 修改Msgbox
1)读取用户输入的数据到变量x中。
2)判断变量x值的正负,如果为正数,则执行第3)步;如果为负数,则执行第4)步。
3)把x值保存到y中,然后转到第5)步。
4)把-x值保存到y中,然后转到第5)步。
5)输出y。
从这里可以看出,第3)、4)步并没有输出x的绝对值,而是把要输出的内容存储到变量y中,无论执行哪个分支,y都会被赋值,只是内容不同。等分支执行完毕后,执行第5)步,输出y。
实现
1)获取数据:
2)判断语句:
3)输出:
修改后的程序代码为:
这种方法比直接输出更具通用性,输出语句一般放在程序的最后执行,而且这种写法使代码更为简化。
【例4-7】有以下函数:
要求输入x的值,求出y值并输出。
按“三步法”原则分析如下。
做什么
1)输入一个数,所以要有一个文本框。
2)一个计算按钮,标题为“计算”。
3)一个用于说明文本框的标签。
怎么做
步骤描述如下:
1)读取文本框中的数据到变量x中。
2)判断:如果x>0,则y=1;如果x=0,则y=0,否则y=-1。
3)输出y。
实现
1)读取数据:
2)这里有两次判断,所以需要两条判断语句。那么这两次判断是什么关系呢?首先来分析一下:
y=1是x>0成立的情况,而另外的两种情况都属于x>0不成立的情况,都属于x>0的Else分支。所以,需要在Else分支中再次进行判断,语句为
“If x=0 Then y=0 Else y=-1”是一条完整的If语句,但是它也是x>0条件的Else分支语句,这就是If语句的嵌套。
3)输出:
完整代码如下。
运行结果如图4-23所示。这里用到了If语句的嵌套,无论语句多长都要作为一条语句来写,不要换行。如果要换行,一定用续行符“_”连接,写法如下:
图4-23 计算y值