版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VisualBasic程序设计
第九讲
第四章程序流程的控制
(一)
2011-7-10
1
关系表达式
布尔表达式
选择结构
循环结构
常用控件的使用
2011-7-102
§4.1关系运算符和关系表达式
4.1.1关系运算符VB提供六种关系运算符
关系物理意义例子说明
运算符
<小于若x=5,y=2求x<y的值值为False
小于等于若x=2,y=4求x〈=y的值值为True
<=表4・1
>大于“3”>8值为False
>=大于等于0>=(1<5)值为True
—等于若乂="wer”求x="wer”值为True
<>2011-7-]0不等于"asd"v>"qwe”值为True3
4.1.2关系表达式
LVB中的关系表达式格式为:
v表达式1>v关系运算符,v表达式2>[v关系运算符>
v表达式3>],...]
2.说明:
(1)其中〈表达式〉可为算术表达式、字符串表达式
和日期型表达式。
(2)关系表达式求值的次序是先求关系运算符两边
表达式的值,再求关系表达式的值。关系表达式的
值为Boolean型,只有两个值True和False。
(3)若关系运算符两边为算术表达式时,则应先计
算算术表达式的值,再进行关系比较。
1◄蜀A►1
(4)若关系运算符两边为字符串表达
式时,按字符串中每个字母的ASCII
码逐一进行比较,若比较的前几个
字母的ASCII码都一样,而当比较到
后面哪一个字母不一样,则哪个字
母的ASCII码数值大,则对应的字符
串就大。
2011-7-105
例如:
“qwert”>="qweRt”的值为True。
常见字符的ASCH值大小排列如下:
“空格”v"O"vTv…v“9”
v“A"v“B"v.・.v“Z”
v“a"v“b”v...v“z”
若关系运算符两边为日期型表达式
时,按日期的先后次序,日期在前的值
小。
2011-7-106
例如:
#08/24/98#>#10/23/96#值为True。
#09/13/00#<#09/12/99#值为False。
3.注意:
因为浮点数在计算机内不能精确表示,
所以在VB中不能用“=”来比较两个单精度
或双精度数的浮点数。
例如:
5.0*4.0=20.0在数学上是成立的,而
在VB中其值可能为False。若需要比较两个
浮点数时,则应写成下列形式:
Abs(5.0*4.0-x)<=le-5若(5.0*4.0-x)的绝
款值小于等于le・5时,则认为x整扇*4小
在VBe不能把数学中的不等区
10〈xW20表示成10<x<=20,若表示
成10<x<=20这种形式,不论x为柯
值关系表达式10<x<=20的值都为
True。
关系表达式10<x<=20相当于
(10<x)<=20由于(10<x)的值
无论为True(-l)或False(O)都小于20,
所以10vxv=20的值总为True。这显
然与数学中的不等式的意义不同。
2011-7-108
§4.2布尔运算符和布尔表达式
对于不能用关系表达式表示的较复杂
的条件可用布尔表达式来表示。如上面提
判的数学不等式lOvxO,在VB中,应表
示成x>10Andx<=20o
4.2.1布尔运算符和布尔表达式
1.布尔运算符。
VB中共有六种布尔运算符,它们是:
And、Or、Not、Xor>Eqv和Imp。
2011-7-109
表4・2布尔运算符
布尔运算符物理意义举例说明
And逻辑与运算2<3And5>3与运算两边的表达式都为真
值为True时结果为真,否则为假。
Or逻辑或运算Or5>0或运算两边的表达式只要有一
值为True个为真,结果就为真(True)
两边都为假时结果才为假。
Not逻辑非运算Notx>=6非运算对表达式的值取反。
Xor逻辑异或运算"a''v"b"Xor5<0异或运算两边表达式的值不
值为True同,则结果为真,相等时结
果为假。
Eqv逻辑等运算3<2Eqv(3-逻辑等运算两边表达式的值
l)<0相同,则结果为真,不相同
值为True时,结果为假。
2011-7-1010
表4・2布尔运算符(续)
布尔运算符物理意义举例说明
Imp逻辑隐含运3<2Imp3>0逻辑隐含运算第一个表达式
算值为True的值为假(False)则第二个
3<2Imp5<2表达式不论值为什么值,结果
值为True都为真(True)
3>0Imp2>0若第一个表达式值为真,则
值为True第二表达式为真时结果为真。
5>3Imp3<2为假时结果为假。
值为False
11
表4-3布尔运算真值表
abaAndbaOrbNotaaXorbaEqvb
TrueTrueTrueTrueFalseFalseTrue
TrueFalseFalseTrueFalseTrueFalse
FalseTrueFalseTrueTrueTrueFalse
FalseFalseFalseFalseTrueFalseTrue
2011-7-1012
422VB运算符的优先级
VB运算符的优先级:
算术运算符运算级最高,关系运算符次
之,布尔运算符优先级别最低。
在算术运算符中,括号最优先,其它优
先次序依次是函数、乘方(人)、乘或除(*
或/)、整除(\)、求余(Mod)、加加减
(+或・)O
在关系运算符中,六个运算符的级别相
同。
在布尔运算符中最常用的三个布尔运算
符中,Not最高,And次之,Or最低。
1◄◄>1
表4.4VB运算符的优先级
运算优先级运算符运算符类型
1A(乘方运算)
2-(求负数)
算术运算符
3*或/(乘或除)
4\(整除)
5Mod(求余数)
6+或-(加或减)
7&(字符串连接运算)字符串运算符
8<=或<或>=或>或=或<>关系运算符
9Not(非运算)布尔运算符
10And(与运算)
用11-7-1014
Or(或运算)
已知:a=3.5,b=5.0,c=2.5,d=1.0则
下列表达式的运算次序为:
a>=0.0anda+c>b+dorNotTrue
②True①6.巳口6.0
③False
②False
__________)
Y
④False
J
----------Y------
⑤False
最同结果为False。15
§4.3选择结构
4.3.1If.…一Then......语句
1.行If语句格式如下:
Ifv条件表达式,Then卜语句组1>][Elsev语句组2>]
2.块If结构格式如下:
Ifv条件表达式〉Then
[语句组1]
[Else
[语句组2]]
EndIf
2011-7-1016
3.说明:
(1)If语句后面的V条件表达式,可以是前面
讲的算术表达式、关系表达式和布尔表达
式,执行该结构时应先计算V条件表达式〉
值,然后根据V条件表达式>值确定程序的
流向。
(2)当v条件表达式〉的值为真,执行Then
后面语句组1中各语句;当v条件表达式,
的值为假,则执行Eke后面的语句组2中各
语句。无论是执行语句组1或执行语句组2
中各语句执行完后,接着应执行型些
2011-7-1017
(3)在VB中数值表达式的值为非0时,则
条件表达式的值为真,数值表达式的值为0
时条件表达式的值为假。
(4)第一种形式的If结构,没有配对的End
If语句;若Then后面的语句组1省略,则必
须有Else语句及其后的语句组2;若Else语
句省略,则语句组1是必选项。第二种If结
构必须有配对的结束语句EndIf,不能省
略。其Then后面的两个可选项也必须选其
中之一。
2011-7-1018
【例4・1】计算分段函数:
Y=l+x(x口0)
LY=l+2*x(x<0)
工程设计步骤如下:
(1)启动VB后选“新建工程”的“标准
EXE”出现一个窗体,在此窗体上添加一
个标签控件一个文本框和二个命令按钮如
下页图4・1左图所不。
(2)设置窗体及各控件的属性如下页图4-1
右图所不。
2011-7-10IDI'Z19
图4-1计算分段函数的界面设计及属性设置
2011-7-1020
(3)编写代码如下:
编写单击“计算函数值”按钮执行的代码。
PrivateSubCommandl_Click()
Rem使用输入对话框提示输入自变量的值
x=Val(InputBox(“自变量的值”,“请输入”))
Ifx>=0Theny=1+xElsey=1+2*x
Textl.Text=y
EndSub
2011-7-1021
编写单击“退出”按钮执行的代码。
PrivateSubCommand2_Click()
UnloadMe
EndSub
(4)运行结果。按工具栏上的执行按
钮出现如图4・1右图所示的界面。单
击“计算函数的值”按钮出现输入对
话框如图4・2左图所示,输入数值后,
出现最后的结果如图4・2右图所示。
2011-7-1022
分科的州的值
函数值Y=
图4・2计算分段函数的运行结果
2011-7-1023
4.3.2嵌套的If语句
如果上面的块If结构中的Then下面的语
句组1或者在Else下面的语句组2又包含另外
的If结构称If语句的嵌套,如:
Ifv条件表达式1>Then
[Ifv条件表达式2>Then、
语句组1
当表达式1
Else的值为真时
语句组2执行的语句
组。
EndIf]
2011-7-10
4.3.2嵌套的If语句
Else
[Ifv条件表达式3>
Then
当表达式1
语句组3的值为假时
Else执行的语句
语句组4
EndIf]
EndIf
2011-7-1025
块IF嵌套的N・S结构化流程图表示
条件表达式1
YN
条件表达式2条件表达式3
YNYN
语句组1语句组2语句组3语句组4
2011-7-1026
【例4・2】简单密码验证程序。
工程设计步骤如下:
(1)在窗体上添加二个个标签控件、一个
文本框控件和二个命
令按钮。
如图4-3所示。
(2)设置窗体与各控
件的属性如表4・5所示。
图4-3
2011-7-1027
表4・5简单密码验证程序中窗休及各控件的属性的设
置
对象属性属性值说明
FormlCaption简单密码验证程标题
序
Label1Caption空用作输出
AutosizeTrue自动调节尺寸以适应内
容
Backcolor白色设背景色为白色
BorderStyle1-FixedSingle有边框,边框为凹形的
BackStyle1-Opaque
-H行二16一28
表4-5简单密码验证程序中窗休及各控件的属性的设置(续)
对象属性属性值说明
Label2Caption请输入密码:
AutosizeFalse不能自动调节尺寸
BorderStyle0-None没有边框
Command1Caption确定标题
Command2Caption退出标题
TextlText空用于用户输入密码
Passwordchar*输入密码时显示的字符
2011-7-1029
判断密码程序N-S结构化流程图
2011-7-1030
在窗体的声
明段中声明
(3)代码编写如下的变量在窗
DimPassAsString体的各个模
块都起作用
DimintDAsInteger
编写单击命令按钮“确定”所执行的代码。
PrivateSubCommandl_Click()
IfTextl.Text=PassThen
intD=3
Labell.Caption="密码正确,_
可以进入系统!”
Else
2011-7-1031
intD=intD-1
MsgBox”密码错误!”
IfintD=0ThenEnd,行IF结构
Labell.Caption="仔细想想,还有“
&_
Str(intD)&"次!”
Textl.SetFocus
使文本框重
EndIf薪获得焦点
EndSub
2011-7-1032
编写单击命令按钮“退出”所执行的代码。
PrivateSubCommand2_Click()
End
EndSub
编写窗体的Form_Load()事件所执行的代码。
PrivateSubForm_Load()
Pass=''Hello''
intD=3
EndSub
2011-7-1033
(4)按F5键运行工程,在文本框中输入密
码后,单击“确定”按钮。若密码输入正确,
则在框中显示“密码正确,可以进入系
统!”。
若密码错误则信息
输出框显示密码错
误,按“确定”按钮
后出现提示允许再
输入两次。
结果如图4-4和
图4-5所示。
图4-4密码正确显示结果
2011-7-1034
图46密码错误信息输出框显示密码错误,
并且提示允许再输入两次
2011-7-1035
【例4・3】求平均值和最小数。
设计工程界面如图4-6左图所示。
界面上有三个文本框,三个标签和四个命令
按钮。
图4-6求最小数和平均数工程界面的设置
2011-7-1036
该工程要求:
(1)在“输入数据:”文本框的下面输
入数据,按回车键或者单击“确定”按
钮,输入的数据就显示在“数据列表:”
下面的文本框中。如果输入的不是数据,
则给出提示"请输入数字J
(2)单击“统计”按钮在“输出结果:”
下面的文本框输出结果,显示共有多少
数、最小值和生均值所示。如果没有输
入,则给出提示“无有效的输入数据!no
(3)“数据列表:”和“输出结果:”
下面的文本框中不允许用户编辑。
2011-7-1037
表4-6求最小数和平均值工程窗体及控件属性设置值
对象属性属性值说明
Textl(名称)Textln程序引用名
Text
Text2(名称)TextOut程序引用名
Text
LockedTrue用户不能编辑此文本框
MultiLineTrue使文本框接收多行文本
ScrollBars2-Vertical有垂直滚动条
2011-7-11038
表4-6求最小数和平均值工程窗体及控件属性设置值(续)
对象属性属性值说明
Text3(名称)TextResult程序引用名
LockedTrue用户不能编辑此文本框
MultiLineTrue
Text
Command1DefaultTrue表示按回车键即为确定
Command3CancelTrue表示按ESC即为退出
2011-7-1039
(3)编写代码如下:
DimnAsInteger,SumAsSingle」
MinAsSingle
编写单击“确定”所执行的命令代码
PrivateSubCommandl_Click()
IfNotIsNumeric(Textln.Text)Then
MsgBox”请输入数字”
Textln.Text=""若文本框中输入
的不是数字则在
Textln.SetFocus消息框中提示:
ExitSub请输入数字
EndIf
2011-7-1040
若文本框是第
一次输入数字
11=11+]/则把它显示在
Ifn=1Then/输出的文本框
中同时保存在
TextOut.Text=Textln.Text变量Min中,否
则输出的文本
Min=Val(Textin)框显示的内容
再加上新输入
Else的内容。
TextOut.Text=TextOut.Text&
Chr(13)&Chr(10)&Textln.Text
2011-7-1041
IfVal(Textln)<MinThen
Min=Val(Textln)
EndIf\
EndIf若文本框
Sum=Sum+Val(Textln)中输入的
数字小于
Textln.Text=变量Min
Textln.SetFocus的值,则把
新输入的
EndSub值送入变
量Min中.
2011-7-1042
编写单击“统计”按钮所执行的代码
PrivateSubCommand2_Click()
DimsiAsString,s2AsString」
s3AsString,hhAsString
<Ifn=0Then
MsgBox”无有效的输入数据!”
ExitSub若n=0则表示没有
〔EndIf输入数字。在消
息框中提示:无
有效的输入数据!
2011-7-1043
si="共计"&Str(n)&"个数”
s2="最小值:“&Str(Min)
s3="平均值:"&Str(Sum/n)
hh=Chr(13)&Chr(lO)
TextResult.Text=si&hh&s2&
hh&s3&hh
EndSub
2011-7-1044
编写单击“清除”按钮所执行的代码
PrivateSubCommand4_Click()
TextResult.Text=
TextOut.Text=
n=0:Sum=0
Textln.SetFocus
EndSub
2011-7-1045
编写Form_Activate发生时事件执行的代码
PrivateSubForm_Activate()
n=0:Sum=0
Textln.SetFocus
EndSub
编写单击“退出”按钮所执行的代码
PrivateSubCommand3_Click()
End
EndSub
2011-7-1046
(4)运行结果。按F5键运行工程,
在出现的画面中“输入数据”下面
的文本框中输入数据,每输入1个数
据接着按“确定”按钮,被输入的
数据就在“数据列表”下面的文本
框中显示出来,输入完数据后单击
“统计”按钮,就在“输出结果”
下面的文本框中显示出结果如图4・7
所示。
2011-7-1047
图4・7求最小数和平均数工程运行结果
2011-7-1048
4.3.3Ilf函数
VB中还提供Hf函数用来实现一些比较简
单的选择结构。
Ilf函数的格式如下:
Ilf(v条件表达式〉,〈语句1>,v语句2>)
说明:
同上面提到的IF语句一样,<条件表达
式,可为算术表达式、关系表达式和布尔表
达式。当条件表达式的值为真时,执行语
句1;为假时,执行语句2。当选择结构中
无论v条件表达式〉的值为真还是假,都只
执行一个语句时可使用IIF函数。
2011-7-1049
语句:
y=IIf(v条件表达式>,V语句1>,<语句2>)
相当于:
Ifv条件表达式>Thenv语句1>Elsev语句2>
例44中计算分段函数完全可以使用IIF函
数编写。其中的If…Else结构可用如下代码
替换即可,其运行结果完全相同。
y=IIf(x>=0,1+x,1+2*x)
2011-7-1050
4.3.4多分支的If选择结构
1.多分支的If结构如下:
Ifv条件1>Then
[语句组1]
[Elselfv条件2>Then
[语句组2]]
•••
[Elselfv条件n>Then
[语句组n]]
[Else
[语句组n+1]]
EndIf
2011-7-1051
2.多分支IF结构的N・S结构化流程图
判断条件
IFElseIf••••••••••••ElseIfElse
条件1成立条件2成立条件n成立
执行语执行语执行语执行语
句组1句组2••••••••••••句组n句组n+1
2011-7-1052
3.说明:
多分支的块If结构由If语句开始,
EndIf语句结束,中间的Elself语句和
Else语句是可选项。
(1)执行时,先判断If语句后面的条件1,
如果条件1值为真,则执行语句组1中的
各语句,执行完后再执行EndIf语句;
(2)若条件1的值为假,则判断条件2,如
果条件2的值为真,则执行语句组2中的
各语句,执行完后再执行EndIf语
2011句;…口53
(3)若条件n・l的值为假,则判断条件n,
如果条件n的值为真,则执行语句组n中
的各语句,执行完后再执行EndIf语句;
否地执行Else后面语句组n+1中的各语句,
执行完后再执行EndIf语句。
(4)在多分支的块If结构中根据需要可以
有多个Elself语句,但最多只能有一个
Eke语句,使用时一定要注意。
2011-7-1054
【例4・4】某商场对顾客购物实行打折销售。规定
如下:
购物款v500元没有折扣
500元v购物款01000元折扣5%
1000元v购物款01500元折扣8%
1500元v购物款02000元折扣10%
2000元v购物款02500元折扣15%
购物款>2500元折扣20%
设计工程,当输入购物款时按“计算”按钮
就可以输出折扣后应交的实际购物款。
2011-7-1055
工程设计步骤如下:
(1)新建“标准EXE”工程,在出现的窗
体上添加两个标签、两个文本框和两个
命令按钮,如函令8所示。
(2)设置窗体和控件的属性如图4・8所示。
2011-7-10图4・8购物打折销售计算应付款工程的界面设置56
(3)编写代码如下:
编写单击“计算”按钮应执行下列代码。
PrivateSubCommandl_Click()
DimxAsSingle,yAsSingle
x=Val(Textl.Text)
Ifx<=500Then
y=x
Elselfx<=1000Then
y=(l-0.05)x
Elselfx<=1500Then
2011-7-1057
y=(l-0.08)x
Elselfx<=2000Then
y=(l-04)*x
Elselfx<=2500Then
y=(l-0.15)*x
Else
y=(l-0.2)*x
EndIf
Text2.Text=''实际交款:n&y&八元"
EndSub
2011-7-1058
编写单击“清除”按钮执行下列代码。
PrivateSubCommand2click()
Text1.Text=
Textl.Text=
EndSub
(4)运行工程。按F5运行工程,出现运行
画面后,在“请输入购物款”的右边的文
本框中输入实际购物款,然后单击“计算”
得到实际应付款数显示在第二个文本框中
如图4・9所示。
2011-7-1059
图4・9计算“实际应付款数”工程运行结果
2011-7-1060
【例4・5】设计一个流动字幕,如图4・10所示。
工程设计步骤如下:
(1)新建“标准EXE”工程,在出现的窗体上
添加一个命令按钮、一个标签和一个计时器
设计界面如图4・10所示。
(2)设置窗体及控件的属性如图4・10所示。
其中计时器的Interval属性设置为10,Enable
设为False。注意此时的命令按钮“开始”上
有一个热键S,是在给命令按钮设置Caption
属性时加上的只要在选中的字母前面加上一
个符号即可。
2011-7-1061
图4・10设计一个流动字幕工程界面及属性设置
2011-7-1062
PrivateSubCommandl_Click()
,IfCommandl.Caption="开始&S''Then
Commandl.Caption="暂停&S”
Timer1.Enabled=True
ElselfCommandl.Caption="暂停&SnThen
)Commandl.Caption="继续&C''
'Timerl.Enabled=False
Else
Commandl.Caption="暂停&S''
ITimerl.Enabled=True
EndIf
EndSub
2011-7-1063
返回/设置对
PrivateSubTimerl_Timer()象的宽度。
IfLabell.Left+Labell.Width>0Then
Labell.MoveLabell.Left-50
Else
Labell.Left=Forml.ScaleWidth
EndIf
EndSub返回/设置对
象内部的水平
度量单位数。
2011-7-1064
(4)运行程序。单击“开始”命令按
钮,则字幕开始从右向左移动,直到
在左边消失,然后接着又从右边开始
向左边移动。此时单击“暂停”按钮,
则字幕停止移动。若想继续移动字幕,
再单击“继续”按钮。请注意该程序
中只有一个命令按钮就可以控制各种
情况。如开始、暂停和继续。
2011-7-1065
图4-11流动字幕工程运行结果
2011-7-1066
【例4-6】求一元二次方程的根。
分析:一元二次方程的根,有以下几种情况:
(1)当a#)时,设delta=b?-4ac。
当判别式delta>0时,方程有两个不同的实根;
当判别式delta=0时,方程有两个相同的实根;
当判别式deltav0时,方程有两个共甄复根。
(2)当a=0,若b和时,则方程有一个根。
当a=0,若b=0时,则方程无意义。
2011-7-1067
工程设计步骤如下:
(1)新建“标准EXE”工程。在出现的窗体
上添加两个框架、五个标签、三个文本框
和两个命令按钮,其中框架1中包括三个文
本框和三个标签,框架2中包括一个标签,
如图4-12所示。
(2)设置窗体及控件的属性如图4・12所示。
2011-7-1068
图4-12求方程的根工程界面设计和属性设置
2011-7-1069
(3)编写代码如下:
编写单击“计算方程根”命令按钮所执行
的代码
PrivateSubCommandl_Click()
DimaAsSingle,bAsSingle,cAsSingle
DimsbAsSingle,xbAsSingle,rcAs
Single
a=Val(Textl.Text)
b=Val(Text2.Text)
c=Val(Text3.Text)
2011-7-1070
Ifa<>0Then
delta=bA2-4*a*c
rc=・b/(2*a)
Ifdelta>0Then
sb=Sqr(delta)/(2a)
Labell.Caption="方程有两个实根"
pl="xl="&Str(rc+sb)
p2="x2="&Str(rc-sb)
Labell.Caption=pl&Chr(13)&p2
2011-7-1071
Elselfdelta=0Then
Label2.Caption="方程有两个相等的实根”
Labell.Caption=nxl=x2n&Str(rc)
Else
xb=Sqr(-delta)/(2*a)
Label2.Caption="方程有两个的虚根"
pl=nxl=M&Str(rc)&&IIf(xb=1,_
Str(xb))&""
p2="x2=''&Str(rc)&"&IIf(xb=1,_
Str(xb))&"i"
Labell.Caption=pl&Chr(13)&p2
EndIf
Else
M◄►►1
cIfb<>0Then
y="b/c
Label2.Caption”方程仅有一个根”
}Labell.Caption"x=''&Str(y)
|Else
Labell.Caption="方程无意义!”
Labell.Caption_,,,,
'EndIf
EndIf
EndSub
2011-7-1073
编写单击“退出”命令按钮所执行的代码
PrivateSubCommand2_Click()
End
EndSub
(4)运行程序。在出现的界面上。根据提
示,首先在三个文本框中输入一元二次
方程的三个系数。然后单击Commandl
命令按钮”计算方程根”就可得到相应
方程的根如图4-13所示。
2011-7-1074
图4-13求一元二次方程根的工程运行结果
4.3.5fflSelectCase语句实现多分支选择结构
2011-7-1075
VB中还提供SelectCase语句用来实现多分支结构
1.SelectCase语句的一般格式如下:
SelectCasev选择表达式〉
[Casev表达式列表1>
[v语句组1>]]
[Casev表达式列表2>
卜语句组2>]]
[Casev表达式列表n>
[v语句组n>]]
[CaseElse
[v语句组n+l>]]
坳瞬elect76
多分支选择结构流程图
SelectCasev选择表达式,
CaseCaseCase
••••••••••••CaseElse
情况1情况2情况n
执行语执行语执行语执行语
句组1句组2••••••••••••句组n句组n+1
EndSelect
2011-7-1077
2.说明:
(1)v选择表达式〉为必选项,用来指出被选
择的表达式或变量名。可以是任何数值和字
符串表达式。
(2)在Case子句中,v表达式列表,为必选参
数,用来测试是否有与选择表达式匹配的表
达式或变量名,它必须是常量而且必须与选
择表达式或变量的类型一致。
(3)在Case子句中,v表达式列表,可以是一
个或多个表达式的值,如表4・7所示。
2011-7-1078
表4-7Case表达式列表的形式
形式示例说明
表达式Case50*b数值和字符串表达式
表达式To表达式Case1To10用来指定1个数值范围。
Case“a'To"m"
Is关系表达式CaseIs>200可以配合比较运算符来
CaseIs<=5,8,20指定1个数值范围。这里
Is是关键字。
2011-7-1079
(4)当使用多个表达式列表时,表达式各
项之间应用逗号“,”隔开。
(5)〈语句组〉是一条或多条语句为可选参
数,当v表达式列表,中有值与〈选择表达
式》相匹配时执行。
(6)CaseElse语句用于指明其他语句序列,
当v选择表达式〉与所有的Case子句中v表
达式列表》中的值都不匹配时,执行Case
Else后面的语句,虽然不是必须的。但若
在SelectCase结构中加上CaseElse语句,
就可用来处理一些不可预见的〈选择表达
式>的值。
2011-7-1080
下列Case子句的写法是正确的:
Dimx
SelectCasex
Case1
Case“a”
Case2,3,8
Case1To5
Case1,6To9
Case1To3,6To8
CaseIs<12,Is>20
WoSelect81
下列Case子句的写法是不正确的,程
序运行时并不发生错误,但是运行结果并
不是所预料的,应避免此类写法。
Dimx
SelectCasex
Casex=l
Casex="a”
Casex>12Andx<=20
EndSelect
2011-7-1082
【例4・7】例4・4题中计算打折销售款的
程序也可用SelectCase结构编写,具体
程序代码如下所示。
编写单击Commandl命令按钮“计算”
执行的代码。
PrivateSubCommandl_Click()
DimxAsSingle,yAsSingle
x=Val(Textl.Text)
2011-7-1083
SelectCasex
X为选择
CaseIs<=500表达式。
y=x
CaseIs<=1000
y=(i-0.05)
CaseIs<=1500
y=(l-0.08)
CaseIs<=2000
y=(i・o])*
2011-7-1084
CaseIs<=2500
y=(l-0.15)*x
CaseElse
y=(l-0.2)*x
EndSelect
Text2.Text=''实际交款:"&y&"元"
EndSub
2011-7-1085
编写单击“清除”按钮应执行下列代
PrivateSubCommand2click()
Textl.Text=
Text2.Text=''''
EndSub
2011-7-1086
【例4・8】某航空公司规定在旅游的旺季5,
7〜10月份,如果订票数超过20张票价优惠
15%,20张以下,优惠5%;在旅游的淡
季1・4月份,11月份,12月份,如果订票
数超过20张,票价优惠30%,20张以下,
优惠20%;其他情况一律优惠10%。
设计程序,根据月份和订票数决定票价优
惠率。
分析:根据题意,画出流程图如下页所示。
2011-7-1087
2011-7-1088
设计工程步骤如下:
(1)在窗体设计器上添加两个文框、四个标
签和一个命令按钮。
(2)设置各控件的属性如下图所示:
2011-7-1089
(3)编写程序代码
编写单击命令按钮1的事件过程代码如下
PrivateSubCommandl_Click()
DimmAsInteger,nAsInteger,rAsInteger
IfTextl.Text<0OrTextl.Text>=13Then
MsgBox”请重新输入月份“
Textl.SetFocus
ExitSub
EndIf
m=Val(Textl.Text)
n=Val(Text2.Text)
2011-7-1090
(SelectCasem
CaseIs<=4,11,12
Ifn<20Thenr=20Elser=30
Case5,7To10
Ifn<20Thenr=5Elser=15
CaseElse
r=10
IEndSelect
Label4.Caption=,,所订机票的优惠率
为:”
&丽(r)&91
为了使用更方便,再增加如下代码
PrivateSubForm_Load()
,Textl中的默认后为当前月份
Text1.Text=Month(Date)
EndSub
编写Textl获得焦点事件发生时的代码
PrivateSubTextl_GotFocus()
Textl.SelStart=0
Textl.SelLength=Len(Textl.Text)
EndSub
2011-7-1092
编写Textl_KeyPress事件发生时的代码
PrivateSubTextl_KeyPress(KeyAsciiAsInteger)
z-IfKeyAscii=13Then
rlfText1.Text>0AndText1.Text<13Then
(yTextl.SetFocus
〔EndIf
EndIf
EndSub
2011-7-1093
编写Text2_KeyPress事件发生时的代码
PrivateSubText2_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then
rIfTextl.Text>0Then
Commandl.SetFocus
(else
Textl.SetFcous
<EndIf
EndIf
EndSub
2011-7-1094
编写Textl获得焦点事件发生时的代码
PrivateSubText2_GotFocus()
Text2.SelStart=0
Textl.SelLength=Len(Text2.Text)
EndSub
(4)按F5键运行结果,分别输入不同的值
和运行结果如下页图4-14所示。
2011-7-1095
2011-7-10图4・1496
SuccesswithMoneyandJoy
附熠人生心语
•成功是一种观念
•致富是一种义务
•快乐是一种权利
•每个人都有能力、有义
务、有权利办到成功
致富快乐
附赠人生心语
成成功不是打败别人
功成功不是超越别人
成功不是名、利、权的获得
致拥有健康的身体
丰足的物质生活
富平衡的心理状态
又才能拥有成功
快
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 某汽车厂安全生产奖惩规范
- 医院综合楼建设项目初步设计
- 装修施工现场消防应急演练实施方案
- 危废库区土方开挖回填方案
- 信息通信网络机务员机房出入管理规范
- 小区化粪池清掏改造施工方案
- 扬尘治理系统项目施工方案
- 无人机巡检服务平台项目建议书
- 斜拉桥塔基地质勘察报告
- 消防设施故障报修处置流程
- 2026-2027学年八年级上学期统编版历史期中测试卷(含答案)
- 分公司章程范本
- 开展岗位能力提升全员培训实施方案
- 肾内科科室规章制度
- 内蒙古呼和浩特市新城区2025-2026学年八年级上学期期中考试物理试卷(含答案)
- 2025年军队基层常用文书写作与范例
- GB/T 20118-2025钢丝绳通用技术条件
- 渐冻症课件教学课件
- 医院重点专科建设申报汇报
- 牙齿隐裂教学课件
- 人教版 浙教版 培智 生活语文五年级上册 部分教案
评论
0/150
提交评论