《程序VB选择结构程序设计.pptx》由会员分享,可在线阅读,更多相关《程序VB选择结构程序设计.pptx(52页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、学习重点 If语句、Select Case语句的格式与使用。If 语句的嵌套使用。掌握常用的选择结构算法。第1页/共52页本节内容 If语句 Select Case语句基本算法及应用其他应用举例本节小结 第2页/共52页引言分支结构 True False P A B 第3页/共52页2.3 If语句2.3.1 IfThen结构 2.3.2 IfThenElse结构 2.3.3 IfThenElse If结构 2.3.4 If语句的嵌套 2.3.5 与If语句有关的函数 第4页/共52页注注1 1:条条件件表表达达式式的的值值为为TrueTrue或或FalseFalse,一一般般是是逻逻辑辑或或
2、关关系系表表达达式式,也也可可以以是是算算术术表表达达式(转换为逻辑值)式(转换为逻辑值)2.3.1 IfThen结构两种格式:格式格式1 1:块形式 If If If If Then Then Then Then 语句体语句体语句体语句体End IfEnd IfEnd IfEnd If 格式格式2 2:单行形式 If If If If Then Then Then Then 语句体语句体语句体语句体条件表达式语句体语句体TrueFalse注注2 2:当当条条件件为为TrueTrue时时执执行行语语句句体体,否否则则执执行行IfIf语句的下一条语句语句的下一条语句注注3 3:语句体中可以是:语
3、句体中可以是多条语句多条语句,当采用,当采用格式格式2 2时,所有的语句必须写在一行,用时,所有的语句必须写在一行,用冒号隔开冒号隔开语句语句体中的语句体中的语句 第5页/共52页2.3.1 IfThen结构例:已知有两数x、y,编程使x中存放较大的数分析:如果x=y,则不需要做处理 如果xy,则做交换处理实现:If x y Thent=xx=yy=tEnd If用格式2描述:If x y Then t=x:x=y:y=t特别注意:块结构时If和End If成对出现第6页/共52页2.3.1 IfThen结构例1 倒计时设计,主要利用文本框、按钮、计时器控件实现倒计时功能。第7页/共52页例2
4、-3-1程序代码如下:Private Sub Command1_Click()Timer1.Interval=1000Timer1.Enabled=TrueEnd SubPrivate Sub Form_Load()Timer1.Enabled=FalseEnd SubPrivate Sub Timer1_Timer()Text1.Text=Text1.Text-1If Text1.Text=0 ThenTimer1.Enabled=FalseEnd IfEnd Sub第8页/共52页2.3.2 IfThenElse结构两种格式:格式格式1 1:If If If If Then Then Th
5、en Then 语句体语句体语句体语句体1 1 1 1ElseElseElseElse语句体语句体语句体语句体2 2 2 2 End If End If End If End If 格式格式2 2:If If If If Then Then Then Then 语句体语句体语句体语句体1 Else 1 Else 1 Else 1 Else 语句体语句体语句体语句体2 2 2 2注注:当当条条件件为为TrueTrue时时执执行行语语句句体体1 1,否否则则执执行行语语句体句体2 2T条件表达式语句体1F语句体2第9页/共52页例2-3-2 已知x,求程序代码如下:Private Sub CmdC
6、ul_Click()Dim x As Single,y As Single x=Val(txtX.Text)第1个文本框的名称是txtX If x 0 Then MsgBox x不能小于0 Else y=Sqr(x)txtY.Text=Str(y)第2个文本框的名称是txtY End IfEnd Sub等价于:If x 0 Then MsgBox x不能小于0 Else y=Sqr(x):txtY.Text=Str(y)第10页/共52页2.3.3 IfThenElseIf结构If If Then1 Then语句体语句体1 1ElseIf ElseIf Then2 Then语句体语句体2 2E
7、lseElse语句体语句体n+1n+1End IfEnd If表达式表达式1 1 True True 执行语句体执行语句体1 1 False False 表达式表达式2 2 True True 执行语句体执行语句体2 2 False False 表达式表达式3 3ElseElse和和IfIf间无空格间无空格格式:第11页/共52页2.3.3 IfThenElseIf结构FT表达式1语句体1表达式2语句体2TF表达式n语句体nF语句体n+1T判断的顺序为表达式1、表达式2只有当表达式1为False时才判断表达式2,当表达式1和表达式2都为False时,才判断表达式3,程序执行语句体n+1的条件为
8、前n个表达式均为False。第12页/共52页2.3.3 IfThenElseIf结构例2-3-3 旅客乘车旅行,可免费携带30公斤行李,超过30公斤的部分每公斤需支付托运费10元,超过50公斤部分则每公斤需支付20元托运费。请编程根据每位旅客行李的重量计算其应付的行李托运费。第13页/共52页例2-3-3此分段函数用程序代码表示如下:Private Sub Command1_Click()Dim x As Single,y As Single x=Val(Text1.Text)If x 30 Then x30 y=0 ElseIf x=50 Then 30=x50 y=(x-50)*20+2
9、0*10 End If Text2.Text=yEnd Subx=30 And x=30 And x=30 x=30的信的信息息第14页/共52页2.3.4 If语句的嵌套If语句中又包含If语句在Then子句或Else子句的语句体中包含完整的一条If语句如:If x y ThenPrint x&“”&yElseIf xy ThenPrint x&“”&yElse Print x&“=”&yEnd If End If一条一条IfIf语句语句一条一条IfIf语句语句第15页/共52页2.3.4 If语句的嵌套注1:If语句的完整性,即内层If语句必须完整地出现在外层If语句的Then子句或Els
10、e子句中。外层外层IfIf内层内层IfIf内层内层IfIf内外层不能有交叉!内外层不能有交叉!第16页/共52页2.3.4 If语句的嵌套注2:ElseIf的匹配原则Else始终与上面距离其最近的未被匹配过的 If匹配注3:If End If的匹配If 块必须以一个 End If 语句结束If ThenIf Then Else End IfElseIf Then If Then Else End IfEnd If第17页/共52页2.3.4 If语句的嵌套为使程序结构更为清晰,要养成良好的书写习惯。If ThenIf Then Else End IfElseIf Then If Then El
11、se End IfEnd If为体现层次,可以使用为体现层次,可以使用TabTab健健排放不同层次的排放不同层次的语句语句第18页/共52页2.3.4 If语句的嵌套例2-3-4 根据用户输入年龄和性别,输出不同的欢迎信息。其中小于14岁的男性为boy,大于14岁的男性为guy,其中小于14岁的女性为girl,大于14岁的女性为miss。第19页/共52页例2-3-4程序代码如下:Private Sub Command1_Click()If Op_male.Value=True Then If Val(Txt_age.Text)14 Then 小于14岁的男性 MsgBox Hello,boy
12、!Else 大于或等于14岁的男性 MsgBox Hello,guy!End If Else If Val(Txt_age.Text)b Thenmax=aElsemax=bEnd Ifmax=IIf(ab,a,b)第22页/共52页1.IIf函数IIf函数实际上是IfThenElse结构的一个简写 IIf函数中后两个表达式可以是各种类型的表达式,也可以是一个IIf函数的调用Print x&IIf(x 0,“大于0”,“小于或小于0”)s=IIf(x 0,1,IIf(x=0,0,-1)判断x的符号 第23页/共52页1.IIf函数将If语句改写成使用IIf函数:If x 30 Then y=0
13、 ElseIf x=50 Then y=(x-30)*10 Else y=(x-50)*20+20*10 End If等价于:y=IIf(x 30,0,IIf(x=90,A,grade=80,B,grade=90,A,grade=80,B,grade80,C)用于多分支情况用于多分支情况 条件表达式和值必须成对出现条件表达式和值必须成对出现!第25页/共52页2.Switch函数将If语句改写成使用Switch函数:If x 30 Then y=0 ElseIf x=50 Then y=(x-30)*10 Else y=(x-50)*20+20*10 End If等价于:y=Switch(x
14、30,0,x50,(x-50)*20+20*10)条件条件条件值值值第26页/共52页2.3.2 Select Case语句(多分支语句)格式:Select CaseSelect Case Case Case 表达式列表表达式列表1 1 1Case Case 表达式列表表达式列表2 2 2Case ElseCase Else n+1End SelectEnd Select第27页/共52页2.3.2 Select Case语句T表达式1语句体1表达式2语句体2T表达式n语句体n语句体n+1T执行过程执行过程:计算测试表达式的值;计算测试表达式的值;依次比较依次比较各个表达式,符合条件则进入相应
15、的语句体执行;各个表达式,符合条件则进入相应的语句体执行;执行执行Select Case语句的下一条语句。语句的下一条语句。计算测试表达式的值第28页/共52页2.3.2 Select Case语句注1:测试表达式可以是数值或字符串表达式;注2:各表达式列表 合法的格式:一个常量或常量表达式一个常量或常量表达式多个常量或常量表达式,用逗号隔开,逗号相当于多个常量或常量表达式,用逗号隔开,逗号相当于“或或”,如:如:Case 1,3,5,7表达式表达式1 to 表达式表达式2,表示从表达式,表示从表达式1到表达式到表达式2中所有的值,中所有的值,其中表达式其中表达式1的值必须小于表达式的值必须小
16、于表达式2的值。如:的值。如:Case 1 to 5Is关系运算表达式,可以使用的关系运算符为:关系运算表达式,可以使用的关系运算符为:、=、=、=,不可以使用逻辑运算符表示多个范围。,不可以使用逻辑运算符表示多个范围。前面四种情况的组合,如前面四种情况的组合,如Case Is10,2,4,6,Is=“a”And ch=“A”And ch=“0”And ch=“9”“0”To“9”空格字符:ch=“”“”Is=“”实现:Select Case Select Case chchCase Case“a a”To To“z z”,“A A”to to“Z Z”Print Print“字母字符字母字符
17、”Case Case“0 0”To To“9 9”Print Print“数字字符数字字符”Case Case“”Print Print“空格空格”Case ElseCase ElsePrint Print“其他字符其他字符”End SelectEnd Select第30页/共52页2.3.2 Select Case语句例7-57-5简单运算器简单运算器分析:运算符的判断:共四种取值,事先已在ComboBox中 Select Case Cmbop.Text Case txtresult=Val(txtX)+Val(txtY)Case txtresult=Val(txtX)-Val(txtY)C
18、ase txtresult=Val(txtX)*Val(txtY)Case txtresult=Val(txtX)/Val(txtY)End Select 除数为除数为除数为除数为0 0 0 0?If Val(txtY)0 Then txtresult=Val(txtX)/Val(txtY)Else MsgBox 被0除 txtY=:txtY.SetFocusEnd If第31页/共52页2.3.2 Select Case语句 所有Select Case语句可以替换为IfThenElseIf语句。只有在If语句和每一个ElseIf语句计算相同条件表达式时,才能用Select Case结构替换I
19、fThenElseIf结构。If x 30 Then y=0 ElseIf x=50 Then y=(x-30)*10 Else y=(x-50)*20+20*10 End IfSelect Case x Case Is 50 y=(x-50)*20+20*10End Select第32页/共52页2.3.3 基本算法及应用2.3.3.1 求两个数的最大(小)值2.3.3.2 用户输入时按键的判断2.3.3.3 信息的有效性验证2.3.3.4 单选钮和复选框的应用 第33页/共52页2.3.3.1求两个数的最大(小)值分析:两个数的关系无非有3种情形,即:AB,A=B,A=B Then Max
20、=A Else Max=B If A B Then Max=A Else Max=B 第34页/共52页2.3.3.2用户输入时按键的判断两种方法:两种方法:一是一是在输入时判断,使用文本框的在输入时判断,使用文本框的Key事件;事件;常用:常用:KeyPressKeyPress事件(事件(KeyAsciiKeyAscii参数)参数)二是在全部输入完成后再对每个字符进行判断,使用循环结构依次获取字符串中的字二是在全部输入完成后再对每个字符进行判断,使用循环结构依次获取字符串中的字符。符。例例 在文本框中输入一个字符串,要求只能出现字母。Private Sub Text1_KeyPress(Ke
21、yAscii As Integer)If(KeyAscii Asc(z)And _(KeyAscii Asc(Z)Then KeyAscii=0End Sub第35页/共52页2.3.3.3信息的有效性验证例 登录界面设计“确定确定”按钮的按钮的Click事件过程如下:事件过程如下:Private Sub cmdok_Click()If txtuser.Text=Or txtpwd.Text=Then MsgBox 请输入完整信息!Else If txtpwd.Text 20082008 Then MsgBox 密码错误,不能登录!txtpwd.Text=txtpwd.SetFocus Els
22、e MsgBox txtuser.Text&,欢迎您!End If End IfEnd Sub 有效信息:有效信息:帐号和密码都不能空帐号和密码都不能空密码符合要求密码符合要求这样的密码设置方法,安全性差第36页/共52页2.3.3.4 单选钮和复选框的应用单选钮单选钮多选一多选一在同一组单选钮中只有一个按钮的在同一组单选钮中只有一个按钮的ValueValue属性值为属性值为1 1,通常使用,通常使用IfIfThenThenElseIfElseIf的语句格式进行判的语句格式进行判断。断。复选框复选框多选多多选多同一组复选框中可以同时有多个被选中,也可以只选中一个,也可以一个都不选中,通常我们对
23、各个同一组复选框中可以同时有多个被选中,也可以只选中一个,也可以一个都不选中,通常我们对各个复选框进行独立判断。复选框进行独立判断。第37页/共52页2.3.3.4 单选钮和复选框的应用例 根据用户选择,求若干门课程的总分或平均分参考代码如下:参考代码如下:Private Sub cmdCal_Click()Dim sum As Integer,n As Integer If chkChinese.Value=1 Then sum=sum+Val(txtChinese.Text):n=n+1 If chkMath.Value=1 Then sum=sum+Val(txtMath.Text):n
24、=n+1 If chkEnglish.Value=1 Then sum=sum+Val(txtEnglish.Text):n=n+1 If optTotal.Value Then txtResult.Text=n&门课总分:&vbCrLf&sum Else If n 0 Then txtResult.Text=n&门课平均分:&vbCrLf&sum/n End IfEnd Sub 问:变量n的作用是什么?第38页/共52页2.3.3.4 其他应用举例例10例11例12例13第39页/共52页例10例10 调整3个文本框中的数值,使其中的数值按小到大的顺序排放 If a b Then temp=
25、a:a=b:b=temp 如果a大于b,交换a和b的值 If a c Then temp=a:a=c:c=temp 如果a大于c,交换a和c的值 If b c Then temp=b:b=c:c=temp 如果b大于c,交换b和c的值第40页/共52页例11例7-11 求一元二次方程ax2+bx+c=0的根 根据数学中一元二次方程的求根公式,令:当0时,方程有两个不相等的实根;当=0时,方程有两个相等的实根;当0时,方程有两个不相等的虚根。第41页/共52页例11If a 0 Then delta=b*b-4*a*c If delta 0 Then x1=(-b+Sqr(delta)/(2*a
26、)第1个根 x2=(-b-Sqr(delta)/(2*a)第2个根 txtroot=X1=&x1&Chr(13)&Chr(10)&X2=&x2 ElseIf delta=0 Then x1=-b/(2*a)txtroot=Two equal root,X1=X2=&x1 Else x1=-b/(2*a)根的实部 x2=Sqr(-delta)/(2*a)根的虚部 txtroot=X1=&x1&+&x2&i&Chr(13)&Chr(10)&X2=&x1&-&x2&i End If End If第42页/共52页例12例7-12 编程实现输入一个整数,判断其能否被3、5、7整除,并输出以下信息之一:
27、(1)能被3、5、7整除。(2)能被其中两个数(要指出哪两个)整除。(3)能被其中一个数(要指出哪一个)整除。(4)不能被3、5、7任一个整除。第43页/共52页代码1If x Mod 3=0 And x Mod 5=0 And x Mod 7=0 Then MsgBox 能被3,5,7整除If x Mod 3=0 And x Mod 5=0 And x Mod 7 0 Then MsgBox 能被3,5整除If x Mod 3=0 And x Mod 7=0 And x Mod 5 0 Then MsgBox 能被3,7整除If x Mod 5=0 And x Mod 7=0 And x M
28、od 3 0 Then MsgBox 能被5,7整除If x Mod 3=0 Then MsgBox 能被3整除If x Mod 5=0 Then MsgBox 能被5整除If x Mod 7=0 Then MsgBox 能被7整除第44页/共52页代码2 If x Mod 3=0 And x Mod 5=0 And x Mod 7=0 Then MsgBox 能被3,5,7整除 ElseIf x Mod 3=0 And x Mod 5=0 And x Mod 7 0 Then MsgBox 能被3,5整除 ElseIf x Mod 3=0 And x Mod 7=0 And x Mod 5
29、0 Then MsgBox 能被3,7整除 ElseIf x Mod 5=0 And x Mod 7=0 And x Mod 3 0 Then MsgBox 能被5,7整除 ElseIf x Mod 3=0 Then MsgBox 能被3整除 ElseIf x Mod 5=0 Then MsgBox 能被5整除 ElseIf x Mod 7=0 Then MsgBox 能被7整除 Else MsgBox 不能被3、5、7任一数整除 End If第45页/共52页代码3 If x Mod 3=0 Then n=n+1 s=s&3 End If If x Mod 5=0 Then n=n+1 s=
30、s&5 End If If x Mod 7=0 Then n=n+1 s=s&7 End If If n 0 Then MsgBox 能被&s&这&n&个数整除 Else MsgBox 不能被任一数整除 End If第46页/共52页代码4 n=0 If x Mod 3=0 Then n=n+1 End If If x Mod 5=0 Then n=n+2 End If If x Mod 7=0 Then n=n+4 End If Select Case n Case 0:MsgBox 不能被任一数整除 Case 1:MsgBox 能被3整除 Case 2:MsgBox 能被5整除 Case
31、3:MsgBox 能被3,5整除 Case 4:MsgBox 能被7整除 Case 5:MsgBox 能被3,7整除 Case 6:MsgBox 能被5,7整除 Case 7:MsgBox 能被3,5,7整除 End Select 第47页/共52页例13例7-13 模拟红绿灯。在界面上有两个图像框,分别显示信号灯和汽车,设定信号灯的变化规律是黄灯1秒,红灯2秒,绿灯3秒,汽车从左向右行驶,当行驶到路口时,根据信号灯的提示进行等待或行驶 第48页/共52页Const path As String=C:Program FilesMicrosoft Visual StudioCommonGraph
32、icsIconsTrafficDim a As IntegerPrivate Sub Timer1_Timer()a=a+1 If a 6 Then a=1 End If Select Case a Case 1 Image1.Picture=LoadPicture(path&TRFFC10B.ICO)Case 2,3 Image1.Picture=LoadPicture(path&TRFFC10C.ICO)Case 4,5,6 Image1.Picture=LoadPicture(path&TRFFC10A.ICO)Timer2.Enabled=True End SelectEnd Sub第
33、49页/共52页例13Private Sub Timer2_Timer()If a=Line1.X1-100 And _ Image2.Left+Image2.Width Me.Width Then Image2.Left=-Image2.Width End If End IfEnd Sub 第50页/共52页本 章 小 结 选择结构是算法的基本结构之一,凡是需要进行分情况执行的时候都应该使用相关的选择结构语句。本章主要介绍选择结构中的If语句和Select Case语句及相关函数。If语句的格式较多,在实际应用中要注意区分;Select Case语句可以简化条件的表示,使用该语句完成的功能都可以用If语句来实现;IIf函数和Switch函数分别是If语句和Select Case语句的简单表示。本章介绍的常用算法包含了对选择语句的应用,读者在编程中要认真分析算法,构建正确的逻辑结构,并且选择正确的语句来表示算法,使算法更合理、更优化。第51页/共52页感谢您的观看!第52页/共52页
限制150内