第4章 选择结构程序设计.ppt

上传人:本田雅阁 文档编号:2979594 上传时间:2019-06-17 格式:PPT 页数:58 大小:229.51KB
返回 下载 相关 举报
第4章 选择结构程序设计.ppt_第1页
第1页 / 共58页
第4章 选择结构程序设计.ppt_第2页
第2页 / 共58页
第4章 选择结构程序设计.ppt_第3页
第3页 / 共58页
第4章 选择结构程序设计.ppt_第4页
第4页 / 共58页
第4章 选择结构程序设计.ppt_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《第4章 选择结构程序设计.ppt》由会员分享,可在线阅读,更多相关《第4章 选择结构程序设计.ppt(58页珍藏版)》请在三一文库上搜索。

1、1,第四章 选择结构程序设计,在日常生活和工作中,经常要根据不同的情况,选择不同的处理方法。同样,在程序设计过程中,也常常要根据不同的条件,采用不同的操作。例如:要判断一元二次方程ax2+bx+c=0有无实根,应根据一元二次方程满足实根的条件,如果a0 且a2-4ac0,则方程有实根,否则没有实根。 选择结构的特点是:根据给定的条件,如果条件为真,则执行某条语句,否则执行另外的语句或不做任何操作。 Visual Basic 提供了多种不同形式的条件语句和相应的选择性控件。,2,本章主要内容:,1. 条件表达式:关系表达式和逻辑表达式 2. 条件语句:If Then 语句;If Then Els

2、e 语 句;Iif 函数 3. 多分支语句 If Then Else 语句和Select Case 语句 4. 选择结构的嵌套 5. 选择性控件:单选按钮和复选框 6.计时器控件,3,在选择结构程序设计语句中,作为选择判断依据的表达式称为“条件表达式”。条件表达式的结果只能是“TRUE” 或“FALSE”。它可以分为两类:关系表达式和逻辑表达式。,4.1 条件表达式,4,4.1.1 关系运算符与关系表达式,(1) 关系运算符 关系运算符也称为比较运算符,用来比较两个操作数的大小。其运算结果是一个逻辑值,即真(True)或假(False)。Visual Basic提供的关系运算符见表4-1,5,

3、说明: 1、关系运算的两个操作数一般是相同或相容类型的,常对两个数值、两个字符串、两个日期型数据进行比较。 、如果两个操作数是数值型,则按其大小比较。 例如: 8=9 结果为False 87 结果为False 8=8 结果为True1 3、如果两个操作数是字符型,则按字符的ASCII码值从左到右逐一比较、即首先比较两个字符串的第1个字符,其ASCII码值大的字符串大,如第1个字符相同,则比较第2个字符,以此类推,最先出现不一样的字符的关系决定字符串的关系,如所有字符相同,则两个字符串相等。 例如:“ABCD”ABDC” 结果为False “abcd“ “abc“ 结果为True 汉字字符的AS

4、CII码值大于西文字符。 例如: ” “”0” 结果为False ”a”我们” 结果为False,6,4、如果两个操作数是日期型,则将日期型数据视为形如“yyyymmdd”的8位整数,按数值大小比较。 例如: #2006-12-2#2006-12-1# 结果为True (2) 关系表达式: 由操作数和关系运算符组成的表达式称为关系表达式。关系表达式的运算结果是一个逻辑值,即真(True)或假(False)。格式为: 在关系表达式中,如果出现函数和算术运算表达式,先计算函数和算术运算表达式,然后再计算关系运算。 例如:16 Mod 65 先计算16 Mod 6,结果是4,再计算 45, 结果为F

5、alse Mid(“Visual Basic 程序设计”,8,5)”basic” 先计算Mid(“Visual Basic 程序设计”,8,5),结果为”Basic”,再计算”Basic” ”basic”结果为True 5=5=5 先计算5=5,结果为True,再计算True=5,结果是False,7,4.1.2 逻辑运算符与逻辑表达式,(1)逻辑运算符 逻辑运算符一般用于对两个逻辑型数据进行运算,其结果仍为逻辑型数据(True或False)。逻辑运算符除Not是单目运算符外,其余都是双目运算符。 Visual Basic提供的逻辑运算符见表4-25。(按运算优先级从高到低排列),8,表43列

