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

上传人:夺命阿水 文档编号:740528 上传时间:2023-11-03 格式:PPT 页数:58 大小:424.50KB
返回 下载 相关 举报
第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 Else 语 句

2、;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,说明:1、关系运算的两个操作

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

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

5、算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种逻辑运算的全部可能值,称为“真值表”。表 43 逻辑运算真值表,9,逻辑表达式用逻辑运

6、算符连接起来的表达式称为逻辑表达式,逻辑表达式也称为布尔表达式。例如:一元二次方程有实根的条件: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 Not 8 0 And(9-8)/2 0的值首先进行函数运算:sqr(4)值,结果为2其次算术运算:(9-8)/2=0.5第三进行关系运算:22

7、结果为False80 结果为True0.50结果为False最后进行逻辑运算:False or not True and False按照逻辑运算符的优先级,先计算Not 运算,再计算and运算,最后计算or运算,结果为 False,11,4.2 条件语句,条件语句是形成选择结构最基本的语句之一,其形式有三种:IfThen 语句IfThenElse 语句 IIF函数,12,4.2.1 IfThen 语句,、格式:IfThen 语句属于单分支结构语句,书写格式有两种:单行结构和块结构。“单行结构”格式:If 条件表达式 Then 语句组“块结构”格式:If 条件表达式 Then 语句组 End I

8、f其中:条件表达式:一般为关系表达式和逻辑表达式。也可为算术表达式,表达式值为非0时,按True进行判断,表达式值为0时,按False进行判断语句组:在行结构中,一般为一条语句,如果是多条语句,必须用“:”分开,且在一行上书写。注意:在“块结构”格式中,If和End If必须成对出现。,13,、语句功能:当条件表达式的值为True时,执行Then后面的语句,否则执行该语句的下一条语句。其流程图为4.1:,14,例如:If x0 Then x=x+1或:If x0 Then X=x+1End If 表示如果x0,则将x的值增加1,否则执行该语句的下一条语句。例如:已知两个数x和y,比较它们的大小

9、,使得x大于y。语句为:If xy Then t=x:x=y:y=t(注意:多条语句必须用“:”分开,且必须书写在一行上)或:If xy Then t=xx=yy=tEnd Ift是中间变量,交换两个变量的值,必须借助于中间变量。,15,4.2.2 IfThenElse 语句,格式:IfThenElse 语句属于双分支结构语句,书写格式也有两种:单行结构和块结构。单行结构:If 条件 Then 语句组1 Else 语句组2 块结构:If 条件 Then 语句组1 Else 语句组2 End If 其中:Else 语句组2 加,表示可选部分。如果 Else 语句组2 部分存在,形成双向分支。如果

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

11、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函数是一种条件函数,可以代替IF语句。格式:IIf(条件,True-部分,False-部分)功能:根据条件判断,选择True-部分或False-部分的值:当条件为True时,计算并返回True-部分的值;当条件为False时,计算并返回False-部分的值。说明:条件一般为关系表达式和逻辑表达式。也可为算

12、术表达式,表达式值为非0时,按True进行判断,表达式值为0时,按False进行判断 IIf 函数的引用将产生一个返回值,其值与True-部分和False-部分的类型一致。True-部分和False-部分为表达式、变量或函数。,20,例如,求x,y中大的数,赋值给Max变量,语句如下:Max=Iif(xy,x,y)判断一个整数是奇数还是偶数,语句如下:Print Iif(x mod 2=0,”偶数”,”奇数”),21,4.3 多分支语句,双分支结构只能根据条件的True和False决定处理两个分支中的其中一个。当实际处理的问题有多种条件(超过两种)时,就要用到多分支语句。多分支语句有两种:If

13、ThenElseIf 语句 和 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)说明 语句块1到语句块n+1中只有一个被执行,无论哪个被执行后,流程都会到End If后下一条语句去。ElseIF不能写成Else If。当多分支中有多个条件同时满足,则只执行第一个与之匹配的语句块。因此,要注意对多分支的条件的书写次序,防止某些值被过滤。If 和 End If 必须成对出现。,(3)功能依次

14、测试条件1到条件n,当条件i成立时(i为1到n之间的整数),执行语句块i,然后执行End If后面的下一条语句;如果所有的条件都不成立,并且 Else 语句块n+1 存在,则执行语句块n+1,24,其流程见图:,25,【例4.4】输入某位学生的百分制成绩,要求输出成绩的等级:假设90分以上为A等,80-89分为B等,70-79分为C等,60-69为D等,60分以下为E等。Private Sub Form_Click()Dim Score As IntegerScore=InputBox(请输入学生的百分制分数)If Score=90 Then MsgBox 学生的成绩为A等 ElseIf Sc

