收藏 分享(赏)

07+Visual+Basic控制结构.ppt

上传人:myk79025 文档编号:6212913 上传时间:2019-04-02 格式:PPT 页数:40 大小:843.50KB
下载 相关 举报
07+Visual+Basic控制结构.ppt_第1页
第1页 / 共40页
07+Visual+Basic控制结构.ppt_第2页
第2页 / 共40页
07+Visual+Basic控制结构.ppt_第3页
第3页 / 共40页
07+Visual+Basic控制结构.ppt_第4页
第4页 / 共40页
07+Visual+Basic控制结构.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

1、第七章 Visual Basic控制结构,7.1 选择控制结构,7.2 多分支控制结构,7.3 For 循环控制结构,7.4 当循环控制结构,7.6 多重循环,7.7 GoTo语句,7.5 Do循环控制结构,7.6 多重循环,结构化程序设计的基本控制结构有三种,即顺序结构、选择结构和循环结构。由这三种基本结构还可以派生出“多分支结构”,即:根据给定条件,从多个分支路径中选择执行其中的一个。前面编写的一些简单的程序(事件过程)大多为顺序结构,即整个程序按书写顺序依次执行。在本章中,将讨论顺序结构之外的流程控制语句,包括选择结构、多分支结构及循环结构语句。掌握了这些语句,就可以编写较为复杂的程序了

2、。,在Visual Basic中,有些问题需要通过程序的选择结构来解决,而选择结构是通过条件语句来实现的。条件语句也称为If语句,它有两种格式,一种是单行结构,一种是块结构。,7.1.1(1)单分支条件结构(If.Then语句),用 If.Then 结构有条件地执行一个或多个语句。单行语法和多行块语法都可以使用: (1)If Then (2)If ThenEnd If 下面两个例子等价: (1)If C为 True 时,要执行多行代码,则必须使用多行块 If.Then.End If 格式。在上述格式中,“条件”是一个逻辑表达式。程序根据表达式的值(True或False)执行相应的操作。,注意:

3、一个行If 语句只能占一个程序行,即要求在一行中写完的If 语句。此语句的总字符数不能超过255。 “条件”可以是逻辑表达式或关系表达式,或是一个逻辑量。 条件成立,即逻辑值为真,则 执行 Then 后的,执行完 后,直接执行End If 的后继语句;条件不成 立,即逻辑值为假,则直接执行End If 的后继语句。也就是说根据所给的条件成立与否,决定执行不同的内容。其中: 可以是一条语句,也可以是多条语句,当两条以上的语句,位于同一行时,语句之间用冒号( : )分开。 If(X0)And (Y0) And (YD)ThenAmount(XYD*2)/2 :Try.Text=Str$(Amoun

4、t) End If,7.1.1(2) 双分支结构(If.Then.Else 语句)可以用 If.Then.Else .语句定义若干个语句块,但只能执行其中的一个语句块。其语法格式也有两种形式: (1)If ThenElseEnd If (2)If Then Else 当为真时,执行Then后面的语句块1(或语句1),否则执行Else后面的 语句块2(或语句2)。 它的功能是:若“条件”为True,则执行,否则执行,条件语句中的和还可以是条件语句,即条件语句可以嵌套,其深度(嵌套层数)没有具体规定,但受到每行字数(1024)的限制。,功能:二分支选择结构是根据给定的条件成立与否,来决定执行,还是

5、执行 。与前不同的是将一个选择结构用若干条语句行来实现。 与行If 语句类似,执行块If 语句,先判断条件是否成立。条件成立,执行,执行完后,跳过Else行和,直接执行 End If 语句的后继语句;条件不成立,则执行,执行完后,直接执行 End If 语句的后继语句。 其中: Else可以被省略。 或中可以包含多条语句行。 称为Then 块。 称为Else块 。 Then块、Else块中还可以嵌套其它块If 语句。 If-Then必须写在同一行上,Then是该行的结尾,语句组1不能与If-Then写在同一行上。 为清晰起见,Else独占一行为好。 块If 结构以If-Then开始,以End

