vb选择结构程序设计

上传人:hy****d 文档编号:243010191 上传时间:2024-09-13 格式:PPT 页数:37 大小:118.50KB
返回 下载 相关 举报
vb选择结构程序设计_第1页
第1页 / 共37页
vb选择结构程序设计_第2页
第2页 / 共37页
vb选择结构程序设计_第3页
第3页 / 共37页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第5章 选择结构程序设计,本章要点:,1块结构条件语句IfThenEnd If的使用,2多分支条件语句ElseIf的应用,3 多分支选择语句Select CaseEnd Selec的应用,选择结构是一种常用的基本结构,其特点是根据所给定的选择条件为真或假,来决定从不同操作中选择执行一种操作。,1,选择结构程序设计,5.1 块If条件语句,5.4 Select Case 语句,5.5 应用举例,返回,退出,5.2 块If语句的嵌套,5.3 ElseIf条件语句,2,5.1块If语句(If.Then语句),块,If,语句是用来判断条件成立与否,然后决定下一步怎么执行的一种控制语句,这种选择结构是最常用的双选择结构,即只有两种操作可以选择。如果条件为真,执行其中一个操作;如果条件为假,则执行另外一个操作。,块结构,if,语句语法格式如下:,If Then,Else,End If,3,说明:,为必选项,它可以是关系表达式、布尔表达式、数值表达式或字符串表达式,但总的说来它是一个逻辑值的表达式,其返回结果必须是,True,或,False,。对于数值表达式,,VB,将,0,作为,False,,非,0,作为,True,来处理;对于字符串表达式,,VB,只允许出现包含数字的字符串,当字符串中的数字值为,0,时,则认为是,False,,否则认为是,True,。,和,可以是一条语句,也可以是多条语句。,4,单行结构,If,语句的执行过程是这样的:首先计算,的值,如果结果为,True,,则执行,,否则,执行,。,T(真),F(假),条件满足?,语句块1,语句块2,End If之后的语句,选择结构流程图,5,【例,5.1,】设计界面如图,5-2,所示,用文本框,Text1,输入,x,的值,单击按钮时,在标签,Label1,中显示出,x,的绝对值。,运行界面,“求绝对值”按钮,Command1,的单击事件过程如下:,Private Sub Command1_Click(),x = Val(Text1.Text) ,将文本框中的字符内容转换成数值,If x 0 Then,Label1.Caption = x,Else,Label1.Caption = -x ,根据,x,的正负确定显示结果,End Sub,6,使用该语句时,应该注意以下问题:,(,1,)整个块结构必须以,If,开始,以,End If,结束。,(,2,)块结构,If,语句中,Then,后面的语句不能与其写在同一行上,否则,必须加上分隔符。,(,3,)块结构中的,是可以省略的。省略后即简化为以下形式:,If Then,End If,这种形式的,If,语句主要用来判断一些操作是否执行。当条件成立时,根据,完成的一定的操作;而当条件不成立时不做任何处理,直接执行下条语句。,7,例如,例5.1也可以采用下列程序段来实现。,x = Val(Text1.Text),If x 0 Then,x = -x ,取负数,x,的相反数,End If,Label1.Caption = x,(,4,)在块结构中,,If,后面显式的给出了判断条件,,Else,后面虽然没有显式的给出一个条件,但相当于存在一个与,If,部分相反的隐含条件。,返回,8,在实际应用中,经常会遇到“多分支”选择的程序,即从多种情况中选择执行其中一种情况,这时,就要使用块,if,语句的嵌套。,块结构,If,语句可以嵌套,即在上述结构中的,和,部分仍然可以包含另外一个块结构,If,语句。如果在条件成立或不成立的情况下要继续判断其他条件,则可以在语句块的位置上再使用另外一个块结构条件语句。,5.2,块if语句的嵌套,If子句部分的嵌套结构,Else子句部分的嵌套结构,9,使用嵌套语句时应注意以下问题:,(,1,)如果存在嵌套时,语句中的每一个,Else,必须和一个,If,相对应,应避免产生混乱。在书写时,可以将同一层的,If,子句和,Else,子句左对齐,内层的各语句块相对于外层向右缩进若干空格,以使程序结构更加清楚,便于阅读和查错。,(,2,)每一个块结构都必须以,If,开始,以,End If,结束。,(,3,)内层嵌套的块结构中除了满足该层规定的条件外,还必须首先满足外层结构中相应位置的条件。,(,4,),VB,中对块嵌套的层数没有限制,在嵌套的块结构中仍然可以继续嵌套其他的块结构,但嵌套时外层的块结构必须完全“包住”内层的块结构,不能相互“骑跨”。,(,5,)利用块,If,语句的嵌套可以解决“多分支”选择的问题。,10,【例,5.2,】建立如图,5-3,所示的界面,输入任一点的坐标(,X,,,Y,),判断该点位于哪个象限。,在平面直角坐标系中,点所在的象限有以下,4,种情况:,X0,,,Y0,点位于第一象限内,X0,,,Y0,点位于第四象限内,X0,点位于第二象限内,X0,,,Y 0 Then,If y 0 Then,Print ,该点位于第一象限,Else,Print ,该点位于第四象限,End If,Else,If y 0 Then,Print ,该点位于第二象限,Else,Print ,该点位于第三象限,End If,End If,End Sub,程序代码如下:,程序运行界面,12,【例,5.3,】编程序求一元二次方程,ax2+bx+c=0,的根(,a,不等于零)。,分析:根据数学知识,要求一元二次方程的根,必须知道方程的三个系数,a,、,b,、,c,的值,然后根据判别式,b2-4ac,的值的情况判断方程的根。方程的根有以下三种情况:,当,b2-4ac0,时,方程有两个不相等的实根;,当,b2-4ac=0,时,方程有两个相等的实根;,当,b2-4ac= 0 Then,If dert 0 Then,r = Sqr(dert) / (2 * a),x1 = p + r,x2 = p - r,Else,x1 = p,x2 = p,End If,Label5.Caption = x1= & x1 & str & x2= & x2,Else,r = Sqr(-dert) / (2 * a),Label5.Caption = x1= & p & + & r & i & str & x2= & p & - & r & i,End If,End Sub,返回,14,5.3 ElseIf,语句,ElseIf子句的格式:,If,条件,1 then,语句块,1,ElseIf,条件,2 then,语句块,2,Else,语句块,n+1,End If,15,对ElseIf子句的格式说明:,(,1,)可以放置任意多个,ElseIf,子句。,(,2,)关键字,ElseIf,中间没有空格,不能写成,Else If,。,ElseIf子句的功能:依次判断条件,如某一条件成立,则执行其下面的语句块;如果所有条件均不成立,则执行,Else,后面的语句。在相应语句块执行完后,会跳过,End If,,执行其后面的语句。,16,Else If,结构执行过程,17,功能说明:,(,1,)不管有几个,ElseIf,子句,程序执行完一个语句块后,其余,ElseIf,子句不再执行。,(,2,)当多个,ElseIf,子句中的条件都成立时,只执行第一个条件成立的子句中的语句块。因此,在使用,ElseIf,语句时,要特别注意各判断条件的前后次序。,【例,5.4,】输入一个学生的成绩,score,,根据其所在分数段给出他的考试等级。,score60,时,打印“不及格”;,60=score=70,时,打印“一般”;,70score=80,时,打印“中等”;,80score=90,时,打印“良好”;,90score100,时,打印“成绩有问题”。,18,该程序就是一个多分支选择的问题,可以使用,ElseIf,语句实现。程序代码如下:,Private Sub Command1_Click(),Dim score As Single,score = Val(Text1.Text),If score = 60 And score 70 And score 80 And score 90 And score = 100 Then,Print ,优秀,Else,Print ,成绩有问题,End If,End Sub,19,因为只有在前一个条件不成立的情况下,才有可能继续判断下一个条件是否成立,所以,上例中的条件部分也可以进一步简化,改成如下形式:,If score 60 Then,Print ,不及格,ElseIf score = 70 Then,Print ,一般,ElseIf score = 80 Then,Print ,中等,ElseIf score = 90 Then,Print ,良好,Elseif score = 100 Then,Print ,优秀,Else,Print ,成绩有问题,End If,20,【例,5.6,】设计一个口令检测程序,当用户输入的口令正确时,显示“你已成功进入本系统”,否则,显示“口令错!请重新输入”。如果连续三次输入了口令仍不正确,则提示“你无权使用本系统”。,分析:假设使用一个文本框,Text1,来接收口令,运行时用户输入完口令并按回车键后系统才对输入的口令进行检查,因此本例使用了,Text1,的,KeyUp,事件。当焦点位于文本框内,按下键盘上任一键后会产生,KeyUp,事件,同时返回按键代码,KeyCode,。回车键的代码为,13,,所以程序首先判断用户是否在,Text1,中按下了回车键,若,KeyCode,13,,表示口令输入完。,说明:在程序中是使用了一个静态变量,I,,用于统计输入错误口令的次数。静态变量,I,只在第一次判断口令时被初始化为,0,,以后每次执行该过程时,如果口令错误,则,I,的值累加,1,,因此,当,I,的值为,3,时,表示用户已经连续三次输入了错误口令。,21,程序代码如下:,Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer),Static I As Integer,If KeyCode = 13 Then,If UCase(Text1.Text) = abcd Then,Label2.Caption = ,你已成功进入本系统,ElseIf I 20,测试表达式, 20,24,Select Case,语句功能:根据“测试表达式”的值,选择第一个符合条件的语句块执行。,Select Case,语句的执行过程是:先求“测试表达式”的值,然后顺序测试该值符合哪一个,Case,子句中情况,如果找到了,则执行该,Case,子句下面的语句块,然后执行,End Select,后面的语句;如果没找到,则执行,Case Else,后面的语句块,然后执行,End Select,后面的语句。,25,【例,5.7,】用,Select Case,语句代替,ElseIf,语句来实现成绩的鉴定。保持界面不变,双击“鉴定”按钮,修改代码如下:,Private Sub Command1_Click() ,单击“鉴定”按钮,Dim x! ,单击“鉴定”按钮,x = Text1.Text,Select Case x,Case Is = 90,Text2.Text = ,优秀,Case Is = 80,在,x,90,不成立时,再判断,x,80,是否成立,Text2.Text = ,良好,Case Is = 70,Text2.Text = ,中,Case Is = 60,Text2.Text = ,及格,Case Else,Text2.Text = ,不及格,End Select,End Sub,26,【例,5.8,】某交易中介公司按交易双方成交额收取中介费用,收费标准如下:,交易额,=10000 5%,5000=,交易额,10000 3%,1000=,交易额,5000 2%,500=,交易额,1000 1%,交易额,500,免费,假设交易额通过文本框,Text1,输入,则“计算费用”按钮,Command1,的事件代码如下:,Private Sub Command1_Click(),Trade=Val(Text1.Text),Select Case Trade,Case Is500,Discount=0,27,Case Is1000,Discount=0.01,Case Is5000,Discount=0.02,Case Is10000,Discount=0.03,Case Else,Discount=0.05,End Select,Fee = Trade * Discount,Print Fee,End Sub,在解决多分支选择情况的程序时,采用,Select Case,语句比较方便,并且程序结构清楚,便于阅读和修改。,28,IIf 函数,VB中还提供了一个选择函数IIf 函数,用来实现简单的选择结构。其功能是根据表达式的值,来返回两部分中的一个。其语法格式为:,IIf(, , ),例如,求分段函数:,y=,函数值的语句可以简单地表示为:,y=Iif(x0,2*x+3,4-3*x),返回,29,5.5,应用举例,【例,5.9,】:猜数游戏。由计算机任意设置一个,1100,之间的整数,然后让用户猜出这个数是多少。,说明:,为了引导用户猜中由计算机设置的随机数,可以在猜数的过程中给以适当的提示。即在每次猜完之后,计算机显示相应的提示信息,用户可以根据这些信息继续猜,逐步接近要猜的数,直至猜中。当用户猜的数与目标数之间相差不超过,2,时,提示“接近了”;相差不超过,10,时,提示“有些远”;相差超过,10,时,提示“太远了”。,30,Private Sub Form_Load(),Cls,Randomize,number = Int(Rnd * 100) + 1,MsgBox ,计算机设置了一个,1,100,之间的整数,, & vbCrLf & _,请您猜出这个数是多少。, & vbCrLf & _,如果输入,-1,,则停止猜数,并输出要猜的数。,End Sub,Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer),Dim guess, diff, k As Integer,If KeyCode = 13 Then,guess = Val(Text1.Text),If guess = -1 Then MsgBox 要猜的数是 & number: Exit Sub,diff = Abs(number - guess),31,If diff = 0 Then,k = 0,ElseIf diff = 2 Then,k = 1,ElseIf diff = 10 Then,k = 2,Else,k = 3,End If,Select Case k,Case 0,MsgBox ,恭喜你,猜对了!,Case 1,MsgBox ,接近了,再努力!,Case 2,MsgBox ,有些远,再努力!,Case 3,MsgBox ,太远了,继续努力!,End Select,End If,End Sub,32,【例,5.10,】:编程计算某年某月某日是星期几。,分析:,该程序大致可分为三部分:,(,1,)输入部分:输入年、月、日,可通过,InputBox,函数来实现。,(,2,)计算部分:用来完成对输入的日期是星期几的计算,因此它是本题的关键。在这一部分应解决以下几个问题:,判断平年、闰年。,凡是能被,4,整除但不能被,100,整除的年份为闰年,如,1980,年。,凡是能被,400,整除的年份为闰年,如,2000,年。,除以上两种情况以外的其余年份都是平年。,计算总天数。,总天数的计算公式为:总天数,=,平年累积值,+,闰年累积值,+,月累积值,+,日期,计算星期几。查阅有关资料可知,,1899,年,12,月,31,日是星期日,因此可把,week,的值定为,1,;,week,的初值加上总天数并对,7,取模,所得的余数即为星期几。,(,3,)输出部分:把计算结果以适当的格式输出。,33,程序如下,:,Private Sub Form_Click(),输入部分,Dim Y, M, D, Month2, day0, day1, daysum, week As Integer,Y = InputBox(,请输入当前日期, & ,先输入年份,(1901-2100),M = InputBox(,请输入月份(,1,12,):,),D = InputBox(,请输入日(,1,31,):,),计算部分,If (Y Mod 100 0) And (Y Mod 4 = 0) Or (Y Mod 100 = 0) And (Y Mod 400 = 0) Then,Month2 = 29,Else,Month2 = 28,End If,34,Select Case M,Case 1,day0 = 31,day1 = 0,Case 2,day0 = Month2,day1 = 31,Case 3,day0 = 31,day1 = Month2 + 31,Case 4,day0 = 30,day1 = Month2 + 62,Case 5,day0 = 31,day1 = Month2 + 92,Case 6,day0 = 30,day1 = Month2 + 123,Case 7,day0 = 31,day1 = Month2 + 153,Case 8,day0 = 31,day1 = Month2 + 184,Case 9,day0 = 30,day1 = Month2 + 215,Case 10,day0 = 31,day1 = Month2 + 245,Case 11,day0 = 30,day1 = Month2 + 276,Case 12,day0 = 31,day1 = Month2 + 306,End Select,35,If (D 1) Then,daysum = (Y - 1901) + (Y - 1901) / 4 + day1 + D,daysum = Int(daysum + 0.5),Else,MsgBox ,数据输入错误,!,End If,week = (week + daysum) Mod 7,输出部分,Print Y; “,年,”; M; “,月,”; D; “,日是,”;,Select Case week,Case 0,Print -星期日-,Case 1,Print -星期一-,Case 2,Print -星期二-,Case 3,Print -星期三-,Case 4,Print -,星期四,-,Case 5,Print -,星期五,-,Case 6,Print -,星期六,-,End Select,End Sub,36,本章小结,本章中主要介绍了一种常用的程序控制结构选择结构以及,VB,中提供的用来实现选择结构流程控制的语句:,块结构条件语句,If,Then,End If,多分支选条件语句,ElseIf,多分支选择语句,Select Case,End Select,在解决实际问题时,经常使用块结构的选择语句,因为这种语句既可以解决单分支也可以解决多分支的选择问题,并且结构相对较好,灵活性较强。,最后,通过一些综合性的例子讲述了各种选择结构的程序的解决方法。需要重点掌握每种语句的语法结构以及使用情况,会适当的运用各种语句解决问题,尤其注意语句的嵌套使用情况,避免产生混乱。,37,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!