Visual Basic(第四章).doc_第1页
Visual Basic(第四章).doc_第2页
Visual Basic(第四章).doc_第3页
Visual Basic(第四章).doc_第4页
Visual Basic(第四章).doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

第4章 选择结构选择结构是结构化程序设计的3种基本结构之一。在现实生活中,根据给定的条件进行判断,而决定如何做某一件事情的情况很多。例如:根据行李重量,计算运费。根据三角形的边,计算其面积,也需要判断给定的3条边是否可以构成一个三角形。4.1 条件表达式在条件语句中作为判断依据的表达式称为“条件表达式”。条件表达式的取值为逻辑值:真(True)或假(False)。VB的条件表达式可以分为:关系表达式与逻辑表达式。4.1.1 关系运算符与关系表达式一、关系表达式格式: 关系运算符 说明:1表达式1、2为数值型或字符型表达式(包括常量、变量、函数和表达式)。两个表达式的类型必须一致。2关系运算的结果为True(-1)和False(0)。3关系运算的级别低于算术运算。二、关系运算符Visual Basic提供的关系运算符有:=、=、= 25Sin(x+y) “My computer” (False)“郑州” “北京” (True)注意:1字符型数据按其ASCII码值从左到右逐个比较,直到可以区分大小,或一直比较到最后一个字符。2数学不等式:a x b,在Visual Basic中不能写成a = x = b。4.1.2 逻辑运算符与逻辑表达式一、逻辑表达式格式: 逻辑运算符 说明:1表达式1、2为关系表达式或逻辑表达式(包括常量、变量、函数和表达式)。2逻辑运算的结果为True(-1)和False(0)。3逻辑运算的级别低于关系运算。二、逻辑运算符Visual Basic提供的逻辑运算符有6种:And、Or、Not、Xor、Eqv和Imp,常用的是And、Or、Not。优先级(从高到底):NotAndOr运算规则如教材P.68表4-3。VB中图同类型运算的优先级别:优先级(从高到底):算术运算字符运算关系运算逻辑运算例如:设 A=2,B=3,C=4,求:A+B C And A2 Or A-B (True)(教材P.68表4-4 运算符的优先顺序)例如:判断给定的3条线段a、b、c能否构成一个三角形:a+b c And a+cb And b+ca例如:判断某年是否为闰年,是闰年的条件:(1)年份能被4整除,但不能被100整除。(2)年份能被400整除。注意:以上两个条件是“获”的关系。则,判断闰年的逻辑表达式:y Mod 4 = 0 And y Mod 100 0 Or y Mod 400 = 04.2 单条件选择语句IF单条件选择结构根据一个条件,产生两关分支a1和a2。如下图所示:判断条件真a1块假a2块 单条件选择结构的流程图实现单条件选择结构的语句有:行If语句和块If语句2种。4.2.1 单行结构条件语句IFTHENELSE格式:If 条件 Then a1块 Else a2块说明:(1)条件:一般是关系表达式或逻辑表达式。(2)如果使用数值表达式作为条件,则非0为真,0为假。(3)如果没有Else子句,a1块为必要参数。【例4.1】根据行李重量计算运费。规定行李重量:(1)20千克及以下免费。(2)超过20千克部分,以1.50元/千克计费。分析:设行李重量为P,运费为F,则有: 0 P20F= 1.50(P-20)P20画出流程图:输入P (行李重量)P20?真F=0假F=1.50(P-20)输出F (运费)设计应用程序界面:(1)2个文本框,分别用来输入行李重量和输出运费。(2)2个标签,用来说明文本框。(3)2个按钮,分别用来计算运费和退出程序。编写代码:Private Sub Command1_Click() Dim p As Single, f As Single P = Text1.Text If p = 450)T2 (s1 = 88 And s2 = 88 And s3 = 88 And s4 = 88 And s5 = 88)T2 (s1 = 95 And s2 = 95 And s3 = 95 And s4 = 80 And s5 = 80)如果T1 Or T2 Or T3真输出:可以获奖假输出:不能获奖 判断能否获奖的流程图分析:依题意列出3个条件表达式(略)画出流程图:设计应用程序界面编写程序代码:Private Sub Command1_Click() Dim s1 As Single, s2 As Single, s3 As Single, s4 As Single, s5 As Single Dim p As String 分别输入5门课的成绩 t1 = (s1 + s2 + s3 + s4 + s5 = 450) t2 = (s1 = 88 And s2 = 88 And s3 = 88 And s4 = 88 And s5 = 88) t3 = (s1 = 95 And s2 = 95 And s3 = 95 And s4 = 80 And s5 = 80) If t1 Or t2 Or t3 Then p = 可以获奖! Else p = 不能获奖! Label1.Caption = 该生 & pEnd Sub【例4.3】教材P.72【例4.4】(重点讲述条件的建立、判断)【例4.4】输入x,计算y的值,其中:程序代码:Private Sub Command1_Click() Dim x As Single, y As Single x = Text1.Text If x = 0 Then y = 1 + x Else y = 1- 2 * x Text2.Text = yEnd Sub4.2.2 块结构条件语句IFTHENELSEEND IF格式:If 条件 Then a1块 Else a2块End If说明:(略)【例4.4】根据输入的3边a、b、c,求三角形的面积。分析:求三角形的面积公式为:其中:s = (a + b + c) / 2 。流程图:输入a、b、ca、b、c能构成三角形?能s = (a + b + c) / 2d = Sqr(s * (s - a) * (s - b) * (s - c)输出三角形的面积不能输出错误信息“”Private Sub Command1_Click() Dim a As Single, b As Single, c As Single Dim s As Single, d As Single a = Text1.Text b = Text2.Text c = Text3.Text If a + b c And a + c b And b + c a Then s = (a + b + c) / 2 d = Sqr(s * (s - a) * (s - b) * (s - c) Text4.Text = d Else Text4.Text = 不能构成三角形 End IfEnd Sub(演示把If等语句注释后,运行将发生错误)【例4.5】教材P.73【例4.5】(重点讲述算法)【例4.5】输入3个不同的数,将它们从大到小排序(图4-7)。分析:(比较的方法)(略)流程图:输入a,b,c如果b a真交换a,b如果c a真交换a,c如果c b真交换b,c输出a,b,c 对3个数从大到小排序的流程图编写程序代码:Private Sub Command1_Click() Dim a As Single, b As Single, c As Single a = Val(Text1.Text) b = Val(Text2.Text) c = Val(Text3.Text) If b a Then d = a: a = b: b = d End If If c a Then d = a: a = c: c = d End If If c b Then d = b: b = c: c = d End If Label1.Caption = a Label2.Caption = b Label3.Caption = cEnd Sub4.2.3 IF语句的嵌套一、IF语句的嵌套如果在If语句中操作块a1块(语句列1)或a2块(语句列2)本身又是一个If语句,则称为If语句的嵌套。(画出示意图)【例4.6】计算分段函数 -1 X0编写程序代码Private Sub Command1_Click() Dim x As Single, y As Single x = Val(Text1.Text) If x 0 Then y= -1 Else If x = 0 Then y=0 Else y = 1End If End If Text2.Text = str(y)End Sub【例4.7】教材P.76【例4.8】(重点讲述算法)【例4.8】某百货公司为了促销,采用购物打折扣的优惠办法,每位顾客一次购物:(1)在1 000元以上者,按九五折优惠。(2)在2 000元以上者,按九折优惠。(3)在3 000元以上者,按八五折优惠。(4)在5 000元以上者,按八折优惠。分析:设购物款数为x元,优惠价为y元,优惠付款公式为:画出流程图(略)建立应用程序用户界面与设置对象属性(略)编写程序代码Private Sub Command1_Click() Dim x As Single, y As Single x = Text1.Text If x 1000 Then y = x Else If x 2000 Then y = 0.95 * x Else If x 3000 Then y = 0.9 * x Else If x 5000 Then y = 0.85 * x Else y = 0.08 * x End If End If End If End If Text2.Text = yEnd Sub二、IF语句的嵌套格式ELSEIF语句格式:If 条件1 Then 语句列1ElseIf 条件2 Then 语句列2 .Else 其他语句列End If说明:(讲解)【例4.8】计算分段函数 -1 X0编写程序代码Private Sub Command1_Click() Dim x As Single, y As Single x = Val(Text1.Text) If x 0 Then y= -1 ElseIf x = 0 Then y=0 Else y = 1 End If Text2.Text = str(y)End Sub【例4.9】教材P.79【例4.9】(重点讲述算法)【例4.9】在例4.8中使用带ElseIf的块If语句来计算出优惠价,只需将其中命令按钮Command1的单击(Click)事件代码改为:Private Sub Command1_Click() Dim x As Single, y As Single x = Text1.Text If x 1000 Then y = x ElseIf x 2000 Then y = 0.95 * x ElseIf x 3000 Then y = 0.9 * x ElseIf x 5000 Then y = 0.85 * x Else y = 0.08 * x End If Text2.Text = yEnd Sub4.2.4 使用IIF函数语法结构:IIf(条件表达式,真部分,假部分)说明:(讲解)例如,在【例4.1】中(根据行李重量计算运费)代码: If p = 20 Then f=0 Else f=1.5*(p-20)可改为:f = IIf(p=20, 0, 1.5*(p-20)4.3 多分支条件选择语句SELECT CASE4.3.1 SELECT CASE结构语法:Select Case 测试条件 Case 表达式表1 语句列1 Case 表达式表2 语句列2 . Case Else 其他语句列End Select说明: 表达式表:一个或多个表达式的列表,其形式为: (a)表达式 (b)表达式To表达式 (c)Is 关系运算符 表达式(其他讲解)4.3.2 SELECT CASE结构的应用【例4.10】计算分段函数 -1 X0编写程序代码Private Sub Command1_Click() Dim x As Single, y As Single x = Text1.Text Select Case x Case Is 0 y = 1 End Select Text2.Text = yEnd Sub输入月份m,票数n情形m1 5,10,11如果 n 20真r 20假r 307 9如果 n 20真r 5假r 15其他r 10输出r 输出优惠价计算优惠价的流程图【例4.13】某航空公司规定在旅游的旺季79月份,如果订票数超过20张,票价优惠15%;20张以下,优惠5%。在旅游的淡季15月份、10月份、11月份,如果订票数超过20张,票价优惠30%;20张以下,优惠20%。其他情况一律优惠10%。Private Sub Command1_Click() Dim m As Integer, n As Integer, r As Integer m = Text1.Text n = Text2.Text Select Case m Case Is = 5, 10, 11 If n 20 Then r = 20 Else r = 30 Case 7 To 9 If n 20 Then r = 5 Else r = 15 Case Else r = 10 End Select Label4.Caption = 所订机票的优惠率为: & Str(r) & %End Sub4.4 提供简单选择的控件4.4.1 选项按钮选项按钮(OptionButton)又称单选按钮,是一组相互排斥的按钮,选择一个按钮就会立即清除该组中的其他按钮。通常,可以利用框架(Frame)控件来组织一个选项组。除了框架(Frame),还可以利用图片框(PictureBox)或者窗体(Form)这样的容器控件为选项按钮分组。一、使用选项按钮组选项按钮(OptionButton)的主要属性:Value属性:True该按钮选中;False该按钮未选中。【例4.13】计算分段函数 -1 X0界面如下:代码如下:Private Sub Option1_Click() Text2.Text = -1End SubPrivate Sub Option2_Click() Text2.Text = 0End SubPrivate Sub Option3_Click() Text2.Text = 1End Sub由于在Y的赋值表达式中没有出现X,故改为以下分段函数: -X3 X0代码改为:Private Sub Option1_Click() Dim x As Single x = Text1.Text Text2.Text = -x 3End Sub问题与改进:1如果用户选择错误,应该提示。2每次计算后,使x文本框获得焦点,并选定其中的文本。3输入新的x时(文本框的Change事件),应自动清除y值,并使所有选项按钮处于未选中状态。改进后的代码:Private Sub Option1_Click() Dim x As Single x = Text1.Text If x 0 Then Text2.Text = -x 3 Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) Text1.SetFocus Else MsgBox 你的选择与X值不符, vbOKOnly + vbCritical, 注意 End IfEnd SubPrivate Sub Text1_Change() Option1.Value = False Option2.Value = False Option3.Value = False Text2.Text = End Sub【例4.14】教材【例4.13】中第二种方法:Private Sub Option1_Click() x = (1 + 5 * 0.0288) * Text1.Text Text2.Text = Format(x, #0.0#) Text1.SetFocusEnd SubPrivate Sub Option2_Click() x = (1 + 3 * 0.027) * (1 + 2 * 0.0243) * Text1.Text Text2.Text = Format(x, #0.0#) Text1.SetFocusEnd SubPrivate Sub Option3_Click() x = (1 + 3 * 0.027) * (1 + 0.0225) 2 * Text1.Text Text2.Text = Format(x, #0.0#) Text1.SetFocusEnd SubPrivate Sub Option4_Click() x = (1 + 2 * 0.0243) 2 * (1 + 0.0225) * Text1.Text Text2.Text = Format(x, #0.0#) Text1.SetFocusEnd SubPrivate Sub Option5_Click() x = (1 + 2 * 0.0243) * (1 + 0.0225) 3 * Text1.Text Text2.Text = Format(x, #0.0#) Text1.SetFocusEnd SubPrivate Sub Option6_Click() x = (1 + 0.0225) 5 * Text1.Text Text2.Text = Format(x, #0.0#) Text1.SetFocusEnd Sub二、使用图形选项按钮可以使用Style属性将

温馨提示

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

评论

0/150

提交评论