6、If 结束,作为选择结构它是一个整体。,7.1.2(1) 多分支结构(IfThenElseIf 语句) 多分支结构可以处理两个或两个以上分支。其语句形式为: If ThenElseIf Then Else End If Visual Basic 首先测试。若它为 False,Visual Basic就测试,依次类推,直到找到一个为 True 的条件。当它找到一个为 True 的条件时,Visual Basic会执行相应的语句块,然后执行 End If 的后继语句。多分支结构一般包含 Else 语句块,若条件均不是 True,则 Visual Basic 执行 Else 后的语句块。,执行的过程

7、是这样的:从If 开始判断,条件1成立,执行,执行完后,跳过其它语句,顺序执行End If 的后继语句,若不成立,再顺序判断是否成立,若成立,则执行ElseIf后的,执行完后,顺序执行End If的后继语句,若条件不成立,则顺序往下,以此类推,当所有的条件都不满足,则执行Else后的,执行完后,顺序执行End If的后继语句,若所有的条件都不满足,又未选Else后的,则顺序执行End If 的后继语句。,7.1.2(2) If语句的嵌套掌握了If语句的基本形式,可以通过这些基本形式加以复合,获得更为复杂的If结构,称为If语句的嵌套。一般形式如图1所示。图2为在Else块中嵌套If结构的形式。

8、可根据实际情况选择采用何种结构。,图1 If 语句复合结构的一般形式,图2 在Else块中嵌套If结构的形式,If ThenIf ThenIf ThenElseEnd IfElseEnd If ElseEnd If,If ThenElseIf ThenElseIf ThenElseIf ThenElse End If End If,与前面的程序比较,可以看出:程序的结构是相同的,但表达的方式不同,用ElseIf 语句可以减少程序的行数,省去各层块If 结构中的End If 行,运行结果与前相同。但程序看起来比较清晰。在内嵌If 层次较多时,常用ElseIf 语句。,在多个Else和多个Then

9、语句之间应该怎样配对呢?Visual Basic规定:每一个Else部分都与它前面的、距它最近的、且未曾被配对的If-Then配对。例: IfThenIfThenElseElse 内层 IfThenIfThenElseIfThenElse内层 中层外层在这部分,使用者应十分细心,以免出错。,7.1.3 条件函数,1IIf 函数 IIf 函数的功能是根据表达式的值,来返回两部分中的其中一部分。其语法格式为: IIf(, , ) 例如,求分段函数:函数值的语句可以简单地表示为:y=Iif(x0,2*x+3,4-3*x) 它与下面的条件语句等价:If x0 Then y=2*x+3 Else y=4

10、-3*x,y=,在Visual Basic中,多分支结构程序通过情况语句来实现。情况语句也称Select Case语句或Case语句,它根据一个表达式的值,在一组相互独立的可选语句序列中挑选要执行的语句序列。在情况语句中,有很多成分语句,它是块结构条件语句的一种变形。,7. 2 多分支控制结构,Select Case语句的格式为: Select Case Case Case Case Case Else End Select,功能:直接实现多分支选择。注意:Select Case语句中不仅可以指定变量名,而且可以指定表达式。执行过程是:程序运行进入Select Case语句时,测试表达式应有确

11、定的值,当测试表达式的值确定后,顺序逐个检查 Case子句中的条件。当测试表达式的值满足该 Case子句中指定的条件时,就执行该Case子句中的语句块,执行完该语句块后,跳过其它的Case子句,直接执行End Select语句的后继语句。若所有 Case子句中的条件都与测试表达式的值不符,则执行 Case Else 的语句块。执行完后,执行End Select语句的后继语句。其中,Case Else语句是可选项,若未选时,即所有的条件都不满足,就什么也不执行,直接执行End Select 语句的后继语句。 Select Case 语句中的测试表达式,可以是数值型、字符型,但不能为逻辑型.,注意

