4.1选择结构程序设计的概念4.2条件表达式4.2.1关系运算符与关系表达式关系表达式是指用关系运算符将两个表达式连接起来的式子(例如a+b0),关系运算符又称比较运算符,用来对两个表达式的值进行比较,比较的结果是一个布尔值(True或False),这个结果就是关系表达式的值。1.关系运算符VB提供的关系运算符有以下6种,如表4-1所示。2.关系表达式关系表达式的格式为〈表达式1〉〈关系运算符〉〈表达式2〉[〈关系运算符〉〈表达式3〉…]4.2.3运算符的优先顺序【例4-2】判断某个年份是闰年的根据是年份数满足下述条件之一。(1)能被4整除,但不能被100整除的年份都是闰年。(2)能被100整除,又能被400整除的年份都是闰年。设变量y表示年份,写出判断y是否闰年的布尔表达式。解:判断y是否满足条件(1)的布尔表达式是yMod4=0AndyMod1000判断y是否满足条件(2)的布尔表达式是yMod100=0AndyMod400=0两者取“或”,即得判断闰年的布尔表达式yMod4=0AndyMod1000OryMod100=0AndyMod400=04.3单条件选择语句IF4.3.1单行结构条件语句IF…THEN…ELSE单行If语句的语法格式为If〈条件〉Then[〈语句序列1〉][Else〈语句序列2〉]【例4-3】输入x,计算y的值。其中:)0(21)0(1xxxxy设计步骤如下:(1)建立应用程序用户界面与设置对象属性(2)编写程序代码。根据流程图,可以写出命令按钮Command1的单击(Click)事件代码为PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)Ifx=0Theny=1+xElsey=1–2*xText2.Text=yEndSub【例4-5】利用输入框函数输入3个不同的数,选出其中最大的数。分析:若a是a、b、c三个数中的最大数,则应有ab并且ac,依此类推。设计步骤如下:(1)建立应用程序用户界面与设置对象属性。(2)编写程序代码。根据流程图,可以写出命令按钮Command1的单击(Click)事件代码为PrivateSubCommand1_Click()DimaAsSingle,bAsSingle,cAsSinglea=Val(InputBox(请输入第1个数:,输入框,0))b=Val(InputBox(请输入第2个数:,输入框,0))c=Val(InputBox(请输入第3个数:,输入框,0))p=&a&,&b&,&cp=p&三个数中最大的数是:IfabAndacThenp=p&aIfbaAndbcThenp=p&bIfcaAndcbThenp=p&cLabel1.Caption=pEndSub4.3.2使用IIF函数还可以使用IIf函数来实现一些比较简单的选择结构。IIf函数的语法结构为IIf(〈条件表达式〉,〈真部分〉,〈假部分〉)【例4-6】例4-3中命令按钮Command1的单击(Click)事件代码可以改为PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)y=IIf(x=0,1+x,1–2*x)Text2.Text=yEndSub4.3.3块结构条件语句IF…THEN…ELSE…ENDIF其语法结构为If〈条件1〉Then[语句列1][Else[语句列2]]EndIf4.3.4IF语句的嵌套1.IF语句的嵌套【例4-8】铁路托运行李,从甲地到乙地,规定每张客票托运费计算方法是行李重量不超过50kg时,0.25元/kg,超过50kg而不超过100kg时,其超过部分按0.35元/kg收费,超过100kg时,其超过部分按0.45元/kg收费。编写程序,输入行李重量,计算并输出托运的费用。分析:设行李重量为wkg,应付运费为x元,则运费公式为)100()10050()50()100(45.05035.05025.0)50(35.05025.025.0设计步骤如下:(1)建立应用程序用户界面与设置对象属性。(2)编写程序代码。根据流程图,可以写出命令按钮Command1的单击(Click)事件代码为PrivateSubCommand1_Click()DimwAsSingle,xAsSinglew=Val(Text1.Text)Ifw=50Thenx=0.25*wElseIfw=100Thenx=0.25*50+0.35*(w–50)Elsex=0.25*50+0.35*50+0.45*(w–100)EndIfEndIfText2.Text=xEndSub2.IF语句的嵌套格式ELSEIF其语法结构为If〈条件1〉Then[语句列1]ElseIf〈条件2〉Then[语句列2]...[Else[其他语句列]]EndIf【例4-10】在例4-9中使用带ElseIf的块If语句来计算出优惠价,只需将其中命令按钮Command1的单击(Click)事件代码改为PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)Ifx1000Theny=xElseIfx2000Theny=0.95*xElseIfx3000Theny=0.9*xElseIfx5000Theny=0.85*xElsey=0.08*xEndIfText2.Text=yEndSub4.4多分支条件选择语句SELECTCASE4.4.1SELECTCASE结构与语法SelectCase语句的语法格式为SelectCase〈测试条件〉[Case〈表达式表1〉[〈语句列1〉]][Case〈表达式表2〉[〈语句列2〉]]...[CaseElse[〈其他语句列〉]]EndSelect4.5使用计时器控件【例4-13】在窗体上设计一个数字时钟,如图4-15所示。图4-15数字时钟设计步骤如下:(1)建立应用程序用户界面。(2)设置对象属性(3)编写程序代码。编写计时器控件Timer1的Timer事件代码:PrivateSubTimer1_Timer()Label1.Caption=Format(Time,Form1.Tag)Label2.Caption=IIf(Hour(Time)12,下午,上午)EndSub编写命令按钮Command1的Click事件代码:PrivateSubCommand1_Click()IfCommand1.Caption=改为12小时ThenForm1.Tag=hh:mm:ssAM/PMCommand1.Caption=改为24小时Label2.Visible=TrueElseForm1.Tag=hh:mm:ssCommand1.Caption=改为12小时Label2.Visible=FalseEndIfEndSub4.5.3设计一个流动字幕板【例4-15】为一个应用系统设计流动字幕板,如图4-19所示,标题“欲穷千里目,更上一层楼”在窗体中自右至左地反复移动。图4-19电子标题板图4-20用户界面的设计(2)编写程序代码。编写命令按钮Command1的Click事件代码:PrivateSubCommand1_Click()IfCommand1.Caption=&S暂停ThenCommand1.Caption=&C继续Timer1.Enabled=FalseElseCommand1.Caption=&S暂停Timer1.Enabled=TrueEndIfEndSub编写Timer1的Timer事件代码:PrivateSubTimer1_Timer()IfLabel1.Left+Label1.Width0ThenLabel1.MoveLabel1.Left–20ElseLabel1.Left=Form1.ScaleWidthEndIfEndSub设计步骤如下:(1)建立应用程序用户界面与设置对象属性。4.6提供简单选择的控件4.6.1选项按钮1.使用选项按钮组【例4-16】在例4-13中使用选项按钮组来选择时间的格式,如图4-21所示。图4-21使用选项按钮组设计步骤如下:(1)修改程序用户界面与设置对象属性。(2)编写新增控件的事件代码。编写选项按钮Option1的Click事件代码:PrivateSubOption1_Click()Form1.Tag=hh:mm:ssAM/PMLabel2.Visible=TrueEndSub编写选项按钮Option2的Click事件代码:PrivateSubOption2_Click()Form1.Tag=hh:mm:ssLabel2.Visible=FalseEndSub2.使用图形选项按钮【例4-18】用图形选项按钮组控制流动字幕中的字体,如图4-23所示。图4-23图形选项按钮组设计步骤如下:(1)建立应用程序用户界面与设置对象属性。(2)编写程序代码。依次编写选项按钮Option1~Option4的Click事件代码:PrivateSubOption1_Click()Text1.FontName=宋体EndSubPrivateSubOption2_Click()Text1.FontName=隶书EndSubPrivateSubOption3_Click()Text1.FontName=黑体EndSubPrivateSubOption4_Click()Text1.FontName=楷体_GB2312EndSub2.使用多个复选框【例4-20】设计一个个人资料输入窗口,使用选项按钮组输入性别与民族,使用复选框输入个人爱好,如图4-25所示。设计步骤如下:(1)建立应用程序用户界面。(2)设置对象属性。图4-25使用多个复选框图4-26建立用户界面(3)编写程序代码。编写命令按钮Command1的事件代码:Click事件:PrivateSubCommand1_Click()IfText1.Text=Thena=InputBox(您忘了输入姓名!,注意,请在此输入姓名)Ifa=Ora=请在此输入姓名ThenExitSubText1.Text=aEndIfp1=Text1.Text+,p2=IIf(Option1,男,女)+,p3=IIf(Option3,汉族,少数民族)p4=,喜欢:IfCheck1.Value=1Thenp4=p4+Check1.Caption+、IfCheck2.Value=1Thenp4=p4+Check2.Caption+、IfCheck3.Value=1Thenp4=p4+Check3.Caption+、IfCheck4.Value=1Thenp4=p4+Check4.Caption+、aa=p1+p2+p3+IIf(p4=,喜欢:,,无爱好。,p4)Label4.Caption=Left(aa,Len(aa)–1)+。Text1.SetFocusEndSub编写文本框Text1的Change事件代码:PrivateSubText1_Change()Label4.Caption=EndSub习题四4.1写出下列各表达式的值。(1)2*3=8(2)BCDBCE(3)1234512345&ABC(4)Not2*511(5)4=4And52+2(6)85OrNot1012+3(7)2^33And510(8)34And7=54.2用布尔表达式表示下列命题。(1)n是m的倍数(2)n是小于正整数k的偶数(3)|x|≥|y|或xy(4)x,y其中有一个小于z(5)x,y都小于z(6)y[–10,–1],并且y[1,10]4.3根据所给条件,列出布尔表达式。(1)闰年的条件是:年号(year)能被4整除,但是不能被100整除;或者能被400整除。(2)一元二次方程ax2+bx+c=0有