选择结构是根据给定的判断条件的结果来控制程序的流程。VB中选择结构可以分为If语句和Select Case语句两大类。
条件语句也称If语句,一种是单行结构,一种是块结构。
一、单行结构条件语句If...Then结构
语法格式:
(1)If 表达式Then 语句块
(2)If 表达式Then
语句块
End If
功能:如果表达式的值为真(True),执行Then后的语句块内容;否则不执行语句块内容。
说明:
(1)表达式可以是:关系表达式(x>5)、逻辑表达式(x>5 and x<10)、算术表达式(Check1.Value)。若为算术表达式,值为0则为假,非0则为真。而当“条件”为关系表达式或逻辑表达式时,-1表示True,0表示False。
(2)如果是单行If格式,所有的代码必须写在同一行中,绝对不能换行。如果是块If语句,各语句块必须独占一行,End If不能省略。
(3)语句块若是一条语句,可用单行If结构;为多条语句,则采用块If结构较好,当然也可以采用单行If格式,这时各语句必须在同一行中且用“:”分隔,且不能出现End If。
(4)多分支If结构在某些情况下可能有多个条件为True,但也只能执行一个语句块。
【例7.1】输入两个数,输出较大的数。
分析:本题由用户输入两个数,经计算机判断后将较大数输出,即有两个输入量和一个输出量。所以需要两个文本框接受用户输入,可以采用标签来实现数据的输出。
界面设计:
图7-1 例7.1界面设计
图7-2 例7.1运行结果
属性设置:
表7-1 属性设置
续表
编写程序代码:
二、块结构的条件语句
If...Then...Else结构语法格式:
功能:该结构用于解决“二选一”的问题。当表达式的值为真,执行语句块1的语句内容;否则执行语句块2的语句内容。
说明:
1.表达式最终的值必须为逻辑值,即取值为真或者是假。
2.若语句块1和语句块2都是单条语句,可采用单行If格式,否则采用块If语句。
3.跟If...Then不同,该结构中若表达式值为假,就执行语句块2的语句内容。
【例7.2】编写一个程序,实现当用户输入的用户名和口令都正确时显示“欢迎登录”的消息对话框,当用户名或口令有错误时显示消息对话框报告错误。
分析:本题需要两个文本框分别保存用户输入的用户名和口令,一个“登录”按钮,一个“退出”按钮。当输入的用户名和口令与正确的相符时显示“合法用户”,不相符时显示“非法用户”,所以应当采用If...Then...Else结构来实现。
界面设计:
图7-3 例7.2界面设计
图7-4 例7.2运行结果
编写代码:
Private Sub Command1_Click()
If Text1.Text="LanMing"And Text2.Text=123456 Then
MsgBox“欢迎登录”
Else
MsgBox“非法用户”
End If
End Sub
Private Sub Command2_Click()(www.daowen.com)
End
End Sub
三、IIf函数
语法格式:Result=IIf(条件,True部分,False部分)
功能:Result是函数的返回值,条件是一个逻辑表达式,当条件为真(True),该函数返回True部分,否则就返回False部分。True部分或False部分可以是表达式、变量或其他函数。其中,该函数的三个参数都是必需的,不可省略。而且要求True部分、False部分及结果变量的类型一致,如果False部分存在被0除问题,则程序将会出错(即使“条件”为True)。
1.在使用IIf函数时,必须要将其返回值赋值给一个变量,不可以单独调用。如上面的代码不可以写成:IIf(x=1,"Yes","No")。
2.在使用IIf函数时,第2和第3个参数必须只能为一条语句,而且必须是有返回值的,这是IIf函数跟If...Then...Else结构的不同之处。如下所示:
MsgBox IIf(user="SYL"And psw="123456","正确!","错误!")
IIf(user="SYL"And psw="123456",MsgBox("正确!"),MsgBox("错误!"))
Result=iif(val(str)>12,”str大于12”,“str不大于12”)
四、多分支If结构
语法格式:
执行过程:如表达式1为真,则执行语句块1;否则测试表达式2的值,为真则执行语句块2;依次类推至找到一个值为真的表达式则执行相应的语句块;若都不为真时,执行Else后语句块内容。
说明:
1.表达式最终的值必须为逻辑型,即取值是真或者是假;
2.如果要产生n个分支,则需要n-1个测试表达式;
3.此结构不能转换成单行If格式。
【例7.3】编写一个程序,根据用户输入的某个学生的成绩评出优、良好、中等、及格和不及个五个等级。判断标准如下:
不及格:score<60及格;60≤score<70;中等:70≤score<80;良好:80≤score<90;优:score≥90。
分析:本题要解决的问题是根据输入学生的成绩来判断该学生的成绩等级。有一个输入量(学生的成绩)和一个输出量(判断结果),所以用一个文本框来接受用户输入,一个文本框来进行输出。再添加一个“判断”按钮,和一个“退出”按钮。
界面设计:
图7-5 例7.3界面设计
图7-6 例7.3运行效果
编写代码:
【例7.4】学校对学习成绩优良的同学给予奖励,只要满足以下条件之一就可以获得奖励:所考语文、数学和英语总分在285以上;每门课的成绩都在90分以上;语文和数学的成绩各为100分,英语在80分以上。
界面设计:
图7-7 例7.4奖励界面
图7-8 例7.4无奖励界面
编写代码:
五、If嵌套
所谓If嵌套,是指在If的Then或者Else语句块中还可以嵌套If结构,以达到多分支的目的。
语法格式:
【例7.5】编写一个程序,让用户输入三个数并判断该三个数能否组成一个直角三角形。
分析:本题根据用户输入的三个数,判断它们能否组成一个直角三角形。程序中有三个输入量(即输入的三个数)和一个输出量(即能否组成一个直角三角形)。故可以用三个文本框来接受用户输入的三个数,一个标签框来显示判断结果。
界面设计:
图7-9 例7.5界面设计
图7-10 例7.5运行效果
编写代码:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。