1、机械工业出版社同名教材配套电子教案2003 2003 年年 6 6月月第第4章章 选择结构程序设计选择结构程序设计 条件表达式 1 11 关系运算符与关系表达式 关系运算符 关系表达式关系表达式 关系表达式的格式为表达式表达式1关系运算符表达式关系运算符表达式2关系运算符关系运算符表达式表达式32布尔运算符与布尔表达式布尔运算符与布尔表达式 VB提供的布尔运算符有:提供的布尔运算符有:And、Or、Not、Xor、Eqv、Imp等等6种种 3 运算符的优先顺序【例4-1】设变量x=4,y=1,a=7.5,b=6.2,求表达式x+y a+b And Not y 1.3 And Not y b (
2、2)再作关系运算:True And Not False (3)作非运算:True And True (4)最后得:True【例4-2】判断某个年份是闰年的根据是年份数满足下述条件之一。(1)能被4整除,但不能被100整除的年份都是闰年。(2)能被100整除,又能被400整除的年份都是闰年。设变量y表示年份,写出判断y是否闰年的布尔表达式。解:判断y是否满足条件(1)的布尔表达式是y Mod 4=0 And y Mod 100 0 判断y是否满足条件(2)的布尔表达式是y Mod 100=0 And y Mod 400=0 两者取“或”,即得判断闰年的布尔表达式y Mod 4=0 And y M
3、od 100 0 Or y Mod 100=0 And y Mod 400=0 2.单条件选择语句单条件选择语句IF 1 单行结构条件语句IFTHENELSE 单行If语句的语法格式为If条件条件Then 语句序列语句序列1 Else语句序列语句序列2【例4-3】输入x,计算y的值。其中:)0(21)0(1xxxxy 设计步骤如下:(1)建立应用程序用户界面与设置对象属性。(2)编写程序代码。写出命令按钮Command1的单击(Click)事件代码为Private Sub Command1_Click()Dim x As Single,y As Single x=Val(Text1.Text)
4、If x=0 Then y=1+x Else y=1 2*x Text2.Text=yEnd Sub【例4-4】学校对学习成绩优良的学生进行奖励,获奖的条件如下:(1)所考5门课的总分超过450分。(2)每门课的成绩都在88分以上。(3)前3门(主课)的成绩都在95分以上,其他两门(非主课)的成绩都在80分以上。输入某学生5门课的成绩s1、s2、s3、s4、s5,判断他是否能够获奖。设计步骤如下:(1)建立应用程序用户界面与设置对象属性。(2)编写程序代码。图图4-5 判断能否获奖判断能否获奖可以写出命令按钮Command1的单击(Click)事件代码为:Private Sub Command
5、1_Click()Dim s1 As Single,s2 As Single,s3 As Single,s4 As Single,s5 As Single Dim p As String s1=Val(InputBox(请输入第1门课的成绩:,输入框,0)s2=Val(InputBox(请输入第2门课的成绩:,输入框,0)s3=Val(InputBox(请输入第3门课的成绩:,输入框,0)s4=Val(InputBox(请输入第4门课的成绩:,输入框,0)s5=Val(InputBox(请输入第5门课的成绩:,输入框,0)t1=(s1+s2+s3+s4+s5=450)t2=(s1=88 And
6、 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)If t1 Or t2 Or t3 Then p=可以获奖!Else p=不能获奖!p=Str(s1)&,&Str(s2)&,&Str(s3)&,&Str(s4)&,&Str(s5)&Chr(13)&p Label1.Caption=该生五门课的成绩分别是:&Chr(13)&pEnd Sub【例4-5】利用输入框函数输入3个不同的数,选出其中最大的数。设计步骤如下:(1)建立应用程序用户界面与设置对象属性。(2)编写程序代
7、码。可以写出命令按钮Command1的单击(Click)事件代码为Private Sub Command1_Click()Dim a As Single,b As Single,c As Single a=Val(InputBox(请输入第1个数:,输入框,0)b=Val(InputBox(请输入第2个数:,输入框,0)c=Val(InputBox(请输入第3个数:,输入框,0)p=&a&,&b&,&c p=p&三个数中最大的数是:If a b And 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&c Labe
8、l1.Caption=pEnd Sub2 使用IIF函数 IIf函数的语法结构为IIf(条件表达式,真部分,假部分条件表达式,真部分,假部分)【例4-6】例4-3中命令按钮Command1的单击(Click)事件代码可以改为Private Sub Command1_Click()Dim x As Single,y As Single x=Val(Text1.Text)y=IIf(x=0,1+x,1 2*x)Text2.Text=yEnd Sub 3.块结构条件语句块结构条件语句IFTHENELSEEND IF 其语法结构为If条件条件1Then 语句列语句列1Else 语句列语句列2End I
9、f【例4-7】将例4-3中命令按钮Command1的单击(Click)事件代码改为多行If语句:Private Sub Command1_Click()Dim x As Single,y As Single x=Val(Text1.Text)If x=0 Then y=1+x Else y=1 2*x End If Text2.Text=yEnd Sub4.IF语句的嵌套语句的嵌套 1.IF语句的嵌套2.【例4-8】铁路托运行李,从甲地到乙地,规定每张客票托运费计算方法是行李重量不超过50kg时,0.25元/kg,超过50kg而不超过100kg时,其超过部分按0.35元/kg收费,超过100k
10、g时,其超过部分按0.45元/kg收费。编写程序,输入行李重量,计算并输出托运的费用。设计步骤如下:(1)建立应用程序用户界面与设置对象属性。图4-9 计算托运费(2)编写程序代码。可以写出命令按钮Command1的单击(Click)事件代码为 Private Sub Command1_Click()Dim w As Single,x As Single w=Val(Text1.Text)If w=50 Then x=0.25*w Else 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 If
11、End If Text2.Text=xEnd Sub可以将上例中命令按钮Command1的单击(Click)事件代码改为:Private Sub Command1_Click()Dim w As Single,x As Single w=Val(Text1.Text)x=IIf(w=50,0.25*w,0.25*50+IIf(w=100,0.35*(w 50),0.35*50+0.45*(w 100)Text2.Text=xEnd Sub【例4-9】某百货公司为了促销,采用购物打折扣的优惠办法:每位顾客一次购物 (1)在1000元以上者,按九五折优惠;(2)在2000元以上者,按九折优惠;(3
12、)在3000元以上者,按八五折优惠;(4)在5000元以上者,按八折优惠。设计步骤如下:(1)建立应用程序用户界面与设置对象属性。(2)编写程序代码。可以写出命令按钮Command1的单击(Click)事件代码为Private Sub Command1_Click()Dim x As Single,y As Single x=Val(Text1.Text)If x 1000 Then y=x Else If x 2000 Then y=0.95*x ElseIf x 3000 Then y=0.9*x Else If x 5000 Then y=0.85*x Else y=0.08*x End
13、 If End If End If End If Text2.Text=yEnd Sub2.IF语句的嵌套格式ELSEIF 其语法结构为If条件条件1Then 语句列语句列1ElseIf条件条件2Then 语句列语句列2 .Else 其他语句列其他语句列End If【例4-10】在例4-9中使用带ElseIf的块If语句来计算出优惠价,只需将其中命令按钮Command1的单击(Click)事件代码改为Private Sub Command1_Click()Dim x As Single,y As Single x=Val(Text1.Text)If x 1000 Then y=x ElseIf
14、 x 2000 Then y=0.95*x ElseIf x 3000 Then y=0.9*x ElseIf x 5000 Then y=0.85*x Else y=0.08*x End If Text2.Text=yEnd Sub 多分支条件选择语句多分支条件选择语句SELECT CASE 1.SELECT CASE结构与语法结构与语法语句的语法格式为Select Case测试条件测试条件 Case表达式表表达式表1 语句列语句列1 Case表达式表表达式表2 语句列语句列2 .Case Else 其他语句列其他语句列End Select2.SELECT CASE结构的应用【例4-11】在
15、例4-9中使用Select Case语句来计算优惠价,只需将其中命令按钮Command1的单击(Click)事件代码改为Private Sub Command1_Click()Dim x As Single,y As Single x=Val(Text1.Text)Select Case x Case Is 1000 y=x Case Is 2000 y=0.95*xCase Is 3000 y=0.9*x Case Is 5000 y=0.85*x Case Else y=0.08*x End Select Text2.Text=yEnd Sub【例4-12】某航空公司规定在旅游的旺季79月
16、份,如果订票数超过20张,票价优惠15%,20张以下,优惠5%;在旅游的淡季15月份、10月份、11月份,如果订票数超过20张,票价优惠30%,20张以下,优惠20%;其他情况一律优惠10%。设计程序,根据月份和订票张数决定票价的优惠率。设计步骤如下:(1)建立应用程序用户界面与设置对象属性。(2)编写程序代码。根据流程图,可以写出命令按钮Command1的单击(Click)事件代码为:Private Sub Command1_Click()Dim m As Integer,n As Integer,r As Integer m=Val(Text1.Text)n=Val(Text2.Text)
17、Select Case m Case Is=5,10,11 If n 20 Then r=20 Else r=30Case 7 To 9 If n 0 And Text1.Text 0 Then Command1.SetFocus End IfEnd Sub使用计时器控件使用计时器控件 1.设计一个电子表设计一个电子表【例4-13】在窗体上设计一个数字时钟,如图4-15所示。图4-16 建立界面与设置属性 图4-15 数字时钟 设计步骤如下:(1)建立应用程序用户界面。(2)设置对象属性,(3)编写程序代码。编写计时器控件Timer1的Timer事件代码:Private Sub Timer1_
18、Timer()Label1.Caption=Format(Time,Form1.Tag)Label2.Caption=IIf(Hour(Time)12,下午,上午)End Sub编写命令按钮Command1的Click事件代码:Private Sub Command1_Click()If Command1.Caption=改为12小时 Then Form1.Tag=hh:mm:ss AM/PM Command1.Caption=改为24小时 Label2.Visible=True Else Form1.Tag=hh:mm:ss Command1.Caption=改为12小时 Label2.Vi
19、sible=False End IfEnd Sub 2.设计一个计时器【例4-14】一个简单计时器。如图4-17所示。图4-17 简单计时器 图4-18 计时器的设计设计步骤如下:(1)建立应用程序用户界面与设置对象属性。(2)编写程序代码。编写Command1(开始)的Click事件代码:Private Sub Command1_Click()If Command1.Caption=&S 暂停 Then Command1.Caption=&C 继续 Timer1.Enabled=False Else Command1.Caption=&S 暂停 If Label1.Caption=00:00
20、:00:0 Then Form1.Tag=Timer Timer1.Enabled=True End IfEnd Sub编写Command2(重置)的Click事件代码:Private Sub Command2_Click()Form1.Tag=TimerLabel1.Caption=00:00:00:0End Sub 编写Timer1的Timer事件代码:Private Sub Timer1_Timer()m=Timer Form1.Tag n0=(m*10)Mod 10 m=Int(m)n1=Format(m Mod 60,00.)n2=Format(m 60)Mod 60,00:)n3=
21、Format(m 3600,00:)Label1.Caption=n3&n2&n1&n0End Sub3.设计一个流动字幕板设计一个流动字幕板【例4-15】为一个应用系统设计流动字幕板,如图4-19所示,标题“欲穷千里目,更上一层楼”在窗体中自右至左地反复移动。图4-19 电子标题板 图4-20 用户界面的设计设计步骤如下:(1)建立应用程序用户界面与设置对象属性 (2)编写程序代码。编写命令按钮Command1的Click事件代码:Private Sub Command1_Click()If Command1.Caption=&S 暂停 Then Command1.Caption=&C 继续
22、 Timer1.Enabled=FalseElse Command1.Caption=&S 暂停 Timer1.Enabled=True End IfEnd Sub编写Timer1的Timer事件代码:Private Sub Timer1_Timer()If Label1.Left+Label1.Width 0 Then Label1.Move Label1.Left 20 Else Label1.Left=Form1.ScaleWidth End IfEnd Sub提供简单选择的控件 1.选项按钮【例4-16】在例4-13中使用选项按钮组来选择时间的格式编写新增控件的事件代码。编写选项按钮O
23、ption1的Click事件代码:Private Sub Option1_Click()Form1.Tag=hh:mm:ss AM/PM Label2.Visible=TrueEnd Sub 编写选项按钮Option2的Click事件代码:Private Sub Option2_Click()Form1.Tag=hh:mm:ss Label2.Visible=FalseEnd Sub例4-17】设银行定期存款年利率为:1年期2.25%,2年期2.43%,3年期2.70%,5年期2.88%(不计复利)。今有本金a元,5年以后使用,共有以下6种存法:l 存一次5年期。l 存一次3年期,一次2年期。
24、l 存一次3年期,两次1年期。l 存两次2年期,一次1年期。l 存一次2年期,三次1年期。l 存五次1年期。分别计算各种存法5年后到期时的本息合计 编写命令按钮Command1的单击(Click)事件代码:Private Sub Command1_Click()Dim a As Single,y As Single Dim x1 As Single,x2 As Single Dim x3 As Single,x5 As Single a=Val(Text1.Text)x1=0.0225:x2=0.0243 x3=0.027:x5=0.0288 Select Case True Case Opt
25、ion1.Value y=(1+5*x5)*aCase Option2.Value y=(1+3*x3)*(1+2*x2)*a Case Option3.Value y=(1+3*x3)*(1+x1)2*a Case Option4.Value y=(1+2*x2)2*(1+x1)*a Case Option5.Value y=(1+2*x2)*(1+x1)3*a Case Option6.Value y=(1+x1)5*a End SelectText2.Text=y Text1.SetFocusEnd Sub 编写文本框Text1的GotFocus事件代码:Private Sub Text
26、1_GotFocus()Text1.SelStart=0 Text1.SelLength=Len(Text1.Text)End Sub2.使用图形选项按钮【例4-18】用图形选项按钮组控制流动字幕中的字体,如图4-23所示。设计步骤如下:(1)建立应用程序用户界面与设置对象属性。(2)编写程序代码。依次编写选项按钮Option1Option4的Click事件代码:Private Sub Option1_Click()Text1.FontName=宋体End SubPrivate Sub Option2_Click()Text1.FontName=隶书End SubPrivate Sub Opt
27、ion3_Click()Text1.FontName=黑体End SubPrivate Sub Option4_Click()Text1.FontName=楷体_GB2312End Sub2 复选框 复选框的状态由其Value属性决定:0 假 1 真 2 暗1.使用单个复选框使用单个复选框【例4-19】在上例中,增加复选框,控制选项按钮组的显示。增加复选框控件Check1的Click事件代码:Private Sub Check1_Click()Option1.Visible=Check1.Value Option2.Visible=Check1.Value Option3.Visible=Ch
28、eck1.Value Option4.Visible=Check1.ValueEnd Sub2.使用多个复选框【例4-20】设计一个个人资料输入窗口,使用选项按钮组输入性别与民族,使用复选框输入个人爱好,如图4-25所示。.图4-25 使用多个复选框 图4-26 建立用户界面 设计步骤如下:(1)建立应用程序用户界面。(2)设置对象属性。(3)编写程序代码。编写命令按钮Command1的Click事件代码:Private Sub Command1_Click()If Text1.Text=Then a=InputBox(您忘了输入姓名!,注意,请在此输入姓名)If a=Or a=请在此输入姓名
29、 Then Exit Sub Text1.Text=a End If3.复选框的图形方式复选框的图形方式【例4-21】利用图形复选框来控制文本的字体风格,如图4-27所示。设计步骤如下:(1)建立应用程序用户界面。(2)设置对象属性。(3)编写代码。复选框控件Check1的Click事件代码:Private Sub Check1_Click()Check2.Enabled=Check1.Value Check3.Enabled=Check1.Value Check4.Enabled=Check1.Value Check1.Caption=IIf(Check4.Caption=锁上,打开,锁上)
30、End Subp1=Text1.Text+,p2=IIf(Option1,男,女)+,p3=IIf(Option3,汉族,少数民族)p4=,喜欢:If Check1.Value=1 Then p4=p4+Check1.Caption+、If Check2.Value=1 Then p4=p4+Check2.Caption+、If Check3.Value=1 Then p4=p4+Check3.Caption+、If Check4.Value=1 Then p4=p4+Check4.Caption+、aa=p1+p2+p3+IIf(p4=,喜欢:,,无爱好。,p4)Label4.Caption
31、=Left(aa,Len(aa)1)+。Text1.SetFocusEnd Sub 编写文本框Text1的Change事件代码:Private Sub Text1_Change()Label4.Caption=End Sub复选框控件Check2的Click事件代码:Private Sub Check2_Click()Text1.FontBold=Check2.ValueEnd Sub 复选框控件Check3的Click事件代码:Private Sub Check3_Click()Text1.FontItalic=Check3.ValueEnd Sub 复选框控件Check4的Click事件代
32、码:Private Sub Check4_Click()Text1.FontUnderline=Check4.ValueEnd Sub习题四习题四 4.1 写出下列各表达式的值。(1)2*3=8 (2)BCD BCE(3)12345 12345&ABC (4)Not 2*5 11(5)4=4 And 5 2+2 (6)8 5 Or Not 10 12+3(7)23 3 And 5 4 And 7=5 4.2 用布尔表达式表示下列命题。(1)n是m的倍数(2)n是小于正整数k的偶数(3)|x|y|或x y(4)x,y其中有一个小于z(5)x,y都小于z(6)y 10,1,并且y 1,10 4.3
33、 根据所给条件,列出布尔表达式。(1)闰年的条件是:年号(year)能被4整除,但是不能被100整除;或者能被400整除。(2)一元二次方程ax2+bx+c=0有实根的条件为:a 0,并且b2 4ac 0。(3)征兵的条件是:男性(sex)年龄(age)在1820岁之间,身高(size)在1.65m以上;或者女性(sex)年龄(age)在1618岁之间,身高(size)在1.60m以上。(4)分房的条件为:已婚(marrigerat),年龄(age)在26岁以上,工作年限(workingage)在5年以上。4.4 “x是小于100的非负数”,用VB表达式表示正确的是(1)0 x 100 (2)
34、0=x 100(3)0=x And x 100 (4)0=x Or x 100 4.5 选择结构的特点是什么?用流程图描述看交通灯通过十字路口的过程。4.6 输入3个不同的数,将它们从大到小排序。4.7 任给3个实数,求其中间数(即其值大小居中者)。4.8 编写程序,任意输入一个整数,判定该整数的奇偶性。4.9 文本框的PasswordChar属性可以隐蔽用户通过键盘输入的字符。编写程序,利用文本框检查用户口令,如图4-28所示。4.10 键盘输入a、b、c的值,判断它们能否构成三角形的3个边。如果能构成一个三角形,则计算三角形的面积。4.11 求一元二次方程的根。4.12 输入一个数字(06
35、),用中英文显示星期几。4.13 给定年号与月份,判断该年是否闰年,并根据给出的月份来判断是什么季节和该月有多少天?(闰年的条件是:年号能被4整除但不能被100整除,或者能被400整除。)4.14 若基本工资大于等于600元,增加工资20%;若小于600元大于等于400元,则增加工资15%;若小于400元则增加工资10%。请根据用户输入的基本工资,计算出增加后的工资。4.15 编制程序,根据用户输入的考试成绩(百分制,若有小数则四舍五入),按表4-11的划分标准,输出相应的等级。分 数等 级90100优秀8089良好7079中等6069及格 60不及格 4.16 输入圆的半径r,利用选项按钮,选择运算:计算面积、计算周长等。4.17 设计一个计时器,能够设置倒计时的时间,并进行倒计时,如图4-29所示。