6、出了6种逻辑运算的全部可能值,称为“真值表”。 表 43 逻辑运算真值表,9, 逻辑表达式 用逻辑运算符连接起来的表达式称为逻辑表达式,逻辑表达式也称为布尔表达式。 例如: 一元二次方程有实根的条件:a0 且a2-4ac0 写成逻辑表达式为: a0 and a2-4*a*c=0 数学上判断x是否在区间a, b时,习惯上写成axb ,但在VB中不能写成: a = x = b 应写成VB逻辑表达式: a = x And x = b。,10,一个逻辑表达式中可能含有多种运算,计算机按以下顺序对表达式求值: 函数运算; 算术运算; 关系运算; 逻辑运算。 例如:计算逻辑表达式sqr(4)2 Or No

7、t 8 0 And ( 9 - 8) / 2 0的值 首先进行函数运算:sqr(4) 值,结果为2 其次算术运算:(9-8)/2=0.5 第三进行关系运算: 22 结果为False 80 结果为True 0.50结果为False 最后进行逻辑运算: False or not True and False 按照逻辑运算符的优先级,先计算Not 运算,再计算and运算,最后计算or运算,结果为 False,11,4.2 条件语句,条件语句是形成选择结构最基本的语句之一,其形式有三种: IfThen 语句 IfThenElse 语句 IIF函数,12,4.2.1 IfThen 语句,、格式: IfT

8、hen 语句属于单分支结构语句,书写格式有两种:单行结构和块结构。 “单行结构”格式: If 条件表达式 Then 语句组 “块结构” 格式: If 条件表达式 Then 语句组 End If 其中: 条件表达式:一般为关系表达式和逻辑表达式。也可为算术表达式,表达式值为非0时,按True进行判断,表达式值为0时,按False进行判断 语句组:在行结构中,一般为一条语句,如果是多条语句,必须用“:”分开,且在一行上书写。 注意:在“块结构” 格式中,If和End If必须成对出现。,13,、语句功能: 当条件表达式的值为True时,执行Then后面的语句, 否则执行该语句的下一条语句。其流程图

9、为4.1:,14,例如: If x0 Then x=x+1 或: If x0 Then X=x+1 End If 表示如果x0,则将x的值增加1,否则执行该语句的下一条语句。 例如:已知两个数x和y,比较它们的大小,使得x大于y。语句为: If xy Then t=x:x=y:y=t (注意: 多条语句必须用“:”分开,且必须书写在一行上) 或: If xy Then t=x x=y y=t End If t是中间变量,交换两个变量的值,必须借助于中间变量。,15,4.2.2 IfThenElse 语句,格式:IfThenElse 语句属于双分支结构语句,书写格式也有两种:单行结构和块结构。

10、单行结构: If 条件 Then 语句组1 Else 语句组2 块结构: If 条件 Then 语句组1 Else 语句组2 End If 其中:Else 语句组2 加,表示可选部分。 如果 Else 语句组2 部分存在,形成双向分支。如果Else 语句组2部分省略,则形成单向分支。 在“块结构”条件语句,If 和 End If 也必须成对出现。,16,格式:IfThenElse 语句属于双分支结构语句,书写格式也有两种:单行结构和块结构。 单行结构: If 条件 Then 语句组1 Else 语句组2 块结构: If 条件 Then 语句组1 Else 语句组2 End If 其中:Else

11、 语句组2 加,表示可选部分。 如果 Else 语句组2 部分存在,形成双向分支。如果Else 语句组2部分省略,则形成单向分支。 在“块结构”条件语句,If 和 End If 也必须成对出现。,17,、语句功能: 当条件成立时,执行Then后面的语句组1, 否则,执行Else后面的语句组2。其流程图为4.2:,18,例如:求X和Y中的最大数,将最大数存贮在变量Max中,用双分支结构语句实现: If X Y Then Max = X Else Max = Y 或: If X Y Then Max = X Else Max = Y,19,4.2.3 IIF函数,IIF函数是一种条件函数,可以代替

