版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第4 4章章 选择结构程序设计选择结构程序设计第第4 4章章 选择结构程序设计选择结构程序设计( (分支结构分支结构) ) 选择结构是计算机科学用来描述自然界和社会生活中分选择结构是计算机科学用来描述自然界和社会生活中分支现象的重要手段。其特点是根据所给定的条件为真(即支现象的重要手段。其特点是根据所给定的条件为真(即条件成立)与否,而决定从各实际可能的不同分支中执行条件成立)与否,而决定从各实际可能的不同分支中执行某一分支的相应操作,并且任何情况下总有:某一分支的相应操作,并且任何情况下总有:“无论分支无论分支多寡,必择其一;纵然分支众多,仅选其一多寡,必择其一;纵然分支众多,仅选其一”。
2、3本章要点本章要点: 条件语句条件语句单行结构条件语句单行结构条件语句If.Then.Else .块结构条件语句块结构条件语句If.Then.EndIf多分支选择语句多分支选择语句Select Case.End SelectTimer控件,单选按钮和复选按钮控件,单选按钮和复选按钮特点特点: 根据条件是否成立,决定程序的执行分支根据条件是否成立,决定程序的执行分支45.1.1 单行结构条件语句1. 格式 If Then Else 2. 功能 如果成立,则执行 否则执行T语句组语句组1条件条件?语句组语句组2F53. 说明(1) 可以是: n关系表达式n布尔表达式n数值表达式:0为False;非
3、0为Truen字符串表达式: 0为False;非0为Truev(2) 可以没有Else部分,这时必须有。T语句组语句组1条件条件?F6(3) 、: 可以有多条语句,各语句之间用冒号隔开。例: If N0 Then A=A+B:B=B+A Else A=A-B:B=B-A(4)应作为一条语句书写。如果语句太长需要换行,必须在折行处使用续行符号。(5) 无论条件是否成立,都具有共同出口例: If X = 0 Then X = 1 + X Else X = 5 - X Y = 1 - X Print Y=; Y 若 X=2 Y? 若 X=-2 Y?共同出口共同出口(6)(6)单行结构条件语句可以嵌套
4、单行结构条件语句可以嵌套 IF . THEN.IF . THEN .ELSE .ELSE7v【例5-1】设界面如下图所示,用文本框输入x的值,单击“计算Y”按钮时,根据以下公式计算y的值。Private Sub Command1_Click() X = Val(Text1.Text) If X 0y=8v例: 比较以下两段程序,是否都能够实现上例的功能。程序段程序段1:X = Val(Text1.Text)Y = Abs(X)If X 0 Then Y = Log(X)Label3.Caption = Y程序段程序段2:X = Val(Text1.Text)Y = Log(X)If X = 0
5、 ThenY = Abs(X)Label3.Caption = Y95.1.2 块结构条件语句v1.格式vIf Thenv vElseIf Thenv v vElseIf Thenv vElsev vEnd IfIf 1 Then 语句组语句组11Else 语句组语句组22End IfElseElse子句子句ElseIfElseIf子句子句IfIf语句语句End IfEnd If语句语句注意注意: 格式书写格式格式书写格式10块结构条件语句的功能:TTTF条件条件1 1语句组语句组1 1语句组语句组2 2条件条件2 2F条件条件n n语句组语句组n nF语句组语句组n+1n+111v【例5-8
6、】某百货公司为了促销,采用购物打折的优惠办法。1000元以上者,按九五折优惠;2000元以上者,按九折优惠; 3000元以上者,按八五折优惠; 5000元以上者,按八折优惠;编写程序,输入购物款数,计算并输出优惠价。分析:设购物款数为分析:设购物款数为x元,优惠价为元,优惠价为y元,则优惠付款公式为:元,则优惠付款公式为: x (x1000) 0.95x (1000 x 2000) y= 0.9x (2000 x3000) 0.85x (3000 x=5000)12设计步骤如下:(1)建立应用程序界面并设置对象属性,如图所示。(2)编写程序代码.命令按钮command1的Click事件代码如下
7、:ElseIf x 3000 Then y = 0.9 * xElseIf x 5000 Then y = 0.85 * xElse y = 0.8 * xEnd IfText2.Text = yEnd SubPrivate Sub command1_Click()Dim x As Single, y As Singlex = Val(Text1.Text)If x 1000 Then y = xElseIf x = 0 Then y = 1 Else y = 2 End If 以下两种写法都是错误的: 写法一:写法一:If x=0 Then y=1Else y = 2End If写法二:写法
8、二:If x = 1 Then y = 10 Else y = 20End If145.1.3 多分支选择语句1. 格式 Select Case Case Case Case Else End Select2. 功能: 根据测试表达式的值,按顺序匹配Case后的表达式,如果匹配成功,则执行该Case下的语句块,然后转到End Select语句之后继续执行。15语句组语句组n+1n+1TTTF匹配匹配表达式表表达式表1语句组语句组1 1语句组语句组2 2F语句组语句组n nF匹配表达式匹配表达式表表2匹配表达式匹配表达式表表n多分支选择语句的功能流程图多分支选择语句的功能流程图: :163. 说
9、明 : 数值或字符串表达式 Case 表达式表: 表中的表项为如下形式: (1) 表达式1,表达式2. 如: Case 1 , 3 , 5(2) 表达式1 TO 表达式2 如: Case 10 TO 30 Case A TO Z(3) Is 如: Case Is = 10 Case Is = 0 与 Case 0 相同 注意: 测试表达式的类型应与Case后表达式类型一致,且三种形式可以混用,如: Case Is 0),关系运算符又称比较运算符,用),关系运算符又称比较运算符,用来对两个表达式的值进行比较,比较的结果是一个布尔值来对两个表达式的值进行比较,比较的结果是一个布尔值(True或或F
10、alse),这个结果就是关系表达式的值。),这个结果就是关系表达式的值。1. 关系运算符关系运算符 VB提供的关系运算符有以下提供的关系运算符有以下6种,见表种,见表4-1。表表4-1 关系运算符关系运算符运算符名 称例 子说 明小于3 4值为:True,强制转换为数值型=小于或等于3 大于0 (1 0)值为:True,强制转换为数值型=大于或等于aa = ab值为:False=等于1 = True值为:False,强制转换为数值型不等于4 5值为:True2. 关系表达式关系表达式 关系表达式的格式为关系表达式的格式为表达式表达式1关系运算符关系运算符表达式表达式2关系运算符关系运算符表达表
11、达式式3 关系表达式的运算次序为:先分别求出关系运算符两侧关系表达式的运算次序为:先分别求出关系运算符两侧表达式的值,然后再把二者进行比较,二者的关系若与关表达式的值,然后再把二者进行比较,二者的关系若与关系运算符指示的一样,则关系运算的结果为真系运算符指示的一样,则关系运算的结果为真True,否则,否则为假为假False。4.2.2 4.2.2 布尔运算符与布尔表达式布尔运算符与布尔表达式 对于较为复杂的条件,必须使用布尔表达式。布尔表达对于较为复杂的条件,必须使用布尔表达式。布尔表达式是指用布尔运算符连接若干关系表达式或布尔值而成的式是指用布尔运算符连接若干关系表达式或布尔值而成的式子。布
12、尔表达式的值也是一个布尔值。式子。布尔表达式的值也是一个布尔值。VB提供的布尔运提供的布尔运算符有:算符有:And、Or、Not、Xor、Eqv、Imp等等6种,其中种,其中常用的为前常用的为前3种,见表种,见表4-2。表表4-2 布尔运算符布尔运算符 说明:说明: 1) 布尔运算符两侧若有数值数据出现,则将数值数据转布尔运算符两侧若有数值数据出现,则将数值数据转换为二进制数(补码形式)进行按位运算。此时,换为二进制数(补码形式)进行按位运算。此时,1为真,为真,0为假。为假。 2) 布尔运算真值表见表布尔运算真值表见表4-3。运算符名 称例 子说 明And与(4 5) And (3 5) O
13、r (3 0)值为:False,由真变假或由假变真,进行取“反”操作表表4-3 布尔运算真值表布尔运算真值表aba And ba Or bNot aTrueTrueTrueTrueFalseTrueFalseFalseTrueFalseFalseTrueFalseTrueTrueFalseFalseFalseFalseTrue Not由真变假,由假变真。由真变假,由假变真。And对两个布尔值进行比较,对两个布尔值进行比较,如果两个值均为真,则结果为真,否则为假。如果两个值均为真,则结果为真,否则为假。Or对两个布对两个布尔值进行比较,如果其中一个值为真,则结果为真,只有尔值进行比较,如果其中一
14、个值为真,则结果为真,只有两个值都为假时,结果才为假。运算布尔表达式时,先运两个值都为假时,结果才为假。运算布尔表达式时,先运算关系表达式,再运算布尔表达式。算关系表达式,再运算布尔表达式。ABNot AA And BA or BA Xor BTTFTTFTFFFTTFTTFTTFFTFFF按二进制进行的逻辑运算规则ABNot AA And BA or BA Xor B110110100011011011001000vPrint 12 and 8 =8 1100 and 1000=1000vPrint 12 or 16 =28 v1100 and 10000=11100vPrint 12 Xo
15、r 7 =11 1100 Xor 111=1011vPrint 11 Xor 7 =12 1011 xor 111=1100v注:先把数字转换为二进制数,再进行运算。v(A Xor B) Xor B=A4.2.3 4.2.3 运算符的优先顺序运算符的优先顺序 在一个表达式中进行多种操作时,在一个表达式中进行多种操作时,VB会按一定的顺序进会按一定的顺序进行求值,称这个顺序为运算符的优先顺序。运算符的优先行求值,称这个顺序为运算符的优先顺序。运算符的优先顺序见表顺序见表4-4。表表4-4 运算符的优先顺序运算符的优先顺序优先顺序运算符类型运算符1算术运算符(指数运算)2(负数)3*、/(乘法和除
16、法)4(整数除法)5Mod(求模运算)6+、(加法和减法)7字符串运算符&(字符串连接)8关系运算符=、=9布尔运算符Not10And11Or【例例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) 再作关系运算:再作关系运算: True And Not False 3) 作非运算:作非运算: True And True 4) 最后得:最后得: True【例例4-2】判断某个年份是闰年的根据是年份数满足下述条判断某个年份是闰年的根据是年份数满足下述条件之一。件之一
17、。 条件条件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 两者取两者取“或或”,即得判断闰年的布尔表
18、达式:,即得判断闰年的布尔表达式:y Mod 4 = 0 And y Mod 100 0 Or y Mod 100 = 0 And y Mod 400 = 0v4.3 单条件选择语句单条件选择语句IF 单条件选择结构是最常用的双分支选择结构,其特点是:单条件选择结构是最常用的双分支选择结构,其特点是:所给定条件(条件表达式)的值如果为真,则执行所给定条件(条件表达式)的值如果为真,则执行a1块;块;如果为假则执行如果为假则执行a2块。其一般形式如图块。其一般形式如图4-1所示。所示。图图4-1 单条件选择结构的流程图单条件选择结构的流程图 实现单条件选择结构的语句是实现单条件选择结构的语句是I
19、f语句,在语句,在VB中有行中有行If语语句和块句和块If语句两种。语句两种。如果 条件该(选择)条件成立吗?真a1块条件成立时所执行的操作块,它一般为非空块假a2块条件不成立时所执行的操作块,它可为空块4.3.1 4.3.1 单行结构条件语句单行结构条件语句IFIFTHENTHENELSEELSE 单行单行If语句的语法格式为语句的语法格式为If 条件条件 Then 语句序列语句序列1 Else 语句序列语句序列2 说明:说明: 1) 条件条件可以是关系表达式、布尔表达式或可以是关系表达式、布尔表达式或数值表达数值表达式式。如果以数值表达式作条件,则非。如果以数值表达式作条件,则非0值为真,
20、值为真,0为假。为假。 2) 如果没有如果没有Else子句,子句,语句序列语句序列1为必要参数,在为必要参数,在条件条件为为True时执行。时执行。【例例4-3】输入输入x,计算,计算y的值。其中:的值。其中:)0(21)0(1xxxxy 流程图流程图4-2所示。所示。图图4-2 计算计算y值的流程图值的流程图 根据流程图,写出命令按钮根据流程图,写出命令按钮Command1的单击(的单击(Click)事件代码为:事件代码为:输入x给出x的值如果x = 0真y 1 + xx=0时的y值假y 1 2 * xx= 0 Then y = 1 + x Else y = 12 * x Text2.Tex
21、t = yEnd Sub【例例4-4】学校对学习成绩优良的学生进行奖励,获奖的条学校对学习成绩优良的学生进行奖励,获奖的条件如下:件如下: 1) 所考所考5门课的总分超过门课的总分超过450分;分; 2) 每门课的成绩都在每门课的成绩都在88分以上;分以上; 3) 前前3门(主课)的成绩都在门(主课)的成绩都在95分以上,其他两门(非分以上,其他两门(非主课)的成绩都在主课)的成绩都在80分以上。分以上。 输入某学生输入某学生5门课的成绩门课的成绩s1、s2、s3、s4、s5,判断他,判断他是否能够获奖。是否能够获奖。 分析:依题意列出分析:依题意列出3个条件表达式:个条件表达式: 1) s1
22、 + s2 + s3 + s4 + s5 = 450 2) s1 = 88 AND s2 = 88 AND s3 = 88 AND s4 = 88 AND s5 = 88 3) s1 = 95 AND s2 = 95 AND s3 = 95 AND s4 = 80 AND s5 = 80 图图4-4 判断能否获奖判断能否获奖 命令按钮命令按钮Command1的单击(的单击(Click)事件代码为:)事件代码为:Private Sub Command1_Click() Dim s1 As Single, s2 As Single, s3 As Single, s4 As Single, s5 A
23、s 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 s2 = 88 And s3 = 88 And s4
24、 = 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) &
25、; pEnd Sub 【例例4-5】利用输入框函数输入利用输入框函数输入3个不同的数,选出其中最个不同的数,选出其中最大的数。大的数。 命令按钮命令按钮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 &
26、amp; , & 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 Label1.Caption = pEnd Sub图图4-5 求求3个数中最大数个数中最大数4.3.2 4.3.2 使用使用IIFIIF函数函数 还可以使用还可以使用IIf函数来实现一些比较简单的选择结构。函数来实现一些比较简单的选择结构。IIf函数的语法结构为:函数的语法结构为:IIf
27、(条件表达式,真部分,假部分) 语句语句y = IIf(条件表达式条件表达式,真部分真部分,假部分假部分) 相当于:相当于:If 条件表达式 then y =真部分 Else y =假部分【例例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, 12 * x) Text2.Text = yEnd Sub4.3.3 4.3.3 块结构
28、条件语句块结构条件语句IFIFTHENTHENELSEELSEEND IFEND IF VB提供的块提供的块If语句,将一个选择结构用多个语句行来实现。语句,将一个选择结构用多个语句行来实现。其语法结构为:其语法结构为:If 条件条件1 Then 语句序列语句序列1Else 语句序列语句序列2End If 在块形式中,在块形式中,If语句必须是第语句必须是第1行语句。行语句。If块必须以一个块必须以一个End If语句结束。语句结束。【例例4-7】将例将例4-3中命令按钮中命令按钮Command1的单击(的单击(Click)事件代码改为多行事件代码改为多行If语句:语句:Private Sub
29、 Command1_Click() Dim x As Single, y As Single x = Val(Text1.Text) If x = 0 Then y = 1 + x Else y = 12 * x End If Text2.Text = yEnd Sub4.3.4 IF4.3.4 IF语句的嵌套语句的嵌套1. IF语句的嵌套语句的嵌套 如果在如果在If语句中操作块语句中操作块a1块(语句序列块(语句序列1)或)或a2块(语句块(语句序列序列2)本身又是一个)本身又是一个If语句,则称为语句,则称为If语句的嵌套。语句的嵌套。 vIf 语句的嵌套v If then If then
30、 v if then v if then Else v if thenv Else v Else ifthen v End if v Else Else ifthen v v End if Else v v End if End ifv End if 【例例4-8】铁路托运行李,从甲地到乙地,规定每张客票托铁路托运行李,从甲地到乙地,规定每张客票托运费计算方法是行李重量不超过运费计算方法是行李重量不超过50kg时,时,0.25元元/kg,超,超过过50kg而不超过而不超过100kg时,其超过部分按时,其超过部分按0.35元元/kg收费,收费,超过超过100kg时,其超过部分按时,其超过部分按0
31、.45元元/kg收费。编写程序,收费。编写程序,输入行李重量,计算并输出托运的费用。输入行李重量,计算并输出托运的费用。 分析:设行李重量为分析:设行李重量为wkg,应付运费为,应付运费为x元,则运费公元,则运费公式为:式为:)100()10050()50()100(45. 05035. 05025. 0)50(35. 05025. 025. 0wwwwwwx命令按钮命令按钮Command1的单击(的单击(Click)事件代码为:)事件代码为:Private Sub Command1_Click() Dim w As Single, x As Single w = Val(Text1.Text
32、) If w = 50 Then x = 0.25 * w Else If w = 100 Then x = 0.25 * 50 + 0.35 * (w50) Else x = 0.25 * 50 + 0.35 * 50 + 0.45 * (w100) 图图4-7 计算托运费计算托运费 End If End If Text2.Text = xEnd Sub图图4-8 计算优惠价计算优惠价【例例4-9】某百货公司为了促销,采用购物打折扣的优惠办某百货公司为了促销,采用购物打折扣的优惠办法:每位顾客一次购物法:每位顾客一次购物 1) 在在1000元以上者,按九五折优惠;元以上者,按九五折优惠; 2
33、) 在在2000元以上者,按九折优惠;元以上者,按九折优惠; 3) 在在3000元以上者,按八五折优惠;元以上者,按八五折优惠; 4) 在在5000元以上者,按八折优惠。元以上者,按八折优惠。 输入购物款数,计算并输出优惠价,如图输入购物款数,计算并输出优惠价,如图4-8所示。所示。 分析:设购物款数为分析:设购物款数为x元,优惠价为元,优惠价为y元,付款公式为:元,付款公式为:)5000()50003000()30002000()20001000()1000(8 . 085. 09 . 095. 0 xxxxxxxxxxy 命令按钮命令按钮Command1的单的单击(击(Click)事件代码
34、为:)事件代码为: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 Else If x 3000 Then y = 0.9 * x ElseIf x 5000 Then y = 0.85 * x Else y = 0.08 * x End If End If End If End If Text2.Text = yEnd Sub图4-8 计算优惠价2. IF语句的嵌套格式语句的嵌套格
35、式ELSEIF 例例4.8中出现的多层中出现的多层If语句嵌套,使程序冗长,不便阅读。语句嵌套,使程序冗长,不便阅读。为此为此VB提供了带提供了带ElseIf的块的块If语句来处理当条件为假时又语句来处理当条件为假时又内嵌块内嵌块If语句的情形,以使程序简化易写。其语法结构为:语句的情形,以使程序简化易写。其语法结构为:If 条件1 Then 语句序列1ElseIf 条件2 Then 语句序列2 .Else 其他语句序列End If【例例4-10】在例在例4-9中使用中使用带带ElseIf的块的块If语句来计算出语句来计算出优惠价,只需将其中命令按优惠价,只需将其中命令按钮钮 C o m m
36、a n d 1 的 单 击的 单 击(Click)事件代码改为:)事件代码改为:Private Sub Command1_Click() Dim x As Single, y As Single x = Val(Text1.Text) If x 1000 Then y = x ElseIf 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 Subv4.4 多分支条件选择语句多分支条件选
37、择语句SELECT CASE 多分支选择结构的特点是:从多个选择结构中,选择第多分支选择结构的特点是:从多个选择结构中,选择第1个个条件为真的路线作为执行的路线。即所给定的选择条件条件为真的路线作为执行的路线。即所给定的选择条件1为为真时,执行真时,执行a1块;如果为假则继续检查下一个条件。如果条块;如果为假则继续检查下一个条件。如果条件都不为真,就执行其他操作块,如果没有其他操作块,则件都不为真,就执行其他操作块,如果没有其他操作块,则不作任何操作就结束选择。如图不作任何操作就结束选择。如图4-9所示。所示。图图4-9 多条件多分支选择结构的流程图多条件多分支选择结构的流程图情形条件1a1块
38、条件1成立时所执行的操作块条件2a2块条件2成立时所执行的操作块条件nan块条件n成立时所执行的操作块其他an+1块条件都不成立时所执行的操作块4.4.1 SELECT CASE4.4.1 SELECT CASE结构与语法结构与语法 虽然使用嵌套的办法可以利用虽然使用嵌套的办法可以利用If语句实现多分支选择,语句实现多分支选择,但是最好还是使用但是最好还是使用VB提供的多分支选择结构(提供的多分支选择结构(Select Case语句)来实现多分支选择。根据单一表达式来执行多语句)来实现多分支选择。根据单一表达式来执行多种可能的动作时,种可能的动作时,Select Case更为简捷,它根据表达式
39、更为简捷,它根据表达式的值,来决定执行几组语句中的一组。的值,来决定执行几组语句中的一组。4.4.1 SELECT CASE4.4.1 SELECT CASE结构与语法结构与语法 Select Case语句的语法格式为语句的语法格式为Select Case 测试条件 Case 表达式表1 语句序列1 Case 表达式表2 语句序列2 . Case Else 其他语句序列End Selectv其中:为数值型或字符串表达式;每个是一个或几个值的列表,可以是表达式、枚举值表达式1 To 表达式2,Is关系运算表达式等几种形式。如果在一个列表中有多个值,就用逗号把值隔开;每个语句组中含有零个到多个语句
40、。vSelect Case语句执行过程:v 1、计算的值v 2、将的值与Case语句中的中的每一个值逐一比较。如果与其中一个相匹配,则执行相应的语句组。如果不止一个,则只执行第一个相匹配的语句组。如果没有相匹配的,则执行Case Else子句(可选)。最后执行End Select语句。vSelect Case 语句表达式的值有如下规定:v1)可以是一个值,也可以是几个值的列表;v2)如果列表中的值不连续,就用逗号把值隔开.如:vCase 1,3,7,10.v3)如果列表中的值是连续的,可用TO表达式,如:vCase 1 to 5 ,表示 1 到5这5个数.v4)列表中还可以包含Is关系表达式,
41、如case Is79.表示大于79的值v5)表达式值的类型必须与测试表达式的类型相同.vIf 结构和select case结构相互间的转换v小结: Case子句中的子句中的表达式表表达式表是一个或多个如表是一个或多个如表4-5所示所示形式表达式的列表。形式表达式的列表。表表4-5 表达式的形式表达式的形式 当使用多个表达式的列表时,表达式与表达式之间要用当使用多个表达式的列表时,表达式与表达式之间要用逗号逗号“,”隔开。隔开。形式示例说 明表达式Case 100 * a数值或字符串表达式表达式 To 表达式Case 1000 To 2000Case a To n用来指定一个值范围,较小的值要出
42、现在To之前Is 关系运算表达式Caes Is 3000可配合比较运算符来指定一个数值范围。如果没有提供,则Is关键字会被自动插入4.4.2 SELECT CASE4.4.2 SELECT CASE结构的应用结构的应用【例例4-11】在例在例4-9中使用中使用Select Case语句来计算优惠价,语句来计算优惠价,只需将其中命令按钮只需将其中命令按钮Command1的单击(的单击(Click)事件代)事件代码改为:码改为:Private Sub Command1_Click() Dim x As Single, y As Single x = Val(Text1.Text) Select C
43、ase x Case Is 1000 y = x Case Is 2000 y = 0.95 * x Case Is 3000 y = 0.9 * xCase Is 5000 y = 0.85 * x Case Else y = 0.08 * x End Select Text2.Text = yEnd Sub【例例4-12】某航空公司规定在旅游的旺季某航空公司规定在旅游的旺季79月份,如果月份,如果订票数超过订票数超过20张,票价优惠张,票价优惠15%,20张以下,优惠张以下,优惠5%;在旅游的淡季在旅游的淡季15月份、月份、10月份、月份、11月份,如果订票数超月份,如果订票数超过过20张
44、,票价优惠张,票价优惠30%,20张以下,优惠张以下,优惠20%;其他情况;其他情况一律优惠一律优惠10%。 设计程序,根据月份和订票张数决定票价的优惠率。设计程序,根据月份和订票张数决定票价的优惠率。图图4-11 计算优惠价计算优惠价 命令按钮命令按钮Command1的单击(的单击(Click)事件代码为:)事件代码为:Private Sub Command1_Click() Dim m As Integer, n As Integer, r As Integer m = Val(Text1.Text) n = Val(Text2.Text) Select Case m Case Is =
45、5, 10, 11 If n 20 Then r = 20 Else r = 30 Case 7 To 9 If n 0 And Text1.Text 0 Then Command1.SetFocus End IfEnd Subv4.5 使用计时器控件使用计时器控件 计时器(计时器(Timer)是)是Visual Basic提供的一个用于定时提供的一个用于定时的特殊控件,当到达预定时间时,系统会自动触发其的特殊控件,当到达预定时间时,系统会自动触发其Timer事件,以便完成指定的操作。事件,以便完成指定的操作。 计时器控件在设计时显示为一个小时钟图标,而在运行计时器控件在设计时显示为一个小时钟
46、图标,而在运行时则不可见,常用来做一些后台处理。计时器的属性和事时则不可见,常用来做一些后台处理。计时器的属性和事件都相当少,能响应的事件只有自身特有的一个件都相当少,能响应的事件只有自身特有的一个Timer事事件,其主要属性见表件,其主要属性见表4-6。表表4-6 Timer控件的属性控件的属性属 性说 明Enabled该属性为True时,定时器开始工作,为False时暂停Interval该属性用来设置定时器触发的周期(以毫秒计)取值范围为064767【例例4-13】为一个应用系统设计流动字幕板,如图为一个应用系统设计流动字幕板,如图4-12所所示,标题示,标题“欲穷千里目,更上一层楼欲穷千
47、里目,更上一层楼”在窗体中自右至左在窗体中自右至左地反复移动。地反复移动。图图4-12 电子标题板电子标题板 命令按钮命令按钮Command1的的Click事件代码:事件代码:Private Sub Command1_Click() If Command1.Caption = &S 暂停 Then Command1.Caption = &C 继续 Timer1.Enabled = False Else Command1.Caption = &S 暂停 Timer1.Enabled = True End IfEnd Sub编写编写Timer1的的Timer事件代码:事件代
48、码:Private Sub Timer1_Timer() If Label1.Left + Label1.Width 0 Then Label1.Move Label1.Left 20 Else Label1.Left = Form1.ScaleWidth End IfEnd Subv4.6 提供简单选择的控件提供简单选择的控件 成组使用的选项按钮以及复选框可以为用户提供简单的、成组使用的选项按钮以及复选框可以为用户提供简单的、事先准备的选项。事先准备的选项。4.6.1 4.6.1 选项按钮选项按钮 选项按钮(选项按钮(OptionButton)又称单选按钮。一般来说,)又称单选按钮。一般来说
49、,选项按钮总是作为一个组(选项按钮组)的组成部分工作选项按钮总是作为一个组(选项按钮组)的组成部分工作的。的。 选项按钮组是一组相互排斥的选项按钮,选择一个选项选项按钮组是一组相互排斥的选项按钮,选择一个选项按钮就会立即清除该组中的其他按钮。在选项按钮组中只按钮就会立即清除该组中的其他按钮。在选项按钮组中只能单击一个选项,即选项按钮组只允许用户从选择菜单中能单击一个选项,即选项按钮组只允许用户从选择菜单中选择一个选项。选择一个选项。1. 使用选项按钮组使用选项按钮组 在窗体中定义的若干选项按钮可以组成一个选项组,一在窗体中定义的若干选项按钮可以组成一个选项组,一般常用框架(般常用框架(Fram
50、e)控件来组织一个选项组。)控件来组织一个选项组。【例例4-14】设银行定期存款年利率为:设银行定期存款年利率为:1年期年期2.25%,2年年期期2.70%,3年期年期3.24%,5年期年期3.60%(不计复利)。今(不计复利)。今有本金有本金a元,元,5年以后使用,共有以下年以后使用,共有以下6种存法:种存法:存一次存一次5年期;年期; 存一次存一次3年期,一次年期,一次2年期;年期; 存一次存一次3年期,两次年期,两次1年期;年期; 存两次存两次2年期,一次年期,一次1年期;年期; 存一次存一次2年期,三次年期,三次1年期;年期; 存五次存五次1年期。年期。图图4-14 计算利息计算利息
51、分别计算各种存法分别计算各种存法5年后到期时的本息合计,如图年后到期时的本息合计,如图4-14所示。所示。 分析:设分析:设x1、x2、x3、x5分别表示分别表示1年、年、2年、年、3年、年、5年年定期储蓄的利息,定期储蓄的利息,a表示本金,则定期的本息计算公式分表示本金,则定期的本息计算公式分别为:别为:(1 + x1)a、(1 + 2x2)a、(1 + 3x3)a、(1 + 5x5)a。 编写命令按钮编写命令按钮Command1的单击(的单击(Click)事件代码:)事件代码:Private Sub Command1_Click() Dim a As Single, y As Single
52、 Dim x1 As Single, x2 As Single Dim x3 As Single, x5 As Single a = Val(Text1.Text) x1 = 0.0225: x2 = 0.0270 x3 = 0.0324: x5 = 0.0360 Select Case True Case Option1.Value y = (1 + 5 * x5) * a Case Option2.Value y = (1 + 3 * x3) * (1 + 2 * x2) * aCase Option3.Value y = (1 + 3 * x3) * (1 + x1) 2 * a Cas
53、e 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 Select Text2.Text = y Text1.SetFocusEnd Sub 编写文本框编写文本框Text1的的GotFocus事件代码:事件代码:Private Sub Text1_GotFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text1.
54、Text)End Sub2. 使用图形选项按钮使用图形选项按钮 可以将选项按钮设计成图形按钮的形式。可以将选项按钮设计成图形按钮的形式。【例例4-15】用图形选项按钮组控制流动字幕中的字体,如用图形选项按钮组控制流动字幕中的字体,如图图4-15所示。所示。 在例在例4-13中增加中增加4个选项按钮个选项按钮Option1Option4,并修,并修改改Option1Option4的的Style属性为:属性为:1 Graphical(图形方式),再依次修改其(图形方式),再依次修改其Caption属性,如图属性,如图4-15所所示。示。图图4-15 图形选项按钮组图形选项按钮组 编写选项按钮编写选
55、项按钮Option1Option4的的Click事件代码:事件代码:Private Sub Option1_Click() Text1.FontName = 宋体End SubPrivate Sub Option2_Click() Text1.FontName = 隶书End SubPrivate Sub Option3_Click() Text1.FontName = 黑体End SubPrivate Sub Option4_Click() Text1.FontName = 楷体_GB2312End Sub 说明:可以为图形按钮添加图形文件,以创建真正的说明:可以为图形按钮添加图形文件,以创
56、建真正的“图形按钮图形按钮”。4.6.2 4.6.2 复选框复选框 选项按钮组属于多项中选择一项的选择,若需要选择多选项按钮组属于多项中选择一项的选择,若需要选择多项的情况,可以采用多个复选框(项的情况,可以采用多个复选框(CheckBox)控件。)控件。 当复选框被选定时,复选框中出现一个当复选框被选定时,复选框中出现一个“ ”。复选框。复选框的的Caption属性可以指定出现在复选框旁边的文本,而属性可以指定出现在复选框旁边的文本,而Picture属性用来指定当复选框被设计成图形按钮时的图像。属性用来指定当复选框被设计成图形按钮时的图像。 复选框的状态由其复选框的状态由其Value属性决定
57、:属性决定:0 假,假,1 真,真,2 暗。暗。1. 使用单个复选框使用单个复选框 单个的复选框是让用户在两个选项之间进行选择,如是单个的复选框是让用户在两个选项之间进行选择,如是或否,真或假。这有点儿像两个按钮的选项组,只是形式或否,真或假。这有点儿像两个按钮的选项组,只是形式上要简单一些,操作更方便一些。上要简单一些,操作更方便一些。【例例4-16】在上例中,增加复选框,控制选项按钮组的显在上例中,增加复选框,控制选项按钮组的显示,如图示,如图4-16所示。所示。图图4-16 利用复选框控制选项按钮组的显示利用复选框控制选项按钮组的显示 复选框控件复选框控件Check1的的Click事件代
58、码:事件代码:Private Sub Check1_Click() Option1.Visible = Check1.Value Option2.Visible = Check1.Value Option3.Visible = Check1.Value Option4.Visible = Check1.ValueEnd Sub2. 使用多个复选框使用多个复选框 一般情况下,复选框总是成组出现,用户可以从中选择一般情况下,复选框总是成组出现,用户可以从中选择一个或多个选项。一个或多个选项。【例例4-17】设计一个个人资料输入窗口,使用选项按钮组设计一个个人资料输入窗口,使用选项按钮组输入性别与民
59、族,使用复选框输入个人爱好,如图输入性别与民族,使用复选框输入个人爱好,如图4-17所所示。示。图图4-17 使用多个复选框使用多个复选框 编写命令按钮编写命令按钮Command1的的Click事件代码:事件代码:Private Sub Command1_Click() If Text1.Text = Then a = InputBox(您忘了输入姓名!, 注意, 请在此输入姓名) If a = Or a = 请在此输入姓名 Then Exit Sub Text1.Text = a End If p1 = 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 + Check
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025茶叶订购购销合同
- 2025年短视频内容分析服务协议
- “学在旅途乐在自然”社区儿童研学教育系列活动方案设计
- 2025年短视频内容创作合同协议(主播跳槽)
- 2025年短视频客服管理合同协议
- 2025年第二中心小学食堂经营租赁合同
- 毕业生就业协议书档案
- 2025年个体商户门面租赁合同
- 协议出售厂房合同范本
- 虚拟股权协议书
- YS/T 766-2011电子废弃物的贮存安全规范
- GB/T 3452.1-2005液压气动用O形橡胶密封圈第1部分:尺寸系列及公差
- GB/T 18037-2000带电作业工具基本技术要求与设计导则
- GB/T 10782-2006蜜饯通则
- 不对称高压脉冲轨道电路讲义课件
- 个人所得税APP培训课件
- 教学成果奖申报技巧课件
- 部编版道德与法治五年级上册【第四单元】全单元课件
- 外研版六年级英语一般现在时的用法
- 广西基本医疗保险门诊特殊慢性病申报表
- 基桩完整性试验检测记录表(低应变法)
评论
0/150
提交评论