第7章程序VB选择结构程序设计[详版课资]_第1页
第7章程序VB选择结构程序设计[详版课资]_第2页
第7章程序VB选择结构程序设计[详版课资]_第3页
第7章程序VB选择结构程序设计[详版课资]_第4页
第7章程序VB选择结构程序设计[详版课资]_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第7章 选择结构程序设计,1,课堂优质,学习重点,If语句、IIf函数、Switch函数、Select Case语句的格式与使用。 If 语句的嵌套使用。 掌握常用的选择结构算法。,2,课堂优质,本章内容,7.1 If语句 7.2 Select Case语句 7.3 基本算法及应用 7.4 其他应用举例 本章小结,3,课堂优质,引言,分支结构,4,课堂优质,7.1 If语句,7.1.1 IfThen结构 7.1.2 IfThenElse结构 7.1.3 IfThenElseIf结构 7.1.4 If语句的嵌套 7.1.5 与If语句有关的函数,5,课堂优质,注1:条件表达式的值为True或Fa

2、lse,一般是逻辑或关系表达式,也可以是算术表达式(转换为逻辑值),7.1.1 IfThen结构,两种格式:,格式1: 块形式 If Then 语句体 End If,格式2:单行形式 If Then 语句体,注2:当条件为True时执行语句体,否则执行If语句的下一条语句,注3:语句体中可以是多条语句,当采用格式2时,所有的语句必须写在一行,用冒号隔开语句体中的语句,6,课堂优质,7.1.1 IfThen结构,例:已知有两数x、y,编程使x中存放较大的数 分析:如果x=y,则不需要做处理 如果xy,则做交换处理 实现:If x y Thentemp = xx = yy = tempEnd If

3、 用格式2描述: If x y Then temp = x:x = y:y = temp,特别注意: 块结构时If和End If成对出现,7,课堂优质,7.1.1 IfThen结构,例7-1 电子闹钟设计,主要利用文本框、按钮、计时器控件实现闹钟功能。,8,课堂优质,例7-1,程序代码如下: Private Sub Command1_Click() Timer1.Enabled = Not Timer1.Enabled 用Not运算进行开关控制 End Sub Private Sub Timer1_Timer() Dim d As Date d = Text1.Text If Hour(Tim

4、e) = Hour(d) And Minute(Time) = Minute(d) Then Beep 到达时间后发声 End Sub,功能: 连续1分钟响铃,60次,等价于: If Hour(Time) = Hour(d) And Minute(Time) = Minute(d) Then Beep End If,9,课堂优质,7.1.2 IfThenElse结构,两种格式:,格式1: If Then 语句体1 Else 语句体2 End If,格式2: If Then 语句体1 Else 语句体2,注:当条件为True时执行语句体1,否则执行语句体2,10,课堂优质,例7-2 已知x,求,

5、程序代码如下: Private Sub CmdCul_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 If End Sub,等价于: If x 0 Then MsgBox x不能小于0 Else y = Sqr(x) : txtY.Text = Str(y),11,课堂优质,7.1.3 IfThenElseIf结构,If Then语句体1Els

6、eIf Then语句体2Else语句体n+1End If,格式:,12,课堂优质,7.1.3 IfThenElseIf结构,判断的顺序为表达式1、表达式2 只有当表达式1为False时才判断表达式2,当表达式1和表达式2都为False时,才判断表达式3, 程序执行语句体n+1的条件为前n个表达式均为False。,13,课堂优质,7.1.3 IfThenElseIf结构,例:已知变量ch中存放了一个字符,判断该字符是字母字符、数字字符、空格还是其它字符。 分析:字母字符:ch=“a” And ch=“A” And ch=“0” And ch=“9”空格字符:ch=“ ” 实现:,If ch=“a

7、” And ch=“A” And ch=“0” And ch=“9” ThenPrint “数字字符”ElseIf ch=“ ” ThenPrint “空格” ElsePrint “其他字符”End If,14,课堂优质,7.1.3 IfThenElseIf结构,例7-3 旅客乘车旅行,可免费携带30公斤行李,超 过30公斤的部分每公斤需支付托运费10元,超过50 公斤部分则每公斤需支付20元托运费。请编程根据 每位旅客行李的重量计算其应付的行李托运费。,15,课堂优质,例7-3,此分段函数用程序代码表示如下: Private Sub Command1_Click() Dim x As Sin

8、gle, y As Single x = Val(Text1.Text) If x 50 y = (x - 50) * 20 + 20 * 10 End If Text2.Text = y End Sub,能否写成?,可以,但Else已经包含了x=30的信息,16,课堂优质,7.1.4 If语句的嵌套,If语句中又包含If语句 在Then子句或Else子句的语句体中包含完整的一条If语句 如: If x y ThenPrint x & “” & yElse If xy ThenPrint x & “” & yElse Print x & “=” & y End If End If,17,课堂优

