4.3 表示循环程序块的“帽子”和“短裤”
再继续介绍一些有关流程图的内容。如果曾经备考过“信息技术水平考试”,就应该见过用如图4.6所示的符号表示循环的流程图。笔者将这一对符号称为“帽子和短裤”(不是正式名称)
图4.6 表示循环的符号
对于帽子形状和短裤形状的符号,为了表示它们是成对出现的,要在上面写下适当的名字。然后用“帽子”和“短裤”把需要反复执行的步骤包围起来。如果要在循环中嵌套循环,就需要对每个循环分别使用一对“帽子”和“短裤”。为了区分成对出现的“帽子”和“短裤”,要为每一对起不同的名字
稍微说一点题外话。笔者的名字是久雄,有一个哥哥叫康南,洗衣服时,如果把哥哥的帽子和短裤和我的混在一起洗的话,就不知道哪件是哥哥的,哪件是我的了。于是母亲就在我们哥俩的帽子和短裤上分别写上名字,在流程图的“帽子”和“短裤”符号上写名字的也出于同样的目的(如图4.7所示)
图4.7 循环中嵌套循环
上面的内容稍微有些跑题,下面回到正题。在计算机硬件上的操作中,循环是通过当满足条件时就返回到之前处理过的步骤来实现的。一旦使用了机器语言或汇编语言所提供的跳转指令,就可以将PC寄存器的值设置为任意的内存地址。如果将PC寄存器的值设置为之前执行过的步骤所对应的内存地址,那么就构成了循环。因此,在表示循环的时候,正如图4.5(c)所示那样,仅仅使用带有菱形符号的流程也就足够了。用机器语言或汇编语言表示循环时,都是先进行某种比较,再根据比较结果跳转到之前的地址(如图4.8所示)
图4.8 从硬件上看循环的过程
但现在还在使用机器语言或汇编语言的人已经不多了。程序员使用的都是能够更加高效地编写程序的高级语言,如BASIC、C或Java等。在这些高级语言中,程序员使用“程序块”表示循环而不是跳转指令。所谓“程序块”就是程序中代码的集合。程序中要被循环处理的部分,就是一种程序块。如图4.6所示的用帽子和短裤符号表示循环的方法就适用于使用了程序块的高级语言
代码清单4.2列出了从之前的“石头剪刀布游戏”中摘录出的程序块,这段代码用于循环双方的比试过程。由此可见,在VBScript中,是用For和Next两个关键字表示循环的程序块的。For对应着“帽子”,Next则对应着“短裤”。For的后面写有循环条件。For i=1 To 5表示用变量i存储循环次数,将i的值从1加到5,每进行1次循环就增加1,如果i的值超过了5循环就终止。画图时循环条件也要写在“帽子”中(如图4.9所示)
代码清单4.2 用高级语言表示循环
‘进行5轮比试
For i=1 To 5 -相当于“帽子”
‘处理步骤
…
Next -相当于“短裤”
图4.9 用流程图表示代码清单4.2中的程序
用“帽子”和“短裤”表示循环结构没有什么问题,也使用高级语言编写的程序。但在直接表示硬件操作的机器语言和汇编语言中,是通过条件分支返回到之前处理过的指令来实现循环的,并没有相当于For或Next的指令。条件分支本身也是通过跳转指令实现的。根据比较操作的结果,跳转到之前处理过的步骤就是循环;跳转到之后尚未处理的步骤就是条件分支(如图4.10所示)
图4.10 从硬件上看条件分支的过程
在高级语言中,条件分支也是由程序块表示的。在VBScript中,使用If、ElseIf、Else、End If表示条件分支的程序块。通过这几个关键字就可以形成一个被分成三个区域的程序块(如代码清单4.3所示)。如果If关键字后所写的条件成立,区域(1)中所写的代码就会被执行,形成分支。如果ElseIf后面所写的条件成立,区域(2)中所写的代码就会被执行,形成分支。当两个条件都不成立时,区域(3)中所写的代码就会被执行,形成分支。高级语言的条件分支代码块,可以用画有菱形符号的流程图表示
代码片段4.3 用高级语言表示的条件分支
‘判定胜负,显示结果
If user=computer Then
Msgbox s &”…平局!” -区域(1)
ElseIf computer=(user+1) Mod 3 Then
Msgbox s &”…玩家获胜!” -区域(2)
wins=wins+1 -区域(2)
Else
MsgBox s&”…计算机获胜!” -区域(3)
End If
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论