资源预览内容
第1页 / 共58页
第2页 / 共58页
第3页 / 共58页
第4页 / 共58页
第5页 / 共58页
第6页 / 共58页
第7页 / 共58页
第8页 / 共58页
第9页 / 共58页
第10页 / 共58页
亲,该文档总共58页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
在日常生活和工作中,经常要根据不同的情况,选择不同的处理方法。同样,在程序设计过程中,也常常要根据不同的条件,采用不同的操作。例如:要判断一元二次方程ax2+bx+c=0有无实根,应根据一元二次方程满足实根的条件,如果a0 且a2-4ac0,则方程有实根,否则没有实根。选择结构的特点是:根据给定的条件,如果条件为真,则执行某条语句,否则执行另外的语句或不做任何操作。Visual Basic 提供了多种不同形式的条件语句和相应的选择性控件。1本章主要内容:1. 条件表达式:关系表达式和逻辑表达式2. 条件语句:If Then 语句;If Then Else 语 句;Iif 函数3. 多分支语句 If Then Else 语句和Select Case 语句4. 选择结构的嵌套5. 选择性控件:单选按钮和复选框6.计时器控件 2在选择结构程序设计语句中,作为选择判断依据的表达式称为“条件表达式”。条件表达式的结果只能是“TRUE” 或“FALSE”。它可以分为两类:关系表达式和逻辑表达式。4.1 条件表达式34.1.1 关系运算符与关系表达式(1) 关系运算符 关系运算符也称为比较运算符,用来比较两个操作数的大小。其运算结果是一个逻辑值,即真(True)或假(False)。Visual Basic提供的关系运算符见表4-14说明:1、关系运算的两个操作数一般是相同或相容类型的,常对两个数值、两个字符串、两个日期型数据进行比较。、如果两个操作数是数值型,则按其大小比较。例如: 8=9 结果为False 87 结果为False8=8 结果为True13、如果两个操作数是字符型,则按字符的ASCII码值从左到右逐一比较、即首先比较两个字符串的第1个字符,其ASCII码值大的字符串大,如第1个字符相同,则比较第2个字符,以此类推,最先出现不一样的字符的关系决定字符串的关系,如所有字符相同,则两个字符串相等。例如:“ABCD”ABDC” 结果为False abcd abc 结果为True汉字字符的ASCII码值大于西文字符。 例如: ” “”0” 结果为False”a”我们” 结果为False5 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” 先计算Mid(“Visual Basic 程序设计”,8,5),结果为”Basic”,再计算”Basic” ”basic”结果为True 5=5=5 先计算5=5,结果为True,再计算True=5,结果是False6 4.1.2 逻辑运算符与逻辑表达式(1)逻辑运算符逻辑运算符一般用于对两个逻辑型数据进行运算,其结果仍为逻辑型数据(True或False)。逻辑运算符除Not是单目运算符外,其余都是双目运算符。Visual Basic提供的逻辑运算符见表4-25。(按运算优先级从高到低排列) 7表43列出了6种逻辑运算的全部可能值,称为“真值表”。表 43 逻辑运算真值表ABNot A非And与Or或Xor异或Eqv相等Imp蕴含TTFTTFTTTFFFTTFFFTTFTTFTFFTFFFTT 8 逻辑表达式用逻辑运算符连接起来的表达式称为逻辑表达式,逻辑表达式也称为布尔表达式。 例如: 一元二次方程有实根的条件:a0 且a2-4ac0 写成逻辑表达式为: a0 and a2-4*a*c=0 数学上判断x是否在区间a, b时,习惯上写成axb ,但在VB中不能写成:a = x = b应写成VB逻辑表达式:a = x And x 2 Or Not 8 0 And ( 9 - 8) / 2 0的值首先进行函数运算:sqr(4) 值,结果为2其次算术运算:(9-8)/2=0.5第三进行关系运算:22 结果为False80 结果为True0.50结果为False最后进行逻辑运算:False or not True and False按照逻辑运算符的优先级,先计算Not 运算,再计算and运算,最后计算or运算,结果为 False 104.2 条件语句条件语句是形成选择结构最基本的语句之一,其形式有三种:IfThen 语句IfThenElse 语句 IIF函数114.2.1 IfThen 语句、格式:IfThen 语句属于单分支结构语句,书写格式有两种:单行结构和块结构。 “单行结构”格式: If 条件表达式 Then 语句组 “块结构” 格式: If 条件表达式 Then 语句组 End If其中:条件表达式:一般为关系表达式和逻辑表达式。也可为算术表达式,表达式值为非0时,按True进行判断,表达式值为0时,按False进行判断语句组:在行结构中,一般为一条语句,如果是多条语句,必须用“:”分开,且在一行上书写。注意:注意:在“块结构” 格式中,If和End If必须成对出现。12、语句功能:当条件表达式的值为True时,执行Then后面的语句,否则执行该语句的下一条语句。其流程图为4.1:13例如:If x0 Then x=x+1或:If x0 Then X=x+1End If 表示如果x0,则将x的值增加1,否则执行该语句的下一条语句。例如:已知两个数x和y,比较它们的大小,使得x大于y。语句为: If xy Then t=x:x=y:y=t (注意: 多条语句必须用“:”分开,且必须书写在一行上) 或:If x Y Then Max = X Else Max = Y或: If X Y Then Max = X Else Max = Y 184.2.3 IIF函数 IIF函数是一种条件函数,可以代替IF语句。格式: IIf (条件,True-部分,False-部分)功能: 根据条件判断,选择True-部分或False-部分的值:当条件为True时,计算并返回True-部分的值;当条件为False时,计算并返回False-部分的值。说明: 条件一般为关系表达式和逻辑表达式。也可为算术表达式,表达式值为非0时,按True进行判断,表达式值为0时,按False进行判断 IIf 函数的引用将产生一个返回值,其值与True-部分和False-部分的类型一致。 True-部分和False-部分为表达式、变量或函数。19例如,求x,y中大的数,赋值给Max变量,语句如下: Max=Iif(xy,x,y) 判断一个整数是奇数还是偶数,语句如下: Print Iif(x mod 2=0,” 偶数”,”奇数”)204.3 多分支语句双分支结构只能根据条件的True和False决定处理两个分支中的其中一个。当实际处理的问题有多种条件(超过两种)时,就要用到多分支语句。多分支语句有两种:IfThenElseIf 语句 和 Select Case语句214.3.1 IfThenElseIf 语句(1)格式 IF 条件1 Then 语句块1 ElseIf 条件2 Then 语句块2 ElseIf 条件n Then 语句块n Else 语句块n+1 End If22(2)说明 语句块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+123其流程见图:24【例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 Score = 80 Then MsgBox 学生的成绩为B等 ElseIf Score = 70 Then MsgBox 学生的成绩为C等 ElseIf Score = 60 Then MsgBox 学生的成绩为D等 Else MsgBox 学生的成绩为E等End IfEnd Sub254.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 Select26 (2)功能 根据测试表达式的值,依次与表达式列表1到表达式列表n所描述的“域值”范围进行比较,如果与表达式列表i的“域值”范围相匹配,则选择执行语句块i(i为1到n之间的整数),然后到End Case后下一条语句去。 如果与所有表达式列表的“域值”范围都不匹配,并且 Else 语句块n+1 存在,则执行语句块n+1,然后到End Case后下一条语句去。27其流程见图:28(3)说明 表达式列表i是由逗号分隔开的下列3种成分组成: 表达式; 表达式1 To 表达式2; Is关系表达式 表达式列表1到表达式列表n的值与测试表达式的值的类型必须相同。 如果测试表达式的值与多个表达式列表i中的“域值”范围相匹配,则选择执行相匹配的 第一个Case表达式列表i后面的语句块 语句块1到语句块n+1中只有一个被执行,无论哪个被执行后,流程都会到End Case后下一条语句去。 Select Case和End Case必须成对出现。29【例】某商店进行购物打折优惠活动促销,根据每位顾客一次性购物的消费额给予不同的折扣,具体方法如下:(1)购物1500元以上的九五折优惠,(2)购物2000元以上的九折优惠,(3) 购物2500元以上的八五折优惠,(4) 购物4000元以上的八折优惠。 程序代码如下:Private Sub Command1_Click() Dim x As Single, y As Single x = InputBox(请输入购物金额:) Select Case x Case Is 1000 Print 不优惠 30 y = x Case Is 2000 Print 九五折优惠 y = 0.95 * x Case Is 3000 Print 九折优惠 y = 0.9 * x Case Is = 5000 Print 八折优惠 y = 0.8 * xEnd Select Print 优惠后应收款额为:; y End Sub31也可以用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 2000 Then Print 九五折优惠 y = 0.95 * x ElseIf x 2500 Then Print 九折优惠 y = 0.9 * x ElseIf x 0 Then y=1 Else If x0 Then y=-1 Else 34y=0End ifEnd if此例中的If语句的Else子句中又出现If语句,形成了嵌套。注意:在选择结构的嵌套中,应注意Else与If的配对关系。【例4.7】:某航空公司规定:在旅游旺季7-9月,如果订票超过20(含20)张,优惠票价的15%;订票20张以下优惠票价的5%。在旅游淡季1-4月、11月、12月,如果订票超过20(含20)张,优惠票价的30%;订票20张以下优惠票价的20%。其它情况一律优惠10%。编程计算优惠后的单价和总金额。 35设计步骤如下:1、设计界面:(如图4.5) 文本框Text1中输入月份文本框Text2中输入订票的数量文本框Text3中输入单价标签Label6中为优惠后的单价标签Label8中为优惠后的总金额362、编写事件代码:编写“计算优惠价和总金额”的命令按钮Command1的Click事件代码为:Private 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, 11, 12 1-4月份,11月份,12月份 If n 0,1,IIF(x0,-1,0) 实现。394.5、选择性控件 我们介绍两个选择性控件单选按钮和复选框。单选按钮必须成组出现,用户在一组单选按钮中必须而且最多只选择一项。而复选框可以根据用户的需要选定其中的一项或多项,或者都不选。404.5.1 单选按钮 单选按钮OptionButton控件,它的图形是,用来表示是否被选中。它的缺省名称为Option1、Option2。单选按钮必须成组出现,通常将两个或两个以上的单选控件放在一个Frame控件(框架)中,形成一个选项组在选项组中使用单选按钮,用户只能选择其中的一项,当其中的一项被选中(即图示为,也称为打开状态),其他选择按钮都被置于关闭状态(即图示为)。要在Frame控件中形成一组OptionButton控件,首先绘制Frame,然后在内部绘制各OptionButton控件。下面介绍OptionButton控件的属性及事件:41OptionButton控件的属性Value属性表示单选按钮的被选状态。True:被选中,也称为打开状态,图示为。False:未被选中,也称为关闭状态,图示为,默认值。、Alignment属性表示控件与其标题的对齐方式。0:单选按钮在左,标题在右,默认值。1:单选按钮在右,标题在左。、Caption属性 设置单选按钮的文本注释内容,即单选按钮边上的的文本标题。、Style属性:指定单选按钮的显示风格,用于改善视觉效果。 0Standard:标准方式 1Granpical:图形方式42、事件 单选按钮可接受Click事件,但通常不需要编写Click事件处理程序,因为单击单选按钮时,已将其状态改变,而是在其他命令按钮被按下时的相应Click事件处理程序中,根据单选按钮组的被选状态,进行不同的处理。所以,单选按钮组通常是为其他命令的Click事件处理程序提供选择条件。 434.5.2 复选框复选框控件CheckBox控件,它的图形是。复选框可以根据用户的需要选定其中的一项或多项,或者都不选。当某一项被选中后,其左边的小方框就变成 。44 、复选框控件的属性:、Value属性表示复选框的状态。0:未被选择,图示为,默认值。1:已被选择,图示为。2:图示变灰(变暗),表示禁止用户选择。、Alignment属性表示控件与其标题的对齐方式。0:复选框在左,标题在右,默认值。1:复选框在右,标题在左、复选框控件事件:复选框控件可接受Click事件,但通常也不需要对复选框的Click事件编写处理程序,因为单击复选框时,也已将其状态改变。通常也是在其他命令按钮被按下时的相应Click事件处理程序中,根据复选框的被选状态,进行不同的处理。所以,复选框通常也是为其他命令的Click事件处理程序提供选择条件45【例4.8】:利用单选按钮和复选框控件字体的属性。设计步骤:1、建立用户界面并设置相应的属性:在窗体上添加一个标签控件Label1,Caption属性设置为:Visual Basic程序设计。绘制两个框架Frame1、Frame2和四个复选框Check1、Check2、Check3、Check4。在框架Frame1中,添加一组单选按钮Option1 、Option2 、Option3、 Option4。在框架Frame2 中,添加另一组单选按钮,Option5 、Option6、 Option7 、Option8。并设置上述控件相应的Caption属性 设置好的界面如图4.7:472.编写事件代码:是否加删除线的复选框Check1的Click事件代码:Private Sub Check1_Click()If Check1.Value = 1 Then Label1.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 Sub48是否为粗体的复选框Check3的Click事件代码:Private Sub Check3_Click()If Check3.Value = 1 Then Label1.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 Sub49将字体改为宋体的单选按钮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将字体改为楷体的单选按钮Option4的Click事件代码如下:Private Sub Option4_Click()Label1.FontName = 楷体_Gb2312End Sub50将字号改为12号字的单选按钮Option5的Click事件代码如下:Private Sub 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 513、程序运行的效果如图4.8: 524.6 计时器控件 计时器控件(Timer)能按照指定的时间间隔周期性地触发计时器(Timer)事件,并执行事件处理代码。它的缺省名称为Timer1、Timer2、。 计时器控件在设计时的图标是,但在运行时隐藏,它没有Visible属性。它的大小不可改变,也没有Width和Height属性。虽然它有Left和Top属性,但是由于它运行时不可见,所以这两个属性并不重要。在计时器控件中,比较重要的属性是Interval和Enabled531Interval属性 Interval属性返回或设置计时器控件的Timer事件响应所需间隔的毫秒数。 Interval属性的取值范围为165535。当Interval属性值为0时(缺省值),计时器不起作用;当Interval属性为1000时,时间间隔是1秒。2Enabled属性 Enabled属性决定计时器控件是否有效。当Enabled属性值为True(缺省值)时,激活计时器开始计时;当Enabled属性值为False时,计时器处于休眠状态、不计时。计时器控件只有一个事件Timer,当达到Interval属性所规定的时间间隔时,Timer事件被触发、执行事件处理代码。 54 【例49】利用计时器控件制作一个电子时钟,并实现整点报时。分析:在窗体上添加一个计时器控件和一个标签控件,将计时器控件的Interval属性设为1000,即每隔1秒钟刷新1次标签的Caption属性,实现电子时钟的功能。同时检测系统时间是否为整点,如是整点,则发出提示声音和整点报时信息。为使提示信息停留时间稍长一些,把小于5秒以内,都认可为整点。要得到系统时间的分钟和秒,可以用Minute和Second函数。要使计算机发出提示信息,可以内部过程Beep。55设计步骤如下:1、建立用户界面与设置对象属性。如图4.9:56 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 57 3、程序运行效果如图4.10:58
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号