《计算机二级vb教程VBd6z课件》由会员分享,可在线阅读,更多相关《计算机二级vb教程VBd6z课件(72页珍藏版)》请在金锄头文库上搜索。
1、Visual Basic控制结构,第六章,程序设计,1. 确定数据结构。 2. 确定算法 3. 编码 4. 上机调试 5. 整理并写出文档资料,算 法,算法是指为解决某个特定问题而采取的确定且有限的步骤。常用流程图描述。,结构化程序设计,结构化程序设计有三种基本结构组成。 1. 顺序结构,流程图,N-S图,2. 选择结构(或分支结构),3. 循环结构,当型循环,直到型循环,1. 选择结构程序设计,前面介绍的程序多为顺序结构,即程序按书写顺序依次执行。在VB中除顺序结构外,流程的控制分为三种情况:一是程序的执行过程中,根据是否满足给定条件来判断控制是否转移,如条件语句;二是重复地执行程序的某一部
2、分,如循环语句;三是根据不同的情况执行不同的操作,如情况语句。此外VB中也可使用Goto语句。,一、单行结构条件语句 1.格式:If 条件 Then then部分 Else else部分 2.功能:如果“条件”为True,则执行“then部分”,否则执行“else部分”。,3.“else部分”是可选的,If语句可简化为: If 条件 Then then部分 其功能是“条件”为True,则执行“then部分”,否则执行下一行程序。 条件语句中的“then部分”和“else部分”可以是一个或多个语句(如是多个语句用冒号隔开),也可以是条件语句,即条件语句可以嵌套。嵌套层数没有具体规定,但嵌套层数较
3、多时,应注意嵌套的正确性。一般原则是:每一个“else部分”都与它前面的、且未曾被配对的“IfThen”配对。,二、块结构条件语句 1.格式:If 条件1 Then 语句块1 ElseIf 条件2 Then 语句块2 ElseIf 条件3 Then 语句块3 ElseIf 条件n Then 语句块n End If,2.功能:如果“条件1”为True,则执行“语句块1”;否则如果“条件2”为True,则执行“语句块2” 否则执行“语句块n”。 这里的“语句块”可以是一个语句,也可以是多个语句。当有多个语句时,可以分别写在多行里;如写在一行中,则各语句间用冒号隔开。 说明: 格式中的“条件1”、“
4、条件2”等都是逻辑表达式,通常把数值表达式和关系表达式看做逻辑表达式的特例。当“条件”是数值表达式时,非0值表示True,0值表示False;当“条件”是关系式或逻辑表达式时,1表示True,0表示False。,块形式条件语句的执行过程是:先测试“条件1”,如为True,则执行Then后面的“语句块”;如“条件1”为False,则顺序测试每个ElseIf子句中的“条件”,当发现某个“条件”为True时,就执行与其相关的Then后面的“语句块”;如所有ElseIf子句的“条件”都不为True,则执行Else后面的“语句块n”。在执行Then或Else后面的语句块后,程序退出块结构条件语句,继续执
5、行End If后面的语句。 “语句块”中的语句不能与其前面的Then在同一行上,否则VB认为是一个单行结构条件语句。即块结构与单行结构条件语句的主要区别,就是看Then后面的语句(注释语句除外)是否和Then在同一行上,如在同一行上,则为单行结构,否则为块结构。对于块结构,必须以End If结束,单行结构没有End If。,在块结构的条件语句中,ElseIf子句的数量没有限制,可根据需要加入任意多个ElseIf子句。 块结构条件语句中的ElseIf子句和Else子句都是可选的。如省略这些子句,则块形式的条件语句简化为: If 条件 Then 语句块 End IF 在某些情况下,可能有多个条件为
6、True,但只能执行一个语句块,即执行第一个为True的条件后面的语句块,然后跳出If结构。,块形式的条件语句可嵌套,即把一个IfThenElse块放在另一个IfThenElse块内。嵌套必须完全“包住”,不能互相“骑跨”。 块条件语句比单行条件语句有很多优点:块形式比单行形式提供了更好的结构和灵活性,它允许条件分支跨越数行;同时块形式可测试更复杂的条件,块形式使程序的结构按逻辑来引导,而不是把多个语句放在一行中。此外,使用块形式的程序一般容易阅读、维护和调试,任何单行形式的条件语句都可改写成块形式。,三、IIf函数 IIf函数可用来执行简单的条件判断操作,是“IfThenElse”结构的简写
7、版本。函数格式如下: result=IIf(条件,True部分,False部分) 其中:“result”是函数的返回值,“条件”是一个逻辑表达式。当“条件”为真时,IIf函数返回“True部分”;当“条件”为假时,返回“False”部分。“True部分”或“False部分”可以是表达式、变量或其他函数。 注意:IIf函数中的三个参数都不能省略,而且要求“True部分”、“Flase部分”及结果变量的类型一致。,2. 多分支结构程序设计,在VB中,多分支结构程序通过情况语句实现。情况语句也称Select Case语句或Case语句。它根据一个表达式的值,在一组相互独立的可选语句序列中挑选要执行的
8、语句序列,它是块形式条件语句的一种变形。情况语句的格式为: Select Case 测试表达式 Case 表达式表列1 语句块1 Case 表达式表列2 语句块2 Case Else 语句块n End Select,情况语句以Select Case开头,以End Select结束。功能是:根据“测试表达式”的值,从多个语句块中选择符合条件的一个语句块执行。 说明: 情况语句中含有多个参量,这些参量含义为: 测试表达式:可以是数值表达式或字符串表达式,通常为变量或常量。 语句块1、语句块2:每个语句由一行或多行合法的VB语句组成。,表达式表列1、表达式表列2:称域值,可以是下列形式之一: 表达式
9、,表达式。如:Case 2,4,6,8 表达式 To 表达式。如:Case 1 To 5 Is 关系运算表达式,使用的运算符包括:、=、=。如:Case Is=12 或 Case Isa+b “表达式表列”中的表达式必须与测试表达式的类型相同。,情况语句的执行过程:先对“测试表达式”求值,然后测试该值与哪一个Case子句中的“表达式表列”相匹配;如果找到了,则执行与该Case语句有关的语句块,并把控制转移到End Select后面的语句;如没有找到,则执行与Case Else子句有关的语句块,然后把控制转移到End Select后面的语句, “表达式表列”有上面所说的三种形式,使用时应注意发下
10、几点: 关键字To用来指定一个范围,此时必须把较小的值写在前面,较大的值写在后面,字符串常量的范围必须按字母顺序写出。,如使用关键字Is,则只能用关系运算符,即只能是简单的条件,不能用逻辑运算符将两个或多个简单条件组合在一起。 在一个Select Case语句中,三种形式可以混用,如:Case IsLowerbound,5,6,12,Isuperbound Select Case语句与IfThenElse语句块的功能类似。一般来说,可使用块形式条件语句的地方,也可使用情况语句。 Select Case语句和块形式的IfThenElse语句的主要区别是:Select Case语句只对单个表达式求
11、值,并根据求值结果执行不同的语句块;而块形式的条件语句可对不同的表达式求值,因而效率较高。,如同一个域值的范围在多个Case子句中出现,则只执行符合要求的第一个Case子句的语句块。 情况语句中Case子句的顺序对执行结果没有影响,但Case Else子句必须放在所有Case子句后。如在Select Case结构中的任何一个Case子句都没有与测试表达式相匹配的值,而且也没有Case Else子句,则不执行任何操作。 在不同的Case子句中指定的条件和相应的操作不能相互矛盾,如:,Select Case a Case 1 Print 1 Case 1 To 3 Print 2 End Sele
12、ct 程序出现逻辑上的矛盾。 IsNumeric函数有一个自变量,类型为Variant。功能是:如自变量为数值,返回True,否则返回False。,Dim x As Integer x = Val(InputBox(请输入学生成绩) Select Case x 10 Case 10 Print A等 Case 9 Print A等 Case 8 Print B等 Case 7 Print C等 Case 6 Print D等 Case Else Print E等 End Select,例:,例1.有一函数: y= 编一程序,输入一个x值,输出y值。,程序1: Dim x, y As Integ
13、er x = val(InputBox(“请输入x的值”) If x 0 Then y = -1 Else If x = 0 Then y = 0 Else y = 1 Print x=; x, y=; y,程序2: Dim x, y As Integer x = Val(InputBox(请输入x的值) If x = 0 Then If x 0 Then y = 1 Else y = 0 Else y = -1 Print x=; x, y=; y Dim x, y As Integer 程序3: x = Val(InputBox(请输入x的值) y = -1 If x 0 Then If
14、x 0 Then y = 1 Else y = 0 Print x=; x, y=; y,设运输货物时,每吨公里运费p与距离s有关,其公式如下: p=,如所付的运费超过250元,再给予95折优惠。从键盘输入货物吨数,运输公里数,求应付的运费。,Dim yf, s, t As Single : Dim p As Integer t = Val(InputBox(请输入货物吨数:) s = Val(InputBox(请输入运输公里数:) If (s 250) Then yf = yf * 0.95 Print 运费; yf, p,例3.求ax2bxc0方程的解。 有以下几种可能: a0,不是二次方
15、程。 b24ac0,有两个相等实根。 b24ac0,有两个不等实根。 b24ac0,有两个共轭复根。,Private Sub Command1_Click() Dim a, b, c, disc, x1, x2, realpart, imagpart As Single a = Val(InputBox(请输入a边的值) b = Val(InputBox(请输入b边的值) c = Val(InputBox(请输入c边的值) If a = 0 Then Print 不是一元二次方程 Else disc = b * b - 4 * a * c Print disc If disc = 0 Then
16、 Print 有两个相等的实根; -b / (2 * a),ElseIf disc 0 Then x1 = (-b + Sqr(disc) / (2 * a) x2 = (-b - Sqr(disc) / (2 * a) Print 有两个不等的实根:; x1; 和; x2 Else realpart = -b / (2 * a) imagpart = Sqr(-disc) / (2 * a) Print 有两个复数根 Print realpart; +; imagpart; i Print realpart; -; imagpart; i End If End If End Sub,3. For循环结构程序设计,循环语句产生一个重复的语句序列,直到指定的条件满足为止。VB提供三种循环结构:计