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
1700414450
Msgbox s &”…玩家获胜!” -区域(2)
1700414451
1700414452
wins=wins+1 -区域(2)
1700414453
1700414454
Else
1700414455
1700414456
MsgBox s&”…计算机获胜!” -区域(3)
1700414457
1700414458
End If
1700414459
1700414460
1700414461
1700414462
1700414464
计算机是怎样跑起来的 4.4 结构化程序设计
1700414465
1700414466
既然谈到了程序块,就再介绍一下结构化程序设计。诸位即便不曾亲身经历,也应该在什么地方听说过这个词吧。结构化程序设计是由学者戴克斯特拉提倡的一种编程风格。简单地说,所谓结构化程序设计就是“为了把程序编写的具备结构性,仅使用顺序结构、条件分支和循环表示程序的流程即可,而不再使用跳转指令”。“仅用顺序执行、条件分支和循环表示程序的流程”这一点是不言自明的,需要注意的是“不使用跳转指令”这一点
1700414467
1700414468
作为计算机硬件上的行为,无论是条件分支还是循环都必须使用跳转指令来实现,但是在VBScript等高级语言中,可以用If-ElseIf-Else-End If程序块表示条件分支,用For-Next程序块表示循环。跳转指令因此变得可有可无了。但即便如此,在很多高级语言中,还是提供了与机器语言中跳转指令相当的语句,例如VBScript中的GoTo语句。其实戴克斯特拉想表达的是“既然好不容易使用上了高级语言,就别再使用相当于跳转指令的语句了。即便不使用跳转语句,程序的所有流程仍然可以表述出来”。他这样说是因为跳转指令所带来的危害性不小,会使程序陷入到流程错综复杂的状态,就像意大利面条那样缠绕在一起(如图4.11所示)
1700414469
1700414470
图4.11 跳转指令(GoTo语句)使程序陷入“意大利面条”的状态
1700414471
[
上一页 ]
[ :1.700414422e+09 ]
[
下一页 ]