12、IF语句。 格式: IIf (条件,True-部分,False-部分) 功能: 根据条件判断,选择True-部分或False-部分的值:当条件为True时,计算并返回True-部分的值;当条件为False时,计算并返回False-部分的值。 说明: 条件一般为关系表达式和逻辑表达式。也可为算术表达式,表达式值为非0时,按True进行判断,表达式值为0时,按False进行判断 IIf 函数的引用将产生一个返回值,其值与True-部分和False-部分的类型一致。 True-部分和False-部分为表达式、变量或函数。,20,例如,求x,y中大的数,赋值给Max变量,语句如下: Max=Iif(x

13、y,x,y) 判断一个整数是奇数还是偶数,语句如下: Print Iif(x mod 2=0,” 偶数”,”奇数”),21,4.3 多分支语句,双分支结构只能根据条件的True和False决定处理两个分支中的其中一个。当实际处理的问题有多种条件(超过两种)时,就要用到多分支语句。多分支语句有两种:IfThenElseIf 语句 和 Select Case语句,22,4.3.1 IfThenElseIf 语句,(1)格式 IF 条件1 Then 语句块1 ElseIf 条件2 Then 语句块2 ElseIf 条件n Then 语句块n Else 语句块n+1 End If,23,(2)说明 语

14、句块1到语句块n+1中只有一个被执行,无论哪个被执行后,流程都会到End If后下一条语句去。 ElseIF不能写成Else If。 当多分支中有多个条件同时满足,则只执行第一个与之匹配的语句块。因此,要注意对多分支的条件的书写次序,防止某些值被过滤。 If 和 End If 必须成对出现。,(3)功能 依次测试条件1到条件n,当条件i成立时(i为1到n之间的整数),执行语句块i,然后执行End If后面的下一条语句;如果所有的条件都不成立,并且 Else 语句块n+1 存在,则执行语句块n+1,24,其流程见图:,25,【例4.4】输入某位学生的百分制成绩,要求输出成绩的等级:假设90分以上

15、为A等,80-89分为B等,70-79分为C等,60-69为D等,60分以下为E等。 Private Sub Form_Click() Dim Score As Integer Score = InputBox(“请输入学生的百分制分数“) If Score = 90 Then MsgBox “学生的成绩为A等“ ElseIf Score = 80 Then MsgBox “学生的成绩为B等“ ElseIf Score = 70 Then MsgBox “学生的成绩为C等“ ElseIf Score = 60 Then MsgBox “学生的成绩为D等“ Else MsgBox “学生的成绩为

16、E等“ End If End Sub,26,4.3.2 Select Case语句,Select Case语句(又称为情况语句)。Select Case语句是根据一个表达式的值,判断它的所属范围,选择执行不同的语句块,是多分支选择的另一种语句实现方法。可以取代IfThenElseIf 语句。 (1)格式 Select Case 测试表达式 Case 表达式列表1 语句块1 Case 表达式列表2 语句块2 Case 表达式列表n 语句块n Case Else 语句块n+1 End Select,27,(2)功能 根据测试表达式的值,依次与表达式列表1到表达式列表n所描述的“域值”范围进行比较,

17、如果与表达式列表i的“域值”范围相匹配,则选择执行语句块i(i为1到n之间的整数),然后到End Case后下一条语句去。 如果与所有表达式列表的“域值”范围都不匹配,并且 Else 语句块n+1 存在,则执行语句块n+1,然后到End Case后下一条语句去。,28,其流程见图:,29,(3)说明 表达式列表i是由逗号分隔开的下列3种成分组成: 表达式; 表达式1 To 表达式2; Is关系表达式 表达式列表1到表达式列表n的值与测试表达式的值的类型必须相同。 如果测试表达式的值与多个表达式列表i中的“域值”范围相匹配,则选择执行相匹配的 第一个Case表达式列表i后面的语句块 语句块1到语