12、: Select Case 语句中的测试表达式的值与Case 子句的值数据类型必须一致。 当是数值型时,则后面 Case 子句的值也应为数值型, 当为字符型时,则后面Case 子句中的值也应是字符型。 Case 子句中的条件有三种形式:常量、变量和表达式。 常量:可以是一个或若干个常量,当多于一个时,用逗号( , ) 作为分隔符, 例: Case 1,2,3 或Case “a”,“b”,“c” 等,它们间的关系是 “或” 的关 系,即是 1或2 或 3或 “a”或 “b”或 “c”。 指定一个范围:即 TO ,且满足”低值TO高值”的 原则。例:Case 5 TO 10, Case “a“ T

13、O “z“ 。 指定一个关系条件:即Is 。如 CaseIs=5, Case Isa+b,注意: 若指定的值是连续的,则用To指定值的范围较好,(在 这种情况下,必须把较小的值写在前面,较大的值写在后面,字 符串常量的范围必须按字母顺序写出。)若指定的多个值不是连续 的,则用常量的形式较好。例: Case 1 To 3; Case 1,2,3 各条件之间不允许出现公共点。必须保持各自独立。 Visual Basic还允许在一个Case子句中,指定多种形式,这时只须将各种形式用逗号分开。例:Case 1,2,3,5 To 8, Is20 当Case子句采用多值条件时,各值条件中只要有一个与测试表

14、达式匹配就执行此Case子句中的语句组。例:Select Case XCase 1,3,5,7Print “ABCDE”例:Select Case XCase Is=250 , Is500注意:上述Case 语句中指定的条件并不是250X500,不是两个 条件 “与”的关系,而是“或”的关系。即:S250或 S500两个条件,之一满足,就认为此Case 子句就具备匹配条件。 Case 语句的顺序对执行结果毫无影响。但是应注意,Case Else子句必须放在所有的Case子句之后。如果在Select Case结构中的任何一个Case子句都没有与测试表达式相匹配的值,而且也没有Case Else子

15、句,则不执行任何操作。 用 Is 定义条件时,只能是简单的条件,不能用逻辑表达式将两个简单条件组合在一起。例:Case Is =7(错误)应改为:Case Is =7例:Case Is 10 And Is10 测试表达式可以是字符串型的。 注意:本章中的语句都是要判断语句中给定的条件,判断的结果是一个逻辑值,这样条件可以是一个关系表达式,如 ab 或 c$x$ 等,也可以是逻辑表达式, 如 ab And bc, 不能写成 abc,这个问题要特别注意。 在不同的Case子句中指定的条件和相应的操作不能相互矛盾。例如:,Select Case aCase 1Print 1Case 1 To 3Pr

16、int 2End Select 当a的值为1时,既符合第一个Case子句中规定的条件,又符合第二个Case中规定的条件,在第一个Case子句中要求输出“1”,在第二个Case子句中要求输出“2”,显然两者是矛盾的。在这种情况下,系统不检查两个Case子句是否有矛盾,而且一般也不会出错,它自动执行首先遇到的满足条件的情况语句。但程序中不应该出现这种逻辑上的矛盾。,在实际应用中,经常会遇到一些操作并不复杂,但需要反复多次处理的问题,诸如人口增长统计,国民经济发展计划增长情况,银行存款利率的计算等。为此,Visual Basic提供了循环语句。使用循环语句,可以实现循环结构程序设计. 循环语句产生一

17、个重复执行的语句序列,直到指定的条件满足为止。Visual Basic提供了三种不同风格的循环结构,包括计数循环(ForNext循环)、当循环(WhileWend循环)和Do循环(DoLoop循环)。其中ForNext循环按规定的次数执行循环体,而WhileWend循环和Do循环则是在给定的条件满足时执行循环体。这一节介绍For循环控制结构,后面两节分别介绍当循环和Do循环。 Do循环使用范围较广,在循环次数未知的情况下,一般使用Do 循环。有时,循环次数是已知的,这时使用 For.Next 循环比较方便。而当循环的作用类同于Do循环。,7.3 For循环控制结构 For循环也称ForNext

