打字猴:1.700414227e+09
1700414227 计算机是怎样跑起来的 [:1700412645]
1700414228 计算机是怎样跑起来的 本章重点
1700414229
1700414230 本章的主题是程序的流程。程序员一般都是先考虑程序的流程再开始编写程序的。只有编写过程的人才能体会到“程序是流动着的”。一个人编写的程序如果不能按照预期运行,就说明他还没有很好地掌握“程序是流动着的”这一概念。
1700414231
1700414232 为什么说“程序是流动着的”呢?因为作为计算机大脑的CPU在同一时刻基本上只能够解释、执行一条指令。把指令和作为指令操作对象的数据排列起来就形成了程序。请想像把若干指令一条挨一条地依次排列到一条长长的纸带上,然后把这条纸带展开拉平,从顶端开始依次解释并执行上面的每条指令,这样看起来程序就好像流动起来了。这就是程序的流程。但程序的流程并不是只有一种。那么下面就先介绍一下程序流程的种类
1700414233
1700414234
1700414235
1700414236
1700414237 计算机是怎样跑起来的 [:1700412646]
1700414238 计算机是怎样跑起来的 4.1 程序的流程分为三种
1700414239
1700414240 各位读到此处,应该能够从硬件上想像出计算机的运作方式了。计算机的硬件系统由CPU、I/O和内存三部分构成。内存中存储着程序,也就是指令和数据。CPU配合着由时钟发生器发出的滴答滴答的时钟信号,从内存中读出指令,然后再依次对其进行解释和执行
1700414241
1700414242 CPU中有各种各样的各司其职的寄存器,其中一个称为PC(Program Counter,程序计数器)的寄存器,负责存储内存地址,该地址指向下一条即将执行的指令,每解释执行完一条指令,PC寄存器的值就会自动被更新为下一条指令的地址
1700414243
1700414244 PC寄存器的值在大多数情况下只会增加,下面假设PC寄存器正指向内存中一个从10号地址开始的3字节指令。CPU解释执行完这条指令后,PC寄存器中的值就变成10+3=13了,也就是说,程序基本上是从内存中的低地址(编号较小的地址)开始,向着高地址(编号较大的地址)流下去的。我们把程序的这种流动称为“顺序执行”(如图4.1所示)
1700414245
1700414246 图4.1 硬件上的程序流程(顺序执行)
1700414247
1700414248
1700414249
1700414250
1700414251 程序的流程总共有三种。除了顺序执行外,还有“条件分支”和“循环”,因为只有这三种,记忆起来还是很轻松的
1700414252
1700414253 正如上文所述,顺序执行是按指令记录在内存中的先后顺序依次执行的一种流程。而循环则是在程序的特定范围内反复执行若干次的一种流程。条件分支是根据若干个条件的成立与否,在程序的流程中产生若干个分支的一种流程。无论规模多么大多么复杂的程序,都是通过以上三种流程组合起来实现的
1700414254
1700414255 程序的三咱流程正像是河流本身,从高山的泉眼中涌出的清泉形成河流的源头(程序执行的起点)。水流从山中缓缓流下,有时向着一个方向流淌(顺序执行),有时中途分出了支流(条件分支),还有时由于地势卷起了漩涡(循环)。难道程序的流程不美吗?完全就像是裱在画卷上的山水画一样(如图4.2所示)
1700414256
1700414257 图4.2 程序的三种流程
1700414258
1700414259
1700414260
1700414261
1700414262 还有一种称为“无条件分支”的流程,它就仿佛是瓢泼大雨引发的山洪,突然就向着某处流去了,可以认为这是一种特殊的条件分支。
1700414263
1700414264 虽然可能不如山水画那样优美,但还是要给大家展示一段简单的程序。代码清单4.1中列出了用VBScript(Visual Basic Scripting Edition)编写的“石头剪刀布游戏”的代码,VBScript是BASIC语言的一个版本。该程序可以在Windows 98/ME/2000/XP操作系统上运行(用于执行VBScript程序的WSH(Windows Script Host)已作为标准组件被集成在Windows 98/Me/2000/XP操作系统中)玩家和计算机进行五轮石头剪刀布比赛,比完后显示玩家获胜的次数
1700414265
1700414266 请用记事本等文本编辑器编写这个程序,并存储到扩展名为.vbs的文件中。只要双击保存后的文件,程序就可以执行了
1700414267
1700414268 图4.3 代码清单4.1执行后的结果
1700414269
1700414270
1700414271
1700414272
1700414273 代码清单4.1 用VBScript编写的“石头剪刀布游戏”
1700414274
1700414275 ‘初始化表示手势的变量
1700414276
[ 上一页 ]  [ :1.700414227e+09 ]  [ 下一页 ]