18、句块n+1中只有一个被执行,无论哪个被执行后,流程都会到End Case后下一条语句去。 Select Case和End Case必须成对出现。,30,【例】某商店进行购物打折优惠活动促销,根据每位顾客一次性购物的消费额给予不同的折扣,具体方法如下: 购物1500元以上的九五折优惠, 购物2000元以上的九折优惠, (3) 购物2500元以上的八五折优惠, (4) 购物4000元以上的八折优惠。,程序代码如下: Private Sub Command1_Click() Dim x As Single, y As Single x = InputBox(“请输入购物金额:“) Select Ca

19、se x Case Is 1000 Print “不优惠“,31,y = x Case Is = 5000 Print “八折优惠“ y = 0.8 * x End Select Print “优惠后应收款额为:“; y End Sub,32,也可以用IfThenElseIf 语句实现: Private Sub Form_Click() Dim x As Single, y As Single x = InputBox(“请输入购物金额:“) If x 0 Then Print “输入的的金额有误“ ElseIf x 1500 Then Print “不优惠“ y = x ElseIf x 2

20、000 Then Print “九五折优惠“ y = 0.95 * x ElseIf x 2500 Then Print “九折优惠“ y = 0.9 * x ElseIf x 4000 Then,33,Print “八五折优惠“ y = 0.85 * x Else Print “八折优惠“ y = 0.8 * x End If Print “优惠后应收款额为:“; y End Sub 从上述例题中,读者可以发现,同一个问题可以Select Case语句实现,也可以用IfThenElseIf语句实现.,34,4.4 选择结构的嵌套,将一个选择结构放在另一个选择结构内,称为选择结构的嵌套。If语

21、句的多分支格式实际上是一种If结构的嵌套形式。 选择结构的嵌套既可以是同一种结构的嵌套,也可以是不同结构之间的嵌套。 即可以在If结构中又包含If语句,或在Select结构语句中包含If语句等形式。 例如:若x大于0,则y等于1;若x小于0,则y等于-1;否则,y等于0。 语句如下: If x0 Then y=1 Else If x0 Then y=-1 Else,35,y=0 End if End if 此例中的If语句的Else子句中又出现If语句,形成了嵌套。 注意:在选择结构的嵌套中,应注意Else与If的配对关系。 【例4.7】:某航空公司规定:在旅游旺季7-9月,如果订票超过20(

22、含20)张,优惠票价的15%;订票20张以下优惠票价的5%。在旅游淡季1-4月、11月、12月,如果订票超过20(含20)张,优惠票价的30%;订票20张以下优惠票价的20%。其它情况一律优惠10%。编程计算优惠后的单价和总金额。,36,设计步骤如下: 1、设计界面:(如图4.5) 文本框Text1中输入月份 文本框Text2中输入订票的数量 文本框Text3中输入单价 标签Label6中为优惠后的单价 标签Label8中为优惠后的总金额,37,2、编写事件代码: 编写“计算优惠价和总金额”的命令按钮 Command1的Click事件代码为: Private Sub Command1_Clic

23、k() Dim m As Integer, n As Integer, p1 As Single m为月份,n为订 票的数量,p1为优惠前的单价 Dim r As Integer, s As Single, p2 As Single r为优惠率,s这总金额,p2为优惠后的单价 m = Val(Text1.Text) n = Val(Text2.Text) p1 = Val(Text3.Text) Select Case m Case 7 To 9 7月份到9月份 If n 20 Then r = 5 Else r = 15 超过20(含20)张,优惠15%;20张以下优惠5% Case Is