18、循环或计数循环。其一般格式如下: For 循环变量初值 To 末限Step 步长循环体Exit For Next 循环变量 For循环按指定的次数执行循环体。例如: For x=1 to 100 Step 1Sum=Sum+x Next x 该例从1到100,步长为1,共执行100次“SumSum+x”。其中x是循环变量,1是初值,100是末限,Step后面的1是步长值,“Sum=Sum+x”是循环体。,说明: (1) 格式中有多个参量,这些参量的含义如下: 循环变量:亦称循环控制变量、控制变量或循环计数器。它是一个数值变量,但不能是下标变量或记录元素。 初值:循环变量的初值,它是一个数值表达

19、式。 末限:循环变量的末限,它也是一个数值表达式。 步长:循环变量的增量,是一个数值表达式。其值可以是正数(递增循环)或负数(递减循环),但不能为0。如果步长为1,则可略去不写。 循环体:在For和Next语句之间的一个或多个语句的语句序列。 Exit For:退出循环。 Next:循环终端语句,Next后的“循环变量”与For语句中的“循环变量”必须相同。 格式中的初值、末限、步长均为数值表达式,但其值不一定是整数,可以是实数,但Visual Basic将自动取整。,(2)For循环的执行过程是:首先把“初值”赋给“循环变量”,接着检查“循环变量”的值是否超过末限,如果超过就停止执行“循环体

20、”,跳出循环,执行Next的后继语句;否则执行一次“循环体”,再把循环变量步长的值赋给循环变量,重复上述过程。 这里所说的“超过”有两种含义,即大于或小于。当步长为正值时,检查循环变量是否大于末限;当步长为负值时,判断循环变量的值是否小于末限。 下面通过例子说明ForNext循环的执行过程:T=0For I=2 To 10 Step 2T=T+IPrint TNext I 在这里,I是循环变量,循环初值为2,末限为10,步长为2,T=T+I和Print T是循环体。,执行过程如下: 把初值2赋给循环变量I; 将I的值与末限进行比较,若I10,则转到,否则执行循环体; I增加一个步长值,即II2

21、; 返回继续执行; 执行Next的后继语句。 (3)在Visual Basic中,ForNext循环遵循“先判断,后执行”的原则,即先检查循环变量是否超过末限,再决定是否执行循环体。一般来说,可以概括如下: 当步长大于0,初值末限时,执行循环体。否则退出循环体,执行后继 语句。 当步长小于0,初值末限时,执行循环体。否则退出循环体,执行后继 语句。 即:当初值等于末限时,不管步长是正数还是负数,均执行一次循环体。 当步长等于0,死循环。(这时按Ctrl+C退出死循环 ;或 按Ctrl+ Break键,强行终止。),(4)For和Next语句必须成对出现,且For语句必须在Next语句之前。 (

22、5)循环次数由初值、末限和步长三个因素决定,计算公式为:循环次数Int(末限初值)/步长1 (6)ForNext循环可以嵌套使用,嵌套层数没有具体限制,其基本要求是:每个循环必须有一个唯一的变量名作为循环变量;内层循环的Next语句必须放在外层循环的Next语句之前,内外循环不得互相骑跨。例如下面的嵌套是错误的:For j=1 To 5For i=2 To 8Next jNext i,(7)在Visual Basic中,循环控制值不但可以是整数和单精度数,而且也可以是双精度数。 (8)循环变量用来控制循环过程,在循环体内可以被引用和赋值。当循环变量在循环体内被引用时,称为“操作变量”,而不被引

23、用的循环变量叫做“形式变量”。如果用循环变量作为操作变量,当循环体内循环变量出现的次数较多时,会影响程序的清晰性。 (9)一般情况下,ForNext正常结束,即循环变量到达末限。但在有些情况下,可能需要在循环变量到达末限前退出循环,这可以通过Exit For语句来实现。在一个ForNext循环中,可以含有一个或多个Exit For语句,并且可以出现在循环体的任何位置。此外,用Exit For只能退出当前循环,即退出它所在的内层循环。例如:,For i=1 to 100For j=1 to 100Print i+j;If i*j5000 Then Exit ForNext j Next i 在执