9、质,7.1.4 If语句的嵌套,注1: If语句的完整性,即内层If语句必须完整地出现在外层If语句的Then子句或Else子句中。,内外层不能有交叉!,18,课堂优质,7.1.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,19,课堂优质,7.1.4 If语句的嵌套,为使程序结构更为清晰,要养成良好的书写习惯。,If ThenIf T

10、hen Else End IfElseIf Then If Then Else End IfEnd If,为体现层次,可以使用Tab健排放不同层次的语句,20,课堂优质,7.1.4 If语句的嵌套,例7-4 根据用户输入年龄和性别,输出不同的欢迎信息。其中小于14岁的男性为boy,大于14岁的男性为guy,其中小于14岁的女性为girl,大于14岁的女性为miss。,21,课堂优质,例7-4,程序代码如下: Private Sub Command1_Click() If Op_male.Value = True Then If Val(Txt_age.Text) 14 Then 小于14岁的男

11、性 MsgBox Hello,boy! Else 大于或等于14岁的男性 MsgBox Hello,guy! End If Else If Val(Txt_age.Text) 14 Then 小于14岁的女性 MsgBox Hello,girl! Else 大于或等于14岁的女性 MsgBox Hello,miss! End If End If End Sub,22,课堂优质,7.1.5 与If语句有关的函数,1. IIf函数 *2. Switch函数,23,课堂优质,1. IIf函数,格式: IIf(条件表达式,条件为True时的表达式,条件为False 时的表达式) 功能:根据条件表达式的

