1、第七章第七章 VisualBasic控制结构控制结构-选择结构选择结构 1.掌握If 条件语句 2.Select Case选择语句 3.选择嵌套结构 本章重点:学习掌握If条件语句和Select Case语句的格式及其使用。本章难点:选择嵌套结构本章内容及要求:7.1.1 赋值语句赋值语句是任何程序设计中最基本的语句,赋值语句都是按顺序执行的。赋值语句的形式为:其中,关键字Let为可选项,通常都省略该关键字。它的作用是计算右边表达式的值,然后赋给左边的变量,表达式的类型应该与变量名的类型一致。7.1 顺序结构顺序结构(1)当表达式为数值型且与变量的精度不相同时,强制转换成左边变量的精度。例如:
2、iA%=4.7 iA是整型变量,iA中的结果是5(2)当表达式是数字字符串,左边变量是数值类型时,自动转换成数值类型再赋值;但当表达式有非数字字符或空串时,则出错。例如;n%=123 n中的结果是123,与n%=Val(123)效果相同 n%=“1a23”出现“类型不匹配”的错误(3)赋值号左边只能是变量,不能是表达式、常量。如下面的赋值语句。7.1.1 赋值语句赋值语句 sin(x)=x+y 左边是表达式 5=sqr(s)+a+b 左边是常量 x+y=a+b 左边是表达式是错误的(4)不能在同一语句中给多个变量赋值。例如:a=b=c=1 我们的本意是给a、b、c赋初值1,书写上没有错误。但V
3、isual Basic编译时,将右边两个“=”作为关系运算符处理,先进行b=c的比较,结果为true(-1);接着进行True=1的比较,结果为False(0);最后将false的值赋给a。7.1.1 赋值语句赋值语句(5)当逻辑型赋值给数值型时,True转换为-1,False转换为0;反之,非0转换为True,0转换为False。(6)任何非字符类型赋值给字符类型,自动转换为字符类型。(7)注意N=N+1 是累加中常见的赋值语句,表示将N变量中的值加1后再赋值给N。7.1.1 赋值语句赋值语句With结构用于对一个单一对象或用户定义对象执行一系列的语句,其格式为:使用With结构可以对某个对
4、象执行一系列的语句,而不用重复指出该对象的名称。With 结构语句结构语句End语句通常用来结束一个程序的执行。其格式为:当在程序中执行End语句时,将终止当前程序,重置所有变量,并关闭所有的数据文件。7.1.2 结束语句结束语句EndStop语句用来暂停程序的执行,使用Stop语句,就相当于执行“运行”菜单中的“中断”命令。其格式为:是把解释程序置为中断模式,以便于对程序进行检查和调试。7.1.3 暂停语句暂停语句Stop7.2 选择结构选择结构v 选择结构:当设定条件成立时执行某些语句,条件不成立时则跳过这些语句或执行其它的语句。v 选择结构中要使用选择语句,在VB中提供了两种语句:v I
5、f语句和Select Case语句1、If单分支结构单分支结构格式格式1:If Then 其中,其中,是一个条件表达是一个条件表达式或逻辑表达式式或逻辑表达式格式格式2:If Then End If TF 语句(块)语句(块)表达式表达式单分支结构单分支结构1、If单分支结构单分支结构说明:表达式都是逻辑表达式,数值表达式和关系表达式被视为逻辑表达式的特例。当表达式为数值表达式时,VB 将这个值解释为 True 或 False:一个为零的数值为 False,而任何非零数值都被看作 True。语句块可以是一条或多条语句。如果使用格式1的简单形式表示,则只能是一条语句;或用冒号隔开的多条语句,但这
6、些语句必须书写在一行上。可以使用单行或多行语法有条件地执行一个语句。下面两个例子是等价的:If anyDate Now Then anyDate=Now 和 If anyDate Now Then anyDate=Now End If If.Then 的单行格式不用 End If 语句。1、If单分支结构单分支结构 例例5-1:输入一个数,如果是奇数则通过消息框输出输入一个数,如果是奇数则通过消息框输出该数。该数。Private Sub Form_Click()Dim x As Integer x=InputBox(请输入一个值:请输入一个值:)If x Mod 2=1 Then MsgBox
7、 x End SubData是是3的倍数的倍数 X是奇数是奇数?输出输出xTF格式格式1:If Then Else End If 格式格式2:If Then Else 2、If双分支结构双分支结构v 功能:当表达式的值为非0(True)时,执行Then后面的语句块1,否则执行Else后面的语句块2。表达式语句块1语句块2TF2、If双分支结构双分支结构 例如,例如,Dim Data As Integer Data=InputBox(“请输入成绩:请输入成绩:)If Data=90 Then Print“优秀优秀”Else Print“合格合格”Print 计算完毕计算完毕 上例的上例的If 语
8、句可以改写为:语句可以改写为:If Data=90 Then Print“优秀优秀”Else Print“合格合格”End IfData=90?输出输出“优秀优秀”TF输出输出“合格合格”输出输出“计算完毕计算完毕”v 条件函数:v IIf函数形式是:v IIf(表达式,当表达式为True时的值,当表达式为False时的值)v iif函数等价于双分支结构语句。v 例如,求x,y中大的数,放入Tmax变量中,语句如下:v Tmax=IIf(x y,x,y)v 等价于:If xy Then Tmax=x else Tmax=y格式:格式:If Then ElseIf Then Else 语句块 n
9、+1 End If 不管有几个分支,依次判断,当某条件满足,执行相应的语句块,其余分支不再执行;若条件都不满足,且有Else子句,则执行该语句块,否则什么也不执行。ElseIf不能写成 Else If。3、If多分支结构多分支结构说明:不管有几个分支,程序执行了一个分支后,其余分支不再执行。ElseIf子句的数量没有限制,可以根据需要使用任意多个ElseIf子句。语句中的ElseIf子句和Else子句都是可选项,如果省略这些子句,则成为单分支结构。If.Then.ElseIf 只是 If.Then.Else 的一个特例。注意,可以使用任意数量的 ElseIf 子句,或者一个也不用。可以有一个
10、Else 子句,而不管有没有 ElseIf 子句。例5-5 已知百分制成绩mark,显示对应的五级制成绩,哪些正确,哪些错误?Select Case选择语句选择语句 v 语法格式:语法格式:Select Case Case Case Case Else End Selectv 功能:根据测试表达式的值,决定程序的流向。表达式块1表达式块2表达式块n语句快n+1 语句块1语句块2语句块nSelect Case选择语句选择语句 说明:说明:(1)值的类型是数值型、字符串型、日期型等,一旦与某个Case后的值相等,则执行这个Case中的,完成后执行End Select后的语句。(2)如果所有的Cas
11、e后的都不与项匹配,则执行Case Else后的。(3)表达式表与测试变量或表达式的类型必须相同,每一个表达式表是一个或几个值的列表。如果在一个列表中有多个值,就用逗号把值隔开。表达式表有四种形式:一个表达式。如:Case 6一组用逗号隔开的枚举值。如:Case 1,3,5,7 表达式1 TO 表达式2。如:Case 1 To 10Is。如:Case Is=80 另外,在一个情况语句中,上述四种形式可以混合使用Select Case选择语句选择语句 说明:说明:(4)Select Case语句在执行时,先求测试表达式的值,然后寻找该值与哪一个Case子句的表达式值相匹配,找到后则执行与该Cas
12、e语句有关的语句块,之后自动转到EndSelect后的语句执行;如果没有找到与Case子句中的表达式相匹配的值,则执行Case Else子句有关的语句块,然后转到End Select后面的语句执行。(5)当有多个Case子句的取值范围和测试表达式的值域相符时,只执行符合要求的第一个Case子句后的语句块。(6)Select Case语句只对单个表达式求值,并根据求值结果执行不同的语句块;而If Then Else语句可以对不同的表达式求值,然后执行不同的操作。这是两者的主要区别。Data=InputBox(请输入一个成绩请输入一个成绩,成绩分等成绩分等)Select Case Data Cas
13、e is=100 MsgBox 满分满分,成绩分等成绩分等 Case is=90 MsgBox 优秀优秀,成绩分等成绩分等 Case is=80 MsgBox 良好良好,成绩分等成绩分等 Case is=70 MsgBox 一般一般,成绩分等成绩分等 Case is=60 MsgBox 合格合格,成绩分等成绩分等 Case Else MsgBox 不合格不合格,成绩分等成绩分等 End Select单单击击窗窗体体确确定定例题:用例题:用Select语句实现按输入学生成绩分等级。语句实现按输入学生成绩分等级。Data=InputBox(请输入一个成绩请输入一个成绩,成绩分等成绩分等)Selec
14、t Case Int(Data/10)Case 10 MsgBox“满分满分 Case 9 MsgBox 优秀优秀 Case 8 MsgBox 良好良好 Case 7 MsgBox 一般一般 Case 6 MsgBox 合格合格 Case Else MsgBox 不合格不合格 End Select映射法表达条件Char=InputBox(请输入一个字符请输入一个字符,测试测试)Select Case Char Case 0 To 9 MsgBox 字符是数字字符是数字,测试测试 Case a To z MsgBox 字符是小写字母字符是小写字母,测试测试 Case A To Z MsgBox
15、字符是大写字母字符是大写字母,测试测试 Case Else MsgBox 字符是其它符号字符是其它符号,测试测试End Select确确定定单单击击窗窗体体例题:例题:测试输入的字符测试输入的字符上面学习了选择结构语句的基本形式,可以通过这些基本形式加以复合,获得更为复杂的选择结构,称为选择结构语句的嵌套。可根据实际情况选择采用何种结构。例如:4、嵌套结构、嵌套结构例题:求一元二次方程ax2+bx+c=0的解。分析:3个文本框、2个标签、1个按钮。一些辅助标签。(1)如果a=0,则不是二次方程,此时如果b=0,则提示重新输入系数;如果b0,则:x=-c/b(2)如果a 0,且b2-4ac=0,则有两个相等的实根(3)如果a 0,且b2-4ac0,则有两个不等的实根(4)如果a 0,且b2-4ac0,则有两个共轭复根思考题:设计一个口令检测程序,界面如下图,当用户输入的口令正确时,显示“恭喜!,您已成功进入本系统”,否则,显示,“口令错!,请重新输入”。如果连续两次输入了错误口令,在第三次输入完口令后则显示一个消息框,提示“对不起,您不能使用本系统”,然后退出整个应用程序。