24、行上述程序时,如果“i*j5000”,程序将从内层循环中退出;如果外层循环还没有结束,则控制仍返回到内层循环中去。 (10)ForNext中的循环体是可选项,当该项缺省时,ForNext执行空循环。利用这一特性,可以暂停程序的执行。当程序暂停的时间很短,或者对时间没有严格要求时,用ForNext循环来实现暂停是一个好方法。不过,对于不同的计算机,暂停的时间也不一样。当对一个语句序列执行固定次数的循环时,用ForNext循环非常方便。,7.4 当循环控制结构 在一定的条件下,物质可以由一种状态转化为另一种状态。例如,当温度降到以下时,水变成冰;当水温上升到100以上时,水变成水蒸汽。在Visua

25、l Basic中,描述这类问题使用的是当循环语句。其格式如下: While 条件 语句块 Wend 其中:“条件”为一布尔表达式。 当循环语句的功能是: 当给定的“条件”为True时,执行循环中的“语句块”(即循环体)。,While循环语句的执行过程是:如果“条件”为True(非零值),则执行“语句块”,当遇到Wend语句时,控制返回到While语句并对“条件”进行测试,如仍然为True,重复上述过程;如果“条件”为False,则不执行“语句块”,而执行Wend的后继语句。当循环与For循环的区别是:For循环中循环体执行的次数是已知的,而当循环则是在给定条件为True时,执行(循环体)。设有

26、如下一段程序: While b0c=c+a b=b-1 Wend,上述程序通过重复做加法来计算“c=c+a”,重复的条件是“b0”。每次执行循环体前,都要按While语句指定的条件(b0)判断一次。如果条件为True,则执行循环体中的语句块。也就是说,只要条件为True,则执行,执行完后,再测试条件是否成立,再执行,如此这般,直到条件为False(b=0)时才结束循环,控制转移到Wend的后继语句。这就是说,当循环可以指定一个循环终止的条件,而For循环只能首先确定循环的次数。因此,当需要由数据的某个条件是否成立来控制循环时,就不宜使用For循环,而应使用当循环来描述。对于循环次数有限但又不知

27、道具体次数的操作,当循环是十分有效的。从某种程度上来说,当循环比For循环更灵活。,在使用当循环时,应注意以下几点: (1)While循环先对“条件”进行测试,然后才决定是否执行循环体,只有在“条件”为True时才执行循环体。如果条件从开始就不成立,则一次循环体也不执行。例如: While aa循环体 Wend 条件“aa”永远为False,因此不执行循环体。当然,这样的语句没有什么实用价值。 (2)如果条件总是成立,则不停地重复执行循环体。例如:,x=1 While x循环体 Wend 这是“死循环”的一个特例。程序运行后,只能通过人工干预的方法或由操作系统强迫其停止执行。 (3)当循环开始

28、时,对条件进行测试,如果成立,则执行循环体;执行完一次循环体后,再测试条件,如成立,则继续执行直到条件不成立为止。也就是说,当条件最初出现False时,或是以某种方式执行循环体,使得条件的逻辑值最终出现False时,当循环才能终止。在正常使用的当循环中,循环体的执行,应当能使条件改变,否则会出现死循环,这是程序设计中容易出现的严重错误,应当尽力避免。 (4)当循环可以嵌套,层数没有限制,每个Wend和最近的While相匹配。,7.5 Do循环控制结构Do循环不仅可以不按照限定的次数执行循环体内的语句块,而且可以根据循环条件是否成立(True或False),而决定是否结束循环。 Do循环的格式如

29、下: (1)Do While|Until 循环条件语句块Exit DoLoop (2)Do语句块Exit DoLoop While|Until 循环条件,1前测型Do.Loop循环 在前测型Do.Loop循环中,只要 为 True 就执行 。其语法格式为: Do While | Until Loop,说明: (1)Do、Loop及While、Until都是关键字。“语句块”是需要重复执行的一个或多个语句,即循环体。“循环条件”是一个逻辑表达式。 (2)Do和Loop构成了Do循环。当只有这两个关键字时,其格式简化为:Do语句块Loop在这种情况下,程序将不停地执行Do和Loop之间的“语句块”

