打字猴:1.7004144e+09
1700414400
1700414401
1700414402
1700414403 上面的内容稍微有些跑题,下面回到正题。在计算机硬件上的操作中,循环是通过当满足条件时就返回到之前处理过的步骤来实现的。一旦使用了机器语言或汇编语言所提供的跳转指令,就可以将PC寄存器的值设置为任意的内存地址。如果将PC寄存器的值设置为之前执行过的步骤所对应的内存地址,那么就构成了循环。因此,在表示循环的时候,正如图4.5(c)所示那样,仅仅使用带有菱形符号的流程也就足够了。用机器语言或汇编语言表示循环时,都是先进行某种比较,再根据比较结果跳转到之前的地址(如图4.8所示)
1700414404
1700414405 图4.8 从硬件上看循环的过程
1700414406
1700414407
1700414408
1700414409
1700414410 但现在还在使用机器语言或汇编语言的人已经不多了。程序员使用的都是能够更加高效地编写程序的高级语言,如BASIC、C或Java等。在这些高级语言中,程序员使用“程序块”表示循环而不是跳转指令。所谓“程序块”就是程序中代码的集合。程序中要被循环处理的部分,就是一种程序块。如图4.6所示的用帽子和短裤符号表示循环的方法就适用于使用了程序块的高级语言
1700414411
1700414412 代码清单4.2列出了从之前的“石头剪刀布游戏”中摘录出的程序块,这段代码用于循环双方的比试过程。由此可见,在VBScript中,是用For和Next两个关键字表示循环的程序块的。For对应着“帽子”,Next则对应着“短裤”。For的后面写有循环条件。For i=1 To 5表示用变量i存储循环次数,将i的值从1加到5,每进行1次循环就增加1,如果i的值超过了5循环就终止。画图时循环条件也要写在“帽子”中(如图4.9所示)
1700414413
1700414414 代码清单4.2 用高级语言表示循环
1700414415
1700414416 ‘进行5轮比试
1700414417
1700414418 For i=1 To 5            -相当于“帽子”
1700414419
1700414420   ‘处理步骤
1700414421
1700414422   …
1700414423
1700414424 Next                    -相当于“短裤”
1700414425
1700414426 图4.9 用流程图表示代码清单4.2中的程序
1700414427
1700414428
1700414429
1700414430
1700414431 用“帽子”和“短裤”表示循环结构没有什么问题,也使用高级语言编写的程序。但在直接表示硬件操作的机器语言和汇编语言中,是通过条件分支返回到之前处理过的指令来实现循环的,并没有相当于For或Next的指令。条件分支本身也是通过跳转指令实现的。根据比较操作的结果,跳转到之前处理过的步骤就是循环;跳转到之后尚未处理的步骤就是条件分支(如图4.10所示)
1700414432
1700414433 图4.10 从硬件上看条件分支的过程
1700414434
1700414435
1700414436
1700414437
1700414438 在高级语言中,条件分支也是由程序块表示的。在VBScript中,使用If、ElseIf、Else、End If表示条件分支的程序块。通过这几个关键字就可以形成一个被分成三个区域的程序块(如代码清单4.3所示)。如果If关键字后所写的条件成立,区域(1)中所写的代码就会被执行,形成分支。如果ElseIf后面所写的条件成立,区域(2)中所写的代码就会被执行,形成分支。当两个条件都不成立时,区域(3)中所写的代码就会被执行,形成分支。高级语言的条件分支代码块,可以用画有菱形符号的流程图表示
1700414439
1700414440 代码片段4.3 用高级语言表示的条件分支
1700414441
1700414442 ‘判定胜负,显示结果
1700414443
1700414444 If user=computer Then
1700414445
1700414446   Msgbox s &”…平局!”       -区域(1)
1700414447
1700414448 ElseIf computer=(user+1) Mod 3 Then
1700414449
[ 上一页 ]  [ :1.7004144e+09 ]  [ 下一页 ]