15、ore=80 Then MsgBox 学生的成绩为B等 ElseIf Score=70 Then MsgBox 学生的成绩为C等 ElseIf Score=60 Then MsgBox 学生的成绩为D等 Else MsgBox 学生的成绩为E等End IfEnd Sub,26,4.3.2 Select Case语句,Select Case语句(又称为情况语句)。Select Case语句是根据一个表达式的值,判断它的所属范围,选择执行不同的语句块,是多分支选择的另一种语句实现方法。可以取代IfThenElseIf 语句。(1)格式 Select Case 测试表达式 Case 表达式列表1 语

16、句块1 Case 表达式列表2 语句块2 Case 表达式列表n 语句块n Case Else 语句块n+1 End Select,27,(2)功能 根据测试表达式的值,依次与表达式列表1到表达式列表n所描述的“域值”范围进行比较,如果与表达式列表i的“域值”范围相匹配,则选择执行语句块i(i为1到n之间的整数),然后到End Case后下一条语句去。如果与所有表达式列表的“域值”范围都不匹配,并且 Else 语句块n+1 存在,则执行语句块n+1,然后到End Case后下一条语句去。,28,其流程见图:,29,(3)说明 表达式列表i是由逗号分隔开的下列3种成分组成:表达式;表达式1 To

17、 表达式2;Is关系表达式 表达式列表1到表达式列表n的值与测试表达式的值的类型必须相同。如果测试表达式的值与多个表达式列表i中的“域值”范围相匹配,则选择执行相匹配的 第一个Case表达式列表i后面的语句块 语句块1到语句块n+1中只有一个被执行,无论哪个被执行后,流程都会到End Case后下一条语句去。Select Case和End Case必须成对出现。,30,【例】某商店进行购物打折优惠活动促销,根据每位顾客一次性购物的消费额给予不同的折扣,具体方法如下:购物1500元以上的九五折优惠,购物2000元以上的九折优惠,(3)购物2500元以上的八五折优惠,(4)购物4000元以上的八折

18、优惠。,程序代码如下:Private Sub Command1_Click()Dim x As Single,y As Single x=InputBox(请输入购物金额:)Select Case x Case Is 1000 Print 不优惠,31,y=x Case Is=5000 Print 八折优惠 y=0.8*xEnd Select Print 优惠后应收款额为:;y End Sub,32,也可以用IfThenElseIf 语句实现:Private Sub Form_Click()Dim x As Single,y As Single x=InputBox(请输入购物金额:)If x

19、 0 Then Print 输入的的金额有误 ElseIf x 1500 Then Print 不优惠 y=x ElseIf x 2000 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 选

20、择结构的嵌套,将一个选择结构放在另一个选择结构内,称为选择结构的嵌套。If语句的多分支格式实际上是一种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=0End ifEnd if此例中的If语句的Else子句中又出现If语句,形成了嵌套。注意:在选择结构的嵌套中,应注意Else与If的配对关系。【例4.7】