30、。为了使程序按指定的次数执行循环,必须使用可选的关键字While或Until以及Exit Do。While是当条件为True时执行循环,而Until则是在条件为False时执行循环。和While循环一样,如果条件总是成立,Do循环也可能陷入“死循环”。在这种情况下,可以用Exit Do语句跳出循环体。一个Do循环中可以有一个或多个Exit Do语句,并且Exit Do语句可以出现在循环体中的任何地方。当执行到该语句时,结束循环,并把控制转移到Do循环的后继语句。用Exit Do语句只能从它所在的那个循环中退出。Do循环可以嵌套,其规则与For-Next循环相同。,2.后测型Do.Loop循环

31、Do.Loop 语句的另一种演变形式是先执行,然后在每次执行后测试 。称为后测型Do.Loop循环。这种形式保证至少执行1次,其语法格式为: Do Loop While | Until ,3. 退出控制结构的出口语句 1) Exit For 语句 2) Exit Do 语句 3) Exit Sub 语句 4) Exit Function 语句 5)Go To语句 Go To语句的语法格式为: Go To 标号|行号 6)End语句7.6 多重循环 通常把循环体内不含有循环语句的循环叫做单层循环,而把循环体内还有循环语句的循环称为多重循环。例如在循环体内含有一个循环语句的循环称为二重循环。多重循

32、环又称多层循环或嵌套循环。,7.7 GoTo语句 Visual Basic保留了GoTo型控制,包括GoTo语句和On-GoTo语句。尽管GoTo型控制会影响程序质量,但在某些情况下还是有用的,大多数语言都没有取消。 1)GoTo语句可以改变程序的执行顺序,它跳过程序的某一部分去执行另一部分,或者返回已经执行过的某语句使之重复执行。因此,用GoTo语句可以构成循环。 GoTo语句的一般格式为: GoTo标号|行号 “标号”是一个 以冒号结尾的标识符;“行号”是一个整型数,它不以冒号结尾。例如: Start:一个标号,而1200是一个行号。 GoTo语句可以改变程序执行的顺序,无条件地把控制转移

33、到“标号”或“行号”所在的程序行,并从该行开始向下执行。,说明: (1)标号必须以英文字母开头,以冒号结束,而行号由数字组成,后面不能跟冒号。GoTo语句中的行号或标号在程序中必须存在,并且是唯一的,否则会产生错误。标号或行号可以出现在GoTo语句之前,也可以出现在GoTo语句之后。当出现在GoTo语句之前时,提供了实现循环的另一种途径。 (2)Visual Basic对GoTo语句的使用有一定的限制,它只能在一个过程中使用。 (3)GoTo语句是无条件转移语句,但常常与条件语句结合使用。 2)On-GoTo语句 On-GoTo语句类似于情况语句,用来实现多分支选择控制,它可以根据不同的条件从

34、多种处理方案中选择一种。其格式为:On 数值表达式 GoTo 行号表列|标号表列On-GoTo语句的功能是:根据“数值表达式”的值,把控制转移到几个指定的语句行中的一个语句行。“行号表列”或“标号表列”可以是程序中存在的多个行号或标号,相互之间用逗号隔开。例如:On x GoTo 30,50,Line3,Line4,On-GoTo语句的执行过程是:先计算“数值表达式”的值,将其四舍五入处理得一整数,然后根据该整数的值决定转移到第几个行号或标号执行;如果其值为1,则转向第一个行号或标号所指出的语句行;如果其值为2,则转向第二个行号或标号指出的语句行依此类推。如果“数值表达式”的值等于0或大于“行号表列”或“标号表列”中的项数,程序找不到适当的语句行,将自动执行On-GoTo语句的后继可执行语句。注意,上例中的“30”、“50”不是第30行、50行,而是转向行的行号。在Visual Basic中,On-GoTo语句可以用情况语句来代替。应尽量使用情况语句,少用或不用On-GoTo语句。,

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

当前位置:首页 > 网络科技 > Visual Basic

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报