12、值,确定函数返回后面两个表达式的其中一个的值。,24,课堂优质,1. IIf函数,IIf函数实际上是IfThenElse结构的一个简写 IIf函数中后两个表达式可以是各种类型的表达式,也可以是一个IIf函数的调用 Print x & IIf(x 0, “大于0”, “小于或小于0”) s = IIf(x 0, 1, IIf(x = 0, 0, -1) 判断x的符号,25,课堂优质,1. IIf函数,将If语句改写成使用IIf函数:,If x 30 Then y = 0 ElseIf x = 50 Then y = (x - 30) * 10 Else y = (x - 50) * 20 + 2

13、0 * 10 End If,等价于: y = IIf(x 30, 0, IIf(x = 50, (x - 30) * 10, (x - 50) * 20 + 20 * 10),26,课堂优质,2. Switch函数,格式Switch(表达式1,值1, 表达式2,值2 , 表达式n,值n) 功能计算一组条件表达式列表的值,然后返回与条件表达式列表中最先为True的表达式所对应的Variant型数值或表达式。 如:lblstatus.Caption= _ Switch(grade=90,A,grade=80,B,grade80,C) 用于多分支情况 条件表达式和值必须成对出现 !,27,课堂优质,

14、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 50, (x-50)*20+20*10),28,课堂优质,7.2 Select Case语句,(多分支语句) 格式: Select Case Case 表达式列表1Case 表达式列表2Case ElseEnd Select,29,课堂优质,7.2 Select Case语句,T,表达式1,语句体1,表达式

15、2,语句体2,T,表达式n,语句体n,语句体n+1,T,执行过程: 计算测试表达式的值; 依次比较各个表达式,符合条件则进入相应的语句体执行; 执行Select Case语句的下一条语句。,计算测试表达式的值,30,课堂优质,7.2 Select Case语句,注1:测试表达式可以是数值或字符串表达式; 注2:各表达式列表 合法的格式: 一个常量或常量表达式 多个常量或常量表达式,用逗号隔开,逗号相当于“或” ,如:Case 1,3,5,7 表达式1 to 表达式2,表示从表达式1到表达式2中所有的值,其中表达式1的值必须小于表达式2的值。如:Case 1 to 5 Is关系运算表达式,可以使

16、用的关系运算符为:、=、=,不可以使用逻辑运算符表示多个范围。 前面四种情况的组合,如Case Is10,2,4,6,Is 0 注3:若有多个Case表达式符合条件,则只执行第一个符合的Case下的语句体。,31,课堂优质,7.2 Select Case语句,例:已知变量ch中存放了一个字符,判断该字符是字母字符、数字字符、空格还是其它字符。(用Select Case语句改写) 分析:将各种字符的判断条件改写成符合要求的Case条件 字母字符:ch=“a” And ch=“A” And ch=“0” And ch=“9” “0” To “9” 空格字符:ch=“ ” “ ”Is=“ ” 实现:

17、,Select Case chCase “a” To “z”, “A” to “Z”Print “字母字符” Case “0” To “9”Print “数字字符”Case “ ”Print “空格”Case ElsePrint “其他字符”End Select,32,课堂优质,7.2 Select Case语句,例7-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,33,课堂优质,7.2 Select Case语句,所有Select Case语句可以替换为IfThenElseIf语句。 只有在If语句和每一个ElseIf语句计算相同条件表达式时,才能用Select Case结构替换IfThenElseIf结构。,34,课堂优质,7.3 基本算法及应用,7.3.1 求两个数的最大(小)值 7.3.2 用户输入时按键的判断 7.3.3 信息的有效性验证 7.3.4 单选钮和复选框的应用

19、,35,课堂优质,7.3.1求两个数的最大(小)值,分析: 两个数的关系无非有3种情形,即:AB,A=B,A= B Then Max = A Else Max = B If A B Then Max = A Else Max = B,36,课堂优质,7.3.2用户输入时按键的判断,两种方法: 一是在输入时判断,使用文本框的Key事件; 常用:KeyPress事件(KeyAscii参数) 二是在全部输入完成后再对每个字符进行判断,使用循环结构依次获取字符串中的字符。,例7-7 在文本框中输入一个字符串,要求只能出现字母。 Private Sub Text1_KeyPress(KeyAscii A

20、s Integer) If (KeyAscii Asc(z) And _ (KeyAscii Asc(Z) Then KeyAscii = 0 End Sub,37,课堂优质,7.3.3信息的有效性验证,例7-8 登录界面设计,“确定”按钮的Click事件过程如下: Private Sub cmdok_Click() If txtuser.Text = Or txtpwd.Text = Then MsgBox 请输入完整信息! Else If txtpwd.Text 20082008 Then MsgBox密码错误,不能登录! txtpwd .Text = txtpwd.SetFocus El

21、se MsgBoxtxtuser.Text & ,欢迎您! End If End If End Sub,有效信息: 帐号和密码都不能空 密码符合要求,这样的密码设置方法,安全性差,38,课堂优质,7.3.4 单选钮和复选框的应用,单选钮多选一 在同一组单选钮中只有一个按钮的Value属性值为1,通常使用IfThenElseIf的语句格式进行判断。 复选框多选多 同一组复选框中可以同时有多个被选中,也可以只选中一个,也可以一个都不选中,通常我们对各个复选框进行独立判断。,39,课堂优质,7.3.4 单选钮和复选框的应用,例7-9 根据用户选择,求若干门课程的总分或平均分,参考代码如下: Priv

22、ate 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 = n + 1 If chkEnglish.Value = 1 Then sum = sum + Val(txtEnglish.Text): n = n + 1 If optTotal.Value Then txtResul

23、t.Text = n & 门课总分: & vbCrLf & sum Else If n 0 Then txtResult.Text = n & 门课平均分: & vbCrLf & sum / n End If End Sub,问:变量n的作用是什么?,40,课堂优质,7.4 其他应用举例,例7-10 例7-11 例7-12 例7-13,41,课堂优质,例7-10,例7-10 调整3个文本框中的数值,使其中 的数值按小到大的顺序排放,If a b Then temp = a: a = b: b = temp 如果a大于b,交换a和b的值 If a c Then temp = a: a = c:

24、c = temp 如果a大于c,交换a和c的值 If b c Then temp = b: b = c: c = temp 如果b大于c,交换b和c的值,42,课堂优质,例7-11,例7-11 求一元二次方程ax2+bx+c=0的根,根据数学中一元二次方程的求根公式,令: 当0时,方程有两个不相等的实根; 当=0时,方程有两个相等的实根; 当0时,方程有两个不相等的虚根。,43,课堂优质,例7-11,If a 0 Then delta = b * b - 4 * a * c If delta 0 Then x1 = (-b + Sqr(delta) / (2 * a) 第1个根 x2 = (-

25、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

26、End If,44,课堂优质,例7-12,例7-12 编程实现输入一个整数,判断其能否被3、 5、7整除,并输出以下信息之一: (1)能被3、5、7整除。(2)能被其中两个数 (要指出哪两个)整除。(3)能被其中一个数 (要指出哪一个)整除。(4)不能被3、5、7任 一个整除。,45,课堂优质,代码1,If 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

27、 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 Mod 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整除,46,课堂优质,代码2,If x Mod 3 = 0 And x Mod 5 = 0 And x Mod 7 = 0 Then MsgBox 能被3,5,7整除 Else

28、If 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 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

29、 MsgBox 能被7整除 Else MsgBox 不能被3、5、7任一数整除 End If,47,课堂优质,代码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 = 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,48,课堂优质,代码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 3: MsgBox 能被3,5整除 Case 4: MsgBox 能被7整除 Case 5: MsgBox 能被3,7整除 Case 6: MsgBox 能被5,7整除 Ca

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论