24、= 4, 11, 12 1-4月份,11月份,12月份 If n 20 Then r = 20 Else r = 30 超过20(含20)张,优惠30%;20张以下优惠20%,38,Case Else 其它情况 r = 10 优惠10% End Select p2 = p1 * (1 - r / 100) Label6.Caption = Str(p2) Label8.Caption = Str(p2 * n) End Sub 3、运行效果:(图见4.6),39,IIF函数也可以进行嵌套。 如上述:若x大于0,则y等于1;若x小于0,则y等于-1;否则,y 等于0,可以用:y=IIF(x0,1

25、,IIF(x0,-1,0) 实现。,40,4.5、选择性控件,我们介绍两个选择性控件单选按钮和复选框。单选按钮必须成组出现,用户在一组单选按钮中必须而且最多只选择一项。而复选框可以根据用户的需要选定其中的一项或多项,或者都不选。,41,4.5.1 单选按钮,单选按钮OptionButton控件,它的图形是,用来表示是否被选中。它的缺省名称为Option1、Option2。 单选按钮必须成组出现,通常将两个或两个以上的单选控件放在一个Frame控件(框架)中,形成一个选项组 在选项组中使用单选按钮,用户只能选择其中的一项,当其中的一项被选中(即图示为,也称为打开状态),其他选择按钮都被置于关闭状

26、态(即图示为)。要在Frame控件中形成一组OptionButton控件,首先绘制Frame,然后在内部绘制各OptionButton控件。下面介绍OptionButton控件的属性及事件:,42,OptionButton控件的属性 Value属性 表示单选按钮的被选状态。 True:被选中,也称为打开状态,图示为。 False:未被选中,也称为关闭状态,图示为,默认值。 、Alignment属性 表示控件与其标题的对齐方式。 0:单选按钮在左,标题在右,默认值。 1:单选按钮在右,标题在左。 、Caption属性 设置单选按钮的文本注释内容,即单选按钮边上的的文本标题。 、Style属性:指

27、定单选按钮的显示风格,用于改善视觉效果。 0Standard:标准方式 1Granpical:图形方式,43,、事件 单选按钮可接受Click事件,但通常不需要编写Click事件处理程序,因为单击单选按钮时,已将其状态改变,而是在其他命令按钮被按下时的相应Click事件处理程序中,根据单选按钮组的被选状态,进行不同的处理。所以,单选按钮组通常是为其他命令的Click事件处理程序提供选择条件。,44,4.5.2 复选框,复选框控件CheckBox控件,它的图形是。复选框可以根据用户的需要选定其中的一项或多项,或者都不选。当某一项被选中后,其左边的小方框就变成 。,45, 、复选框控件的属性: 、

28、Value属性 表示复选框的状态。 0:未被选择,图示为,默认值。 1:已被选择,图示为。 2:图示变灰(变暗),表示禁止用户选择。 、Alignment属性 表示控件与其标题的对齐方式。 0:复选框在左,标题在右,默认值。 1:复选框在右,标题在左 、复选框控件事件: 复选框控件可接受Click事件,但通常也不需要对复选框的Click事件编写处理程序,因为单击复选框时,也已将其状态改变。通常也是在其他命令按钮被按下时的相应Click事件处理程序中,根据复选框的被选状态,进行不同的处理。所以,复选框通常也是为其他命令的Click事件处理程序提供选择条件,【例4.8】:利用单选按钮和复选框控件字

29、体的属性。 设计步骤: 1、建立用户界面并设置相应的属性: 在窗体上添加一个标签控件Label1,Caption属性设置为:Visual Basic程序设计。绘制两个框架Frame1、Frame2和四个复选框Check1、Check2、Check3、Check4。在框架Frame1中,添加一组单选按钮Option1 、Option2 、Option3、 Option4。在框架Frame2 中,添加另一组单选按钮,Option5 、Option6、 Option7 、Option8。并设置上述控件相应的Caption属性,47,设置好的界面如图4.7:,48,2.编写事件代码: 是否加删除线的复

30、选框Check1的Click事件代码: Private Sub Check1_Click() If Check1.Value = 1 Then Label1.FontStrikethru = True Else Label1.FontStrikethru = False End If End Sub 是否加下划线的复选框Check2的Click事件代码: Private Sub Check2_Click() If Check2.Value = 1 Then Label1.FontUnderline = True Else Label1.FontUnderline = False End If

31、End Sub,49,是否为粗体的复选框Check3的Click事件代码: Private Sub Check3_Click() If Check3.Value = 1 Then Label1.FontBold = True Else Label1.FontBold = False End If End Sub 是否为斜体的复选框Check4的Click事件代码: Private Sub Check4_Click() If Check4.Value = 1 Then 是否为斜体 Label1.FontItalic = True Else Label1.FontItalic = False En

32、d If End Sub,50,将字体改为宋体的单选按钮Option1的Click事件代码如下: Private Sub Option1_Click() Label1.FontName = “宋体“ End Sub 将字体改为隶书的单选按钮Option2的Click事件代码如下: Private Sub Option2_Click() Label1.FontName = “隶书“ End Sub 将字体改为黑体的单选按钮Option3的Click事件代码如下: Private Sub Option3_Click() Label1.FontName = “黑体“ End Sub 将字体改为楷体的

33、单选按钮Option4的Click事件代码如下: Private Sub Option4_Click() Label1.FontName = “楷体_Gb2312“ End Sub,51,将字号改为12号字的单选按钮Option5的Click事件代码如下: Private Sub Option5_Click() Label1.FontSize = 12 End Sub 将字号改为16号字的单选按钮Option6的Click事件代码如下: Private Sub Option6_Click() Label1.FontSize = 16 End Sub 将字号改为20号字的单选按钮Option7的

34、Click事件代码如下: Private Sub Option7_Click() Label1.FontSize = 20 End Sub 将字号改为24号字的单选按钮Option8的Click事件代码如下: Private Sub Option8_Click() Label1.FontSize = 24 End Sub,52,3、程序运行的效果如图4.8:,53,4.6 计时器控件,计时器控件(Timer)能按照指定的时间间隔周期性地触发计时器(Timer)事件,并执行事件处理代码。它的缺省名称为Timer1、Timer2、。 计时器控件在设计时的图标是,但在运行时隐藏,它没有Visible

35、属性。它的大小不可改变,也没有Width和Height属性。虽然它有Left和Top属性,但是由于它运行时不可见,所以这两个属性并不重要。在计时器控件中,比较重要的属性是Interval和Enabled,54,1Interval属性 Interval属性返回或设置计时器控件的Timer事件响应所需间隔的毫秒数。 Interval属性的取值范围为165535。当Interval属性值为0时(缺省值),计时器不起作用;当Interval属性为1000时,时间间隔是1秒。 2Enabled属性 Enabled属性决定计时器控件是否有效。当Enabled属性值为True(缺省值)时,激活计时器开始计时

36、;当Enabled属性值为False时,计时器处于休眠状态、不计时。 计时器控件只有一个事件Timer,当达到Interval属性所规定的时间间隔时,Timer事件被触发、执行事件处理代码。,55,【例49】利用计时器控件制作一个电子时钟,并实现整点报时。 分析:在窗体上添加一个计时器控件和一个标签控件,将计时器控件的Interval属性设为1000,即每隔1秒钟刷新1次标签的Caption属性,实现电子时钟的功能。同时检测系统时间是否为整点,如是整点,则发出提示声音和整点报时信息。为使提示信息停留时间稍长一些,把小于5秒以内,都认可为整点。 要得到系统时间的分钟和秒,可以用Minute和Se

37、cond函数。 要使计算机发出提示信息,可以内部过程Beep。,56,设计步骤如下: 1、建立用户界面与设置对象属性。如图4.9:,57,2、编写事件代码: 为使程序在开始运行时就上出现系统时间,应在窗体Form的Load事件内编写如下代码: Private Sub Form_Load() Label1.Caption = Time 刷新时间 End Sub 在计时器Timer1的Timer的事件代码如下: Private Sub Timer1_Timer() Label1.Caption = Time If Minute(Time) = 0 And Second(Time) = 0 Then Beep 整点时发出提示声音 If Minute(Time) = 0 And Second(Time) 5 Then Label1.Caption = “现在是“ & Hour(Time) & “点整“ 提示信息停留5秒 End If End Sub,58,3、程序运行效果如图4.10:,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1