21、:某航空公司规定:在旅游旺季7-9月,如果订票超过20(含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事件代码为:Privat

22、e Sub Command1_Click()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=4,

23、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 Sub3、运行效果:(图见4.6),39,IIF函数也可以进行嵌套。如上述:若x大于0,则y等于1;若x小于0,则y等于-1;否则,y 等于0,可以用:y=IIF(x0,1,IIF(x0,-1,0)实现。,40,4.5、选择性控件,我们

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

25、件,首先绘制Frame,然后在内部绘制各OptionButton控件。下面介绍OptionButton控件的属性及事件:,42,OptionButton控件的属性Value属性表示单选按钮的被选状态。True:被选中,也称为打开状态,图示为。False:未被选中,也称为关闭状态,图示为,默认值。、Alignment属性表示控件与其标题的对齐方式。0:单选按钮在左,标题在右,默认值。1:单选按钮在右,标题在左。、Caption属性 设置单选按钮的文本注释内容,即单选按钮边上的的文本标题。、Style属性:指定单选按钮的显示风格,用于改善视觉效果。0Standard:标准方式 1Granpical

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

27、变暗),表示禁止用户选择。、Alignment属性表示控件与其标题的对齐方式。0:复选框在左,标题在右,默认值。1:复选框在右,标题在左、复选框控件事件:复选框控件可接受Click事件,但通常也不需要对复选框的Click事件编写处理程序,因为单击复选框时,也已将其状态改变。通常也是在其他命令按钮被按下时的相应Click事件处理程序中,根据复选框的被选状态,进行不同的处理。所以,复选框通常也是为其他命令的Click事件处理程序提供选择条件,【例4.8】:利用单选按钮和复选框控件字体的属性。设计步骤:1、建立用户界面并设置相应的属性:在窗体上添加一个标签控件Label1,Caption属性设置为:

28、Visual Basic程序设计。绘制两个框架Frame1、Frame2和四个复选框Check1、Check2、Check3、Check4。在框架Frame1中,添加一组单选按钮Option1、Option2、Option3、Option4。在框架Frame2 中,添加另一组单选按钮,Option5、Option6、Option7、Option8。并设置上述控件相应的Caption属性,47,设置好的界面如图4.7:,48,2.编写事件代码:是否加删除线的复选框Check1的Click事件代码:Private Sub Check1_Click()If Check1.Value=1 Then L

29、abel1.FontStrikethru=True Else Label1.FontStrikethru=False End IfEnd Sub是否加下划线的复选框Check2的Click事件代码:Private Sub Check2_Click()If Check2.Value=1 Then Label1.FontUnderline=True Else Label1.FontUnderline=False End IfEnd Sub,49,是否为粗体的复选框Check3的Click事件代码:Private Sub Check3_Click()If Check3.Value=1 Then La

30、bel1.FontBold=True Else Label1.FontBold=False End IfEnd Sub是否为斜体的复选框Check4的Click事件代码:Private Sub Check4_Click()If Check4.Value=1 Then 是否为斜体 Label1.FontItalic=True Else Label1.FontItalic=False End IfEnd Sub,50,将字体改为宋体的单选按钮Option1的Click事件代码如下:Private Sub Option1_Click()Label1.FontName=宋体End Sub将字体改为隶书

31、的单选按钮Option2的Click事件代码如下:Private Sub Option2_Click()Label1.FontName=隶书End Sub将字体改为黑体的单选按钮Option3的Click事件代码如下:Private Sub Option3_Click()Label1.FontName=黑体End Sub将字体改为楷体的单选按钮Option4的Click事件代码如下:Private Sub Option4_Click()Label1.FontName=楷体_Gb2312End Sub,51,将字号改为12号字的单选按钮Option5的Click事件代码如下:Private Su

32、b Option5_Click()Label1.FontSize=12End Sub将字号改为16号字的单选按钮Option6的Click事件代码如下:Private Sub Option6_Click()Label1.FontSize=16End Sub将字号改为20号字的单选按钮Option7的Click事件代码如下:Private Sub Option7_Click()Label1.FontSize=20End Sub将字号改为24号字的单选按钮Option8的Click事件代码如下:Private Sub Option8_Click()Label1.FontSize=24End Sub

33、,52,3、程序运行的效果如图4.8:,53,4.6 计时器控件,计时器控件(Timer)能按照指定的时间间隔周期性地触发计时器(Timer)事件,并执行事件处理代码。它的缺省名称为Timer1、Timer2、。计时器控件在设计时的图标是,但在运行时隐藏,它没有Visible属性。它的大小不可改变,也没有Width和Height属性。虽然它有Left和Top属性,但是由于它运行时不可见,所以这两个属性并不重要。在计时器控件中,比较重要的属性是Interval和Enabled,54,1Interval属性 Interval属性返回或设置计时器控件的Timer事件响应所需间隔的毫秒数。Interv

34、al属性的取值范围为165535。当Interval属性值为0时(缺省值),计时器不起作用;当Interval属性为1000时,时间间隔是1秒。2Enabled属性 Enabled属性决定计时器控件是否有效。当Enabled属性值为True(缺省值)时,激活计时器开始计时;当Enabled属性值为False时,计时器处于休眠状态、不计时。计时器控件只有一个事件Timer,当达到Interval属性所规定的时间间隔时,Timer事件被触发、执行事件处理代码。,55,【例49】利用计时器控件制作一个电子时钟,并实现整点报时。分析:在窗体上添加一个计时器控件和一个标签控件,将计时器控件的Interv

35、al属性设为1000,即每隔1秒钟刷新1次标签的Caption属性,实现电子时钟的功能。同时检测系统时间是否为整点,如是整点,则发出提示声音和整点报时信息。为使提示信息停留时间稍长一些,把小于5秒以内,都认可为整点。要得到系统时间的分钟和秒,可以用Minute和Second函数。要使计算机发出提示信息,可以内部过程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 IfEnd Sub,58,3、程序运行效果如图4.10:,

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

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号