网站大量收购闲置独家精品文档,联系QQ:2885784924

第16讲少见的控制结构.PDF

  1. 1、本文档共117页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 16 章 少见的控制结构 234 第第 1166 章章 少见的控制结构少见的控制结构 第第 1166 章章 少见的控制结构少见的控制结构 目录目录 目录目录 16.1 goto 语句 16.2 return 语句 16.3 递归调用 16.4 小结 相关章节相关章节 相关章节相关章节 经常碰到的有关控制的几个问题:见第 17 章 条件编码:见第 14 章 循环的代码:见第 15 章 在结构化程序中,有几个控制结构比较特别,它们不是典型的结构化结构,但也不是无结 构可言。这种情况不是任何语言都有。 116.6.11 gotogoto 语句语句 116.6.11 gotogoto 语句语句 计算机科学家对他们的观点都热心,有许多共同点,但讨论一旦转向 goto 语句,他们之间 就表现出针锋相对的两种意见了。 若一种语言不支持结构化控制,那么用 goto 来模仿起来结构化的作用时,是无人有意见的。 问题出在那些支持结构化程序结构的语言中,这些语言中,理论上 goto 是不需要的,因此用了 就引起很大争论。下面是两派意见的总结。 116.6.11..11 反对用反对用 gotogoto 的意见的意见 116.6.11..11 反对用反对用 gotogoto 的意见的意见 反对用 goto 的一方总的观点是不用 goto 的代码质量高。最早提出这争论的 Edsger Dijkstra 的一句名言是:“考虑goto 语句是有害的”。Dijkstra 经观察后认为,程序语句的质 量与所用 goto 数目成反比。因此他认为不用 goto 语句的程序更容易检查错误。 含 goto 的代码不利于格式化。在有逻辑结构的程序中,往往用到了缩排形式,而 goto 则 影响结构化设计。想用缩格的结构去表示含 goto 的程序很难,几乎不可能。 用 goto 影响了编译程序的优化。无条件的 goto 语句使程序流很难分析,且降低编译程序 对代码的优化能力。因此,即使 goto 语句使源程序显得有效率,但在编译程序优化时却费事 了。 Goto 的拥护者总是认为,goto 语句使他们在编码时既快且省。但含 goto 的程序几乎很难 有最快和最短的可能。Donald Knath 在有名的文章《Structured Programming with go to statement》中给出了几个用 goto 传代码效率低,目标大的例子 (1974)。 实际上,goto 的使用常破坏了结构化程序的原则,即使很仔细地用 goto 且不引起混乱, 第 16 章 少见的控制结构 235 一旦用了 goto 语句,整个程序的质量都受到影响,因此最好一个 goto 也别用。 116.6.11.2.2 支持用支持用 gotogoto 的意见的意见 116.6.11.2.2 支持用支持用 gotogoto 的意见的意见 支持用 goto 的人认为:在某些特殊环境下使用 goto 是有好处的。大多数反对 goto 的人反 对普遍用它。对 goto 的争论发生在 Fortran 成为最盛行的语言时。Fortran 没有提供很好的循 环结构。若没有注意到含 goto 的循环结构性不好的话,程序员写出来的程序流就到处转移。这 种代码无疑是质量很低的,但仅想着怎样用好 goto,又能有什么改进呢?因为 goto 与程序结 构化能力还有那么一截 的距离呢? 用 goto 语句恰到好处,可减少对同一程序段的多次复制,复制代码段引起各种麻烦:当要 同时修改这些复制部时易出错,复制代码增加了源文件和执行文件的长度。在这种情况下,goto 就显得比复制代码好 了。 若一个程序要求光分配资源,对资源进行处理,然后重新分配资源,这时 goto 就很有用了。 用 goto 你可 以在一个代码段中进行修改 。当你在每个地方查错时,用 goto 你忘记重新分配资 源的可能性减少了。 有时,用 goto

文档评论(0)

133****0075 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档