计算机系统概论第六章.pdfVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

第六章程序设计

现在,我们已经为编写计算机程序解决问题做好了准备工作。在本章,我们将讨论两个

问题:第一,一种构建程序的方法;第二,一种修正程序的方法(如果那些程序在第一次运

行时不能正常工作)。习惯上,程序中的错误被称为bug,去除错误的过程被称为调试(debug)。

然而在一个复杂的程序中,bug出现的几率非常大,以至于让程序能够正常工作(调试)所

花费的时间要比编写程序花费的时间多得多。

6.1解决问题

6.1.1系统分解

在1.7节,为了让电子解决一个问题,需要通过好几层的转换才能使一个自然语言描述

的问题(这里指英语,尽管也许你更喜欢意大利语,汉语普通话,北印度语或其他的语言)

转变成电子可以解决的工作。一旦我们对一个问题有了自然语言的描述,下一步就是把这个

问题转换成算法,也就是说,将这一问题转换成一个逐步执行的程序,这个程序有:有限性

(它有终结),明确性(每步是清晰表述的),和有效可计算性(每一步都可以被计算机执行)

的特性。

在上个世纪六十年代末,出现了结构化程序设计的概念,它成为提高一般程序员能力之

路。这种能力包括将一个描述复杂的问题,系统地分解成足够小和可管理的单元,从而最终

可以编写成可以正确执行的程序。因为该机制是将一个大规模的工作,系统地分解为更小的

单元,因此也被称为“系统分解”。

为了设计出计算机程序来解决复杂的任务,系统分解的模型是极为行之有效的技术。

6.1.2三种结构:顺序,条件,重复

系统分解实际上是执行任务的过程,即:对于一个工作单元,将它分解成一组更小的单

元,而这组单元可以执行与大单元相同的任务。这种思想实际就是:从一个大的、复杂的任

务开始,逐步将之分解直到非常小的单元,然后,对于这些小单元,我们是可以很容易就能

编写出程序来执行它们的。既然该过程是一步一步被应用,而每一步都是将一个相对复杂的

任务精炼成一组更简单的子任务,那么这种过程也可以称为“逐步求精”。

这种思想就是用一种可以正确分解一个大规模任务的结构来取代该任务。有三种基本的

结构:顺序,条件和重复。

顺序结构(图6.1b),就是将一个指定的任务分解成两个子任务,一个接着一个。也就

是说,当执行完第一个子任务之后再继续执行下一个子任务——而从第二个子任务返回第一

个子任务的情况永远不会发生。

条件结构(图6.1c),根据条件的不同每次只执行两个子任务中的其中一个。当条件为

真时,执行某一个子任务,若为假则执行另一个。任何一个子任务都可以为空,也就是说,

它可以“什么都不做”。但不管结果如何,当正确的子任务执行完后,程序始终向前行进,

并且永远不会回头去再次测试条件。

重复结构(图6.1d),只要条件为真就需要将某一个子任务多次执行时就将使用这种程

序结构。当条件为真,执行这一子任务;子任务执行结束后,回头再次检测条件是否为真。

只要被测试的条件为真,程序就会继续执行这一相同子任务。一旦条件不为真,程序就向前

行进。

在图6.1中,“盒子”代表任务。无论6.1a代表什么任务,工作都起始于从盒子顶部进

入的箭头,结束于从盒子底部出来的箭头。对于6.1a存在的三种可能的分解结构

(6.1b,1c,1d),都“只有一个入口进入结构”,并且“只有一个出口从结构出来”。因此,无

论应用哪一种分解结构,我们都能很容易的代替6.1a这个任务。我们将在下面的例子中看

到这是如何实现的。

6.1.3实现三种结构的LC-3控制指令

在接触第一个例子之前,首先用图解的方法显示如何用LC-3控制指令指导程序计数器

实现这三种分解结构。6.2b,6.2c,6.2d分别对应了6.1b,6.1c,6.1d这三种结构。

使用字母A,B,C,D表示存储有LC-3指令的存储器地址。例如在这三种情况中,A

被用于代表第一条被执行的LC-3指令的地址。

图6.2b显示了“顺序”分解的控制流程。因为PC从地址B1递增为地址B1+1,不需

要控制指令。程序将继续执行指令直到地址D1,永远不能回到第一个子任务。

图6.2c显示了“条件”分解的控制流程。首先,生成一个条件,这将导致某个条件码

被设置。条件由地址B2中的“条件分支指令”测试。如果条件为真,PC被设置为地址C2+1,

子任务1被执行。(注意:x对应于子任务2的指令数目)

文档评论(0)

138****7909 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档