打字猴:1.700414434e+09
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
1700414463 计算机是怎样跑起来的 [:1700412649]
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
1700414472
1700414473
1700414474
1700414475 在程序设计的世界中,如果看到了以“结构化”开头的术语,就可以这样认为:程序的流程是由程序块表示的,而不是用GoTo语句等跳转指令实现的。例如,微软的.NET框架所提供的新版BASIC语言Visual Basic .NET中,就以增加新语法的方式加入了称为“结构化异常处理”的错误判断机制。这里据说的异常类似于错误
1700414476
1700414477 在旧版本的Visual Basic中,一旦发生了错误,程序的流程就会跳转到执行错误处理的地方。用程序块来表示这种错误处理方式的机制,就是结构化异常处理。在Visual Basic .NET中,用Try-Catch-EndTry程序块来表示结构化异常处理(如代码清单4.4所示)。但即便使用了结构化异常处理,在硬件上使用的也还是跳转指令,只是说在高级语言中不用再写相当于跳转指令的语句了。如果把用高级语言所编写的程序转换成机器语言,像结构化异常处理这样的语句还是会被转换为跳转指令
1700414478
1700414479 代码清单4.4 原始的错误处理机制和结构化异常处理的区别
1700414480
1700414481 (1)旧版本的Visual Basic用跳转指令(GoTo语句)实现错误处理
1700414482
1700414483 On Error GoTo ERR_HANDLER     -使用了GoTo语句
[ 上一页 ]  [ :1.700414434e+09 ]  [ 下一页 ]