1、中国石油大学(北京)计算机系1Visual Basic程序设计程序设计 第第4章章 选择结构程序设计选择结构程序设计2第第4章章 选择结构程序设计选择结构程序设计 4.1 选择结构程序的概念选择结构程序的概念 4.2 条件表达式条件表达式 4.3 单条件选择语句单条件选择语句IF 4.4 多分支条件选择语句多分支条件选择语句Select Case 4.5 使用计时器控件使用计时器控件 4.6 提供简单选择的控件提供简单选择的控件3关系运算符与关系表达式关系运算符与关系表达式 ch4-4.2.1o 关系运算符都是双目运算,是用来比较关系运算符都是双目运算,是用来比较两个运算量之间的关系,若关系成
2、立,两个运算量之间的关系,若关系成立,结果为结果为True,若关系不成立,结果为,若关系不成立,结果为False。o 在在VB中,中,True的值等于的值等于-1;False的值等于的值等于04关系运算符与关系表达式关系运算符与关系表达式 ch4-4.2.1运算符运算符含义含义例子例子结果结果小于小于15+1020False=小于或等于小于或等于10大于大于1020False=大于或等于大于或等于“This”=“That”True=等于等于“This”=“That”False不等于不等于“This”“That”True5关系运算符与关系表达式关系运算符与关系表达式 ch4-4.2.1关系运算的
3、规则如下:关系运算的规则如下:(1 1)当两个操作式均为数值型,按数值大小比较。)当两个操作式均为数值型,按数值大小比较。(2)字符串比较)字符串比较,则按字符的则按字符的ASCII码值从左到右码值从左到右一一比较一一比较,直到出现不同的字符为止直到出现不同的字符为止.。例:例:ABCDE ABRA 结果为结果为 False (3)数值型与可转换为数值型的数据比较,)数值型与可转换为数值型的数据比较,如:如:29189,按数值比较,结果为,按数值比较,结果为False。(4)数值型与不能转换成数值型的字符型比较,)数值型与不能转换成数值型的字符型比较,如:如:77 sdcd,不能比较,系统出错
4、。,不能比较,系统出错。6逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式 ch4-4.2.2数学式:数学式:10X=10 And X20 7运算符的优先顺序运算符的优先顺序 ch4-4.2.3not 23结果是?结果是?not(23)结果是?结果是?Not 5 字符运算符字符运算符关系运算符关系运算符逻逻辑运算辑运算8运算符的优先顺序运算符的优先顺序 ch4-4.2.3o 例例1:设变量:设变量x=4,y=-1,a=7.5,b=-6.2,求表达式,求表达式x+ya+b And Not yb的值。的值。9举例举例 例例2:用人单位招聘秘书:年龄小于:用人单位招聘秘书:年龄小于40岁,女性,学历专科
5、岁,女性,学历专科或本科。写成条件或本科。写成条件VB的表达式:的表达式:年龄年龄=39 性别性别=“女女”学历学历=“专科专科”学历学历=“本科本科”AndOrAnd()10举例举例判断某个年份是闰年的根据是年份满足下述判断某个年份是闰年的根据是年份满足下述条件之一。条件之一。(1)能被)能被4整除,但不能被整除,但不能被100整除的年整除的年份都是闰年份都是闰年(2)能被)能被100整除,又能被整除,又能被400整除的年整除的年份都是闰年份都是闰年设变量设变量y表示年份,则表示年份,则11举例举例判断判断y是否满足条件是否满足条件(1):y Mod 4=0 And y Mod 100 0判
6、断判断y是否满足条件是否满足条件(2):y Mod 100=0 And y Mod 400=0两者取两者取 ory Mod 4=0 And y Mod 100 0 Ory Mod 100=0 And y Mod 400=012举例举例例例3学校对学习成绩优良的学生进行学校对学习成绩优良的学生进行奖励,获奖的条件如下:奖励,获奖的条件如下:(1)所考)所考5门课的总分超过门课的总分超过450。(2)每门课的成绩都在)每门课的成绩都在88分以上分以上(3)前)前3门主课的成绩都在门主课的成绩都在95分以上,分以上,其他两门的成绩都在其他两门的成绩都在80分以上分以上13举例举例t1=(s1+s2+
7、s3+s4+s5=450)t2=(s1=88 And s2=88 And s3=88 And s4=88 And s5=88)t3=(s1=95 And s2=95 And s3=95 And s4=80 And s5=80)14单分支结构单分支结构 ch4-4.3.11.IfThen语句语句(单分支结构单分支结构)If Then 语句块语句块 End If 或或 If Then 15单分支结构单分支结构 ch4-4.3.1例4:已知两个数已知两个数x和和y,比较它们的大,比较它们的大小,使得小,使得x大于大于y。If xy Then t=x x=y y=t End If 或 If x b A
8、nd a c Then p=p&a If b a And b c Then p=p&b If c a And c b Then p=p&c17双分支结构双分支结构 ch4-4.3.1If If Then Then 1ElseElse 2End IfEnd If18双分支结构双分支结构 ch4-4.3.1例例6输入输入X,计算,计算Y的值,其中的值,其中If x0 Then y=sin(x)+sqr(x*x+1)Else y=cos(x)x3+3*xEnd Ifyxxxxxxxsincos23103019双分支结构双分支结构 ch4-4.3.1例例7学校对学习成绩优良的学生进行学校对学习成绩优良
9、的学生进行奖励,获奖的条件如下:奖励,获奖的条件如下:(1)所考)所考5门课的总分超过门课的总分超过450。(2)每门课的成绩都在)每门课的成绩都在88分以上分以上(3)前)前3门主课的成绩都在门主课的成绩都在95分以上,分以上,其他两门的成绩都在其他两门的成绩都在80分以上分以上20双分支结构双分支结构 ch4-4.3.1t1=(s1+s2+s3+s4+s5=450)t2=(s1=88 And s2=88 And s3=88 And s4=88 And s5=88)t3=(s1=95 And s2=95 And s3=95 And s4=80 And s5=80)21双分支结构双分支结构 c
10、h4-4.3.1If t1 Or t2 Or t3 Then Print 可以获奖可以获奖Else Print 不能获奖不能获奖End If22IIF函数函数 ch4-4.3.2Dim x As Single,y As Singlex=Val(text1.Text)y=IIf(x=0,1+x,1-2*x)23If语句的嵌套语句的嵌套 ch4-4.3.4o If语句的嵌套是指语句的嵌套是指If或或Else后面的语句后面的语句块中又包含块中又包含If语句。语句。o 例例4-424If语句的嵌套语句的嵌套 ch4-4.3.4例例8根据不同的时间段发出问候语根据不同的时间段发出问候语h=Hour(Ti
11、me)If h 12 Then Print 早上好!早上好!Else If h 18 Then Print 下午好!下午好!Else Print 晚上好!晚上好!End IfEnd If25If语句的嵌套语句的嵌套 ch4-4.3.4例9输入输入w,计算,计算x的值的值)100()100(45.05035.05025.0)10050()50(35.05025.0)50(25.0wwwwwwxIf w=50 Then x=0.25*wElse If w=100 Then x=0.25*50+0.35*(w-50)Else x=0.25*50+0.35*50+0.45*(w-100)End IfE
12、nd If26If语句的嵌套语句的嵌套 ch4-4.3.4例例10输入输入x,计算,计算y的值的值Y=X (x1000)0.95X (1000 x2000)0.9X (2000 x3000)0.85X (3000 x5000)0.8X (x5000)27IfThenElseIf语句语句 ch4-4.3.4If x 1000 Then y=xElseIf x 2000 Then y=0.95*xElseIf x 3000 Then y=0.9*xElseIf x 5000 Then y=0.85*xElse y=0.8*xEnd If28IfThenElseIf语句语句 ch4-4.3.4o 例
13、例11 已知百分制成绩已知百分制成绩mark,显示对应的五级制成绩,显示对应的五级制成绩If mark 60 Then Print 不及格不及格 ElseIf mark 70 Then Print 及格及格 ElseIf mark 80 Then Print 中中 ElseIf mark=0 Then D0,方程有两个实根,方程有两个实根 x1=(-b+Sqr(D)/(2*a)x2=(-b-Sqr(D)/(2*a)Else x1=无实根无实根 a0,D0,无实根无实根 x2=x1 End If30Select Case结构结构 ch4-4.4.1Select Case 变量或表达式变量或表达式
14、 Case 表达式列表表达式列表1语句块语句块1 Case 表达式列表表达式列表2语句块语句块2 Case Else语句块语句块n+1End Select测试条件31Select Case结构结构 ch4-4.4.1用用Select Case语句实现输入语句实现输入x,计算,计算y的的值值Y=X (x1000)0.95X (1000 x2000)0.9X (2000 x3000)0.85X (3000 x5000)0.8X (x5000)32Select Case结构结构 ch4-4.4.1Select Case x Case Is 1000 y=x Case Is 2000 y=0.95*x
15、 Case Is 3000 y=0.9*x Case Is=90 Print 优优 Case Is=80 80 To 89 Print 良良 Case 70 To 79 Print 中中 Case 60 To 69 Print 及格及格 Case Else Print 不及格不及格End Select34Select Case结构结构 ch4-4.4.1o表达式表有三种方法可以确定设定值(1)一组值(用逗号隔开)。示例:Case 1,3,5 (2)表达式1 TO 表达式2。示例:Case 60 To 80(3)Is关系式。示例:Case Is=A And Ucase(strC)=0 And s
16、trC=9 Then Print strC+是数字字符 Else Print strC+其他字符 End If37Select Case结构的应用结构的应用 ch4-4.4.2o 例例13根据月份和票张数决定票价的优根据月份和票张数决定票价的优惠率。旺季惠率。旺季7-9,票张数,票张数20,15%;票张数票张数20,5%;淡季淡季15,10、11月份,票张数月份,票张数20,30%;票张数票张数20,20%;其他情况一律优惠其他情况一律优惠10%38Select Case结构的应用结构的应用 ch4-4.4.2Select Case m Case Is=5,10,11 If n 20 Then
17、 r=20 Else r=30 Case 7 To 9 If n 20 Then r=5 Else r=15 Case Else r=10End Select394.5 使用计时器控件使用计时器控件o Timer控件以重复的时间间隔产生一个事件控件以重复的时间间隔产生一个事件2.常用属性常用属性 Enabled属性:属性:True:计时;:计时;False停止计时停止计时 Interval属性:设置两个属性:设置两个Timer事件之间的时间事件之间的时间间隔,其值以间隔,其值以毫秒毫秒为单位为单位3.事件事件 计时器控件只响应一个计时器控件只响应一个Timer事件。也就是说,事件。也就是说,计
18、时器控件对象在间隔了一个计时器控件对象在间隔了一个Interval设定时设定时间后,便触发一次间后,便触发一次Timer事件事件40计时器控件举例计时器控件举例例例14设计一个流动字幕板设计一个流动字幕板 例例15电子表电子表41单选按钮单选按钮 ch4-4.6.1o 单选按钮单选按钮(OptionButton)42单选按钮单选按钮 ch4-4.6.1o 一组单选钮控件可以提供一组彼此相互一组单选钮控件可以提供一组彼此相互排斥的选项,任何时刻用户只能从中选排斥的选项,任何时刻用户只能从中选择一个选项,被选中项目左侧圆圈中会择一个选项,被选中项目左侧圆圈中会出现一黑点。出现一黑点。43单选按钮单
19、选按钮 ch4-4.6.1o 例例单选按钮程序举例单选按钮程序举例o 主要属性:主要属性:44单选按钮单选按钮 ch4-4.6.1(1)Caption:文本标题:文本标题(2)Alignment:0:Left Justify(缺省设置缺省设置)控件钮控件钮在左边,标题显示在右边。在左边,标题显示在右边。1:Right Justify 控件钮在右边,控件钮在右边,标题显示在左边。标题显示在左边。(3)Value True:单选钮被选定单选钮被选定 False:单选钮未被选定单选钮未被选定45单选按钮单选按钮 ch4-4.6.1Private Sub Optionl_Click()Text1.Fo
20、ntName=“黑体黑体”End SubPrivate Sub Option2_Click()Text1.FontName=“楷体楷体_GB2312End Sub常用事件46单选按钮单选按钮 ch4-4.6.1例例控制文本框中文本的字体变化。控制文本框中文本的字体变化。47单选按钮单选按钮 ch4-4.6.1Private Sub cmdOk_Click()If optFont1=True Then Text1.FontName=宋体宋体 If optFont2=True Then Text1.FontName=隶书隶书 If optFont3=True Then Text1.FontName
21、=幼圆幼圆End SubPrivate Sub Form_Load()Text1.FontName=宋体宋体 Text1.FontSize=12 optFont1=TrueEnd SubIf optFont1=True Then Text1.FontName=宋体宋体If optFont2=True Then Text1.FontName=隶书隶书If optFont3=True Then Text1.FontName=幼圆幼圆48单选按钮单选按钮 ch4-4.6.1例例输入两个运算数和运算符输入两个运算数和运算符(+、-、*或或/),组成算式并计算结果,组成算式并计算结果49单选按钮单选按钮
22、 ch4-4.6.1Private Sub Command1_Click()Dim a As Single,b As Single,t As Single,s As String a=Val(Text1.Text):b=Val(Text2.Text)Select Case True Case Option1.Value +运算运算 t=a+b Case Option2.Value -运算运算 t=a-b Case Option3.Value *运算运算 t=a*b Case Option4.Value /运算运算 t=a/b End SelectEnd Sub50单选按钮单选按钮 ch4-4.
23、6.1o Style属性属性 当值为当值为0时,标准样式;当值为时,标准样式;当值为1时,图时,图形样式,其外观类似于命令按钮。形样式,其外观类似于命令按钮。51复选框复选框 ch4-4.6.2o 复选框(复选框(CheckBox)一组复选框控件)一组复选框控件可以提供多个选项,它们彼此独立工作,可以提供多个选项,它们彼此独立工作,所以用户可以同时选择任意多个选项,所以用户可以同时选择任意多个选项,选择某一选项后,该控件将显示选择某一选项后,该控件将显示,而清而清除此选项后除此选项后消失。消失。52复选框复选框 ch4-4.6.2o Value属性属性0-Unchecked:未被选定:未被选定
24、1-Checked:选定:选定2-Grayed:灰色,不可用:灰色,不可用53复选框复选框 ch4-4.6.2例例复选框程序举例复选框程序举例54复选框复选框 ch4-4.6.2Private Sub Check1_Click()If Check1.Value=1 Then Text1.FontBold=True Else Text1.FontBold=False End IfEnd Sub55复选框复选框 ch4-4.6.2Private Sub Check2_Click()If Check1.Value=1 Then Text1.FontItalic=True Else Text1.Fon
25、tItalic=False End IfEnd Sub56复选框复选框 ch4-4.6.2例例复选框程序举例复选框程序举例57复选框复选框 ch4-4.6.2Private Sub Check1_Click()If Check1.Value=1 Then Text1.FontName=楷体楷体_GB2312 Else Text1.FontName=宋体宋体 End IfEnd SubPrivate Sub Check2_Click()If Check2.Value=1 Then Text1.FontItalic=-1 Else Text1.FontItalic=0 End IfEnd SubP
26、rivate Sub Check3_Click()If Check3.Value=1 Then Text1.FontSize=25 Else Text1.FontSize=9 End IfEnd Sub58复选框复选框 ch4-4.6.2Private Sub Check4_Click()If Check4.Value=1 Then Text1.ForeColor=RGB(255,0,0)Else Text1.ForeColor=RGB(0,0,0)End IfEnd Sub59单选钮和复选框综合举例单选钮和复选框综合举例例例用单选钮和复选框设置文本框的字体用单选钮和复选框设置文本框的字体60
27、单选钮和复选框综合举例单选钮和复选框综合举例Sub Option1_Click()Text1.FontName=宋体宋体“End Sub Sub Option2_Click()Text1.FontName=黑体黑体“End Sub Sub Check1_Click()Text1.FontBold=Not Text1.FontBoldEnd Sub Sub Check2_Click()Text1.FontItalic=Not Text1.FontItalicEnd Sub 61单选钮和复选框综合举例单选钮和复选框综合举例o 练习练习4-1编程实现如下图所示功能编程实现如下图所示功能62单选钮和复
28、选框综合举例单选钮和复选框综合举例Private Sub Command1_Click()Dim str As String,link As String link=Chr(13)&Chr(10)If Option1.Value=True Then str=计算机专业计算机专业 Else str=机电专业机电专业 End If str=str&选择了:选择了:&link If Check1.Value=1 Then str=str&link&高等数学高等数学 If Check2.Value=1 Then str=str&link&大学英语大学英语 If Check3.Value=1 Then
29、str=str&link&程序设计程序设计 MsgBox str,vbYesNo,采集信息采集信息End Sub63例题精解例题精解1.在窗体上画一个名称为在窗体上画一个名称为Comand1的命令按钮和两个名称分别为的命令按钮和两个名称分别为Text1,Text2的的文本框,然后编写如下事件过程:文本框,然后编写如下事件过程:Private Sub Command1_Click()n=Text1.textSelect Case nCase 1 to 20 x=10Case 2,4,6x=20Case Is10C)Case Is10 And Is1065例题精解例题精解3.在窗体上画一个名称为在
30、窗体上画一个名称为 Command1的命令按钮,然后编写如下事件过的命令按钮,然后编写如下事件过程:程:Private Sub Command1_Click()x=InputBox(Input)Select Case xCase 1,3Print 分支分支1 Case Is4 Print 分支分支2“Case Else Print Else分支分支“End SelectEnd Sub程序运行后,如果在输入对话框中输入程序运行后,如果在输入对话框中输入2,则窗体上显示的是,则窗体上显示的是。A)分支分支1 B)分支分支2 C)Else分支分支 D)程序出错程序出错(2004.9)66例题精解例题
31、精解4.在窗体上画一个名称为在窗体上画一个名称为Timer1的计时器的计时器控件,要求每隔控件,要求每隔0.5秒发生一次计时器事秒发生一次计时器事件,则以下正确的属性设置语句是件,则以下正确的属性设置语句是。(。(2004.9)A)Timer1.Interval=0.5B)Timer1.Interval=5C)Timer1.Interval=50D)Timer1.Interval=50067例题精解例题精解5.在窗体上画一个文本框和一个计时器控件,名称分别是在窗体上画一个文本框和一个计时器控件,名称分别是Text1和和Timer1,在属性窗口把计时器的在属性窗口把计时器的Interval属性设
32、置为属性设置为1000,Enabled属性设置属性设置为为False。程序运行后,如果单击命令按钮,则每隔一秒钟在文本框中显。程序运行后,如果单击命令按钮,则每隔一秒钟在文本框中显示一次当前时间。以下是实现上述操作的程序:(示一次当前时间。以下是实现上述操作的程序:(2005.4)Private Sub Command1_Click()Timer1._End SubPrivate Sub Timer1_Timer()Text1.text=TimeEnd Sub在填空处应填入的内容是。在填空处应填入的内容是。A)Enabled=True B)Enabled=False C)Visible=Tru
33、e D)Visible=False68例题精解例题精解6.在窗体上画两个单选按钮,名称分别是在窗体上画两个单选按钮,名称分别是Option1,Option2,标题标题分别为分别为“宋体宋体”和和“黑体黑体”;一个复选框,名称为;一个复选框,名称为Check1,标题标题为为“粗体粗体”;一个文本框,名称为;一个文本框,名称为Text1,Text属性为属性为“改变文改变文字字体字字体”。要求程序运行时,。要求程序运行时,“宋体宋体”单选按钮和单选按钮和“粗体粗体”复选复选框被选中,则能够实现上述要求的语句序列是框被选中,则能够实现上述要求的语句序列是A)Option1.Value=TrueChec
34、k1.Value=FalseB)Option1.Value=True Check1.Value=TrueC)Option2.Value=FalseCheck1.Value=TrueD)Option1.Value=True Check1.Value=169例题精解例题精解7.当一个复选框被选中时,它的当一个复选框被选中时,它的Value的的属性的值是属性的值是 A)3 B)2 C)1 D)070例题精解例题精解o“X是小于是小于100的非负数的非负数”,用,用VB表达式表示表达式表示()()o 设设a=5,b=6,c=7,d=8,则执行语句,则执行语句x=IIF(ab)And(cBPrint C
35、71例题精解例题精解o 计时器控件能有规律地以一定时间间隔计时器控件能有规律地以一定时间间隔触发()事件,并执行该事件过程触发()事件,并执行该事件过程中的程序代码。中的程序代码。72例题精解例题精解o 在窗体上画一个计时器控件和一个标签。当程在窗体上画一个计时器控件和一个标签。当程序运行后,将在标签中显示当前时间的数字时序运行后,将在标签中显示当前时间的数字时钟。钟。Private Sub Form_Load()Timer1.Interval=1000End SubPrivate Sub Timer1_Timer()?End Sub73例题精解例题精解o下列程序运行时,当单击窗体后,从键盘输入一个字符,判断该下列程序运行时,当单击窗体后,从键盘输入一个字符,判断该字符是字母字符、数字字符还是其他字符,并做相应显示。字符是字母字符、数字字符还是其他字符,并做相应显示。Dim x As String*1x=?(请输入单个字符请输入单个字符,字符字符)Select Case UCase?case?Print x+是字母字符是字母字符 case?Print x+是数字字符是数字字符 Case Else Print x+是其他字符是其他字符End Select