t=x
x=y
y=t
4.2.2双分支结构语句
双分支结构语句也包括单行结构和块结构。
1.“单行结构”格式为:
If<条件表达式>Then<语句序列1>[Else<语句序列2>]
2.“块结构”格式为:
If<条件表达式>Then
<语句序列1>
[Else
<语句序列2>]
EndIf
说明:
(1)“条件表达式”可以是关系表达式、布尔表达式或者数值表达式。
如果是数值表达式,则非0值为真,0为假。
(2)当条件表达式的值为真时执行语句列1,否则执行语句列2。
【例4-2】输入一个整数x,判断该数的奇偶性。
分析:
该数能被2整除时是偶数,否则是奇数。
能被2整除要作为判断的条件,当能被2整除时输出偶数,否则输出奇数。
图4-2判断数据奇偶性
设计步骤如下。
(1)建立应用程序用户界面,如图4-2所示。
(2)编写代码。
编写命令按钮Command1的Click事件代码:
PrivateSubCommand1_Click()
DimxAsInteger,yAsString
x=Val(Text1.Text)
IfxMod2=0Theny=x&"是偶数"Elsey=x&"是奇数"
Label2.Caption=y
EndSub
【例4-3】从键盘输入年份,判断是否是闰年,将结果输出。
分析:
闰年的条件如下。
(1)能被4整除,但不能被100整除年份是闰年。
(2)能被100整除,又能被400整除的年份是闰年。
图4-3判断闰年的运行界面
设计步骤如下。
(1)建立应用程序用户界面,如图4-3所示。
(2)编写代码。
编写窗体的Click事件代码:
PrivateSub Form_Click()
y=Val(InputBox(“输入年份”,“判断闰年”))
If(yMod4=0AndyMod100<>0)or(yMod100=0AndyMod400=0)then
MsgBox“是闰年”
Else
MsgBox“不是闰年”
EndIf
EndSub
4.2.3使用IIF函数
IIF函数可以实现一些比较简单的选择结构。
IIF函数的语法格式为:
IIF(<条件表达式>,<真部分>,<假部分>)
说明:
(1)“条件表达式”可以是关系表达式、布尔表达式、数值表达式。
(2)当条件表达式为真时,函数返回的值是真部分;当条件表达式为假时,函数返回的值是假部分。
4.2.4多分支结构语句
如果遇到多个分支结构,其流程图如图4-4所示,可采用的语句有两种:
If…Then…ElseIf语句和SelectCase语句。
图4-4多分支结构
1.If…Then…ElseIf语句
其语法格式为:
If<条件1>Then
[语句列1]
ElseIf<条件2>Then
[语句列2]
…
[Else
[其他语句列]]
EndIf
说明:
(1)在块If中,Else和ElseIf语句都是可选的,可以有任意多个ElseIf子句,但是这些ElseIf子句都必须出现在Else子句之前。
(2)程序运行时,先测试条件1,如果条件为真,则执行Then之后的语句;如果条件1为假,则依次测试ElseIf子句;如果某个ElseIf子句的条件为真,则执行该ElseIf子句对应的语句列,执行完成后从EndIf语句退出;如果没有一个ElseIf子句的条件为真,则执行Else部分的其他语句列。
【例4-4】已知百分制成绩mark,要求显示相应的五级制。
(90~100分为优秀,80~89分为良好,70~79分为中等,60~69分为及格,60分以下为不及格)
分析:
各个等级是并列关系,并且输入一个成绩只能输出一个相应的等级,可采用嵌套结构的If语句。
程序流程图如图4-14所示。
图4-5输出等级
设计步骤如下。
(1)建立应用程序用户界面,如图4-5所示。
(2)编写代码。
编写命令按钮Command1的Click事件代码:
PrivateSubCommand1_Click()
DimmarkAssingle
mark=Val(Text1.Text)
Ifmark>100ThenMsgBox"请重新输入一个小于等于100的数":
END
Ifmark>=90Andmark<=100Then
k="优秀"
ElseIfmark>=80Then
k="良好"
ElseIfmark>=70Then
k="中等"
ElseIfmark>=60Then
k="及格"
Else
k="不及格"
EndIf
Label2.Caption="成绩是"&mark&","&"等级是"&k
EndSub
2.SelectCase语句
语法格式为:
SelectCase<测试条件>
[Case<表达式列表1>
[<语句列1>]]
[Case<表达式列表2>
[<语句列2>]]
…
[CaseElse
[<其他语句列>]]
EndSelect
说明:
(1)“测试条件”为必要参数,可以是数值表达式、字符串表达式或布尔表达式。
(2)在Case子句中,表达式列表为必要参数,用来测试其中是否有值与测试条件相匹配。
表达式可以有以下几种形式。
一个常量或常量表达式。
例如:
Case5。
多个常量或常量表达式,各个表达式用逗号隔开,逗号相当于“或”,只要测试条件等于其中某一个常量的值就是匹配。
例如:
Case1,2,3。
表达式1to表达式2,表示从表达式1到表达式2中所有的值,但是表达式1的值必须小于表达式2的值。
例如:
Case1to5。
Is关系运算表达式,可以使用的关系运算符有:
>、>=、<、<=、<>、=。
例如:
CaseIs<5。
但是不可以使用逻辑运算符表示范围,CaseIs>5andIs<10是错误的。
表达式列表可以是以上4种情况的组合。
例如:
Case1,5,6To9,Is<20。
(3)程序执行时,先求测试条件的值,然后依次判断与哪一个Case子句的值相匹配。
如果匹配则执行该Case子句后的语句列,执行完成后从EndSelect退出;如果没有Case子句与测试条件匹配,则执行CaseElse语句。
注意,如果有多个Case子句与测试条件匹配,则只执行第一个与之匹配的语句。
(4)如果没有Case子句与测试条件匹配,而且也没有CaseElse语句,则程序执行EndSelect之后的语句。
【例4-5】某百货公司为了促销,采用购物打折扣的优惠办法:
每位顾客一次购物
(1)在1000元以上者,按九五折优惠;
(2)在2000元以上者,按九折优惠;
(3)在3000元以上者,按八五折优惠;
(4)在5000元以上者,按八折优惠。
设计步骤如下:
(1)建立应用程序用户界面与设置对象属性。
(2)编写程序代码。
PrivateSubCommand1_Click()
DimxAsSingle,yAsSingle
x=Val(Text1.Text)
CaseIs<2000
y=0.95*x
CaseIs<3000
y=0.9*x
CaseIs<5000
y=0.85*x
CaseElse
y=0.8*x
EndSelect
Text2.Text=y
EndSub
4.3选择结构的嵌套
如果在块If语句中,语句列1或者语句列2又包含If语句,则称为If语句的嵌套。
常见的格式为:
If<条件1>Then
[语句列1]
[Else
If<条件2>Then
[语句列2]
[Else
[语句列3]]]
EndIf
…
EndIf
说明:
(1)Else语句为可选语句。
(2)每一个块If结构都要有一个EndIf和它配对。
【例4-6】编写程序,用文本框检查用户输入的口令。
检查结果用对话框显示。
分析:
在窗体上添加一个文本框控件,将其PasswordChar属性值设置为“*”,Text属性为空,其他属性使用默认值。
假设正确口令为“12345”。
程序运行后,用户在文本框中输入口令,并按下【Enter】键确认输入完毕。
在输入过程中,每输入一个字符,都会触发文本框的KeyPress事件,并返回输入字符的ASCII码值。
事件过程中,当获取的ASCII码值为13时,即用户按下【Enter】键时表示口令输入完毕,然后判断其正确性。
程序运行结果如图4-6所示。
图4-6程序运行结果
编写命令按钮Text1的KeyPress事件代码:
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then
IfText1.Text="12345"Then
MsgBox"恭喜,口令正确",0,"口令验证"
Text1.Text=""
Else
MsgBox"口令错误,请重新输入",0,"口令验证"
Text1.Text=""
EndIf
EndIf
EndSub
教学后记: