简答题

结构化程序设计有时被错误地称为“无GOTO语句”的程序设计。请说明为什么会出现这样的说法,并讨论环绕着这个问题的一些争论。

正确答案


早在1963年,针对当时流行的ALGOL语言,Peter Naur指出,在程序中大量地,没有节制地使用GOTO语句,会使程序结构变得非常混乱。但是很多人还不太注意这一问题。以致许多人写出来的程序仍然是纷乱如麻的。
1965年,E.W.Dijkstra在一次会议上提出,应当把GOTO语句从高级语言中取消。并指出,程序的质量与程序中包含的GOTO语句的数量成反比。在这种思想的影响下,当时新开发的几种高级程序设计语言,例如LISP、ISWIM、BLISS等,都把GOTO语句取消了。
1966年,Bohm与Jacopini证明了任何单入口单出口的没有“死循环”的程序都能由三种最基本的控制结构构造出来。这三种基本控制结构就是“顺序结构”、“选择IF-THEN-ELSE结构”、“重复DO-WHILE或DO-UNTIL结构”。
1968年,Dijkstra在写给(美国计算机协会通讯)杂志编辑部的信中再次建议从一切高级语言中取消GOTO语句,只使用三种基本控制结构编写程序。他的建议引起了激烈的争论。争论集中在如何看待GOTO语句的问题上。赞成取消GOTO语句的一方认为,GOTO语句对程序清晰性有很大破坏作用,凡是使用GOTO语句多的程序,其控制流时而GOTO向前,时而GOTO向后,常使程序变得很难理解,从而增加查错和维护的困难,降低程序的可维护性。但以D.E.Knuth为代表的另一方认为,GOTO语句虽然存在着破坏程序清晰性的问题,但不应完全禁止。因为GOTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写出的程序更加简洁,并且GOTO语句可直接得到硬件指令的支持。经过争论,人们认识到,不是简单地去掉GOTO语句的问题,而是要创立一种新的程序设计思想、方法和风格,以显著提高软件生产率和软件质量,降低软件维护的成本。
1970年代初N.Wirth在设计Pascal语言时对GOTO语句的处理可被当做对GOTO语句争论的结论。在Pascal语言中设置了支持上述三种基本控制结构的语句;另一方面,GOTO语句仍然保留在该语言中。不过,N.Wirth解释说,通常使用所提供的几种基本控制结构已经足够,习惯于这样做的人不会感到GOTO语句的必要。也就是说,在一般情况下,可以完全不使用GOTO语句。如果在特殊情况下,由于特定的要求,偶然使用GOTO语句能解决问题,那也未尝不可,只是不应大量使用罢了。
事实上,大量采用GOTO语句实现控制路径,会使程序路径变得复杂而且混乱,从而使程序变得不易阅读,给程序的测试和维护造成困难,还会增加出错的机会,降低程序的可靠性。因此要控制GOTO语句的使用。但有时完全不用GOTO语句进行程序编码,比用GOTO语句编出的程序可读性差。例如,在查找结束时,文件访问结束时,出现错误情况要从循环中转出时,使用布尔变量和条件结构来实现就不如用GOTO语句来得简洁易懂。

答案解析

相似试题
  • 通过分析程序源代码的系统结构、数据结构、数据接口、内部控制逻辑等,来检查程序中存在的错误的测试方法被称为()

    单选题查看答案

  • JACkson方法有时也称为()结构的软件设计方法。

    单选题查看答案

  • 反病毒扫描软件所采取的主要办法之一是(),有时也称为病毒特征。这些病毒特征是计算机程序代码字节,能惟一地识别某种类型的病毒。

    填空题查看答案

  • 结构化程序设计的思想可以简单地称为“(),(),()与()”的设计原则。

    填空题查看答案

  • 在广告语言中,有时直接引用原语不能有效地表达内容,于是创作者就将人们熟知的成语典故、诗文名句、格言俗语等加以改动,以符合该广告特定的表达需要,这种手法被称为().

    单选题查看答案

  • 管理信息系统概念结构图中,信息产生地被称为()。

    单选题查看答案

  • 代码审查作为一种人工测试技术,以通过召开代码审查会的方式进行。下面请按照代码审查会的过程进行排序。() ①请程序员逐个语句地讲述程序的逻辑结构。其间大家提出问题以断定是否存在错误。 ②把已查出的错误清单交给程序员。如果发现的错误很多,或发现有的错误需要对程序做重大更改,那么组织者就应做出安排,以便在这些错误得到修复之后重新进行会议审查。 ③根据常见程序错误检查清单分析程序。 ④组织者把被审查的程序清单和设计规范分发给小组的其他成员,要求他们熟悉这些材料。

    单选题查看答案

  • 在钢筋混凝土结构施工中,由于管理不善,检查不严,图纸含糊,理解错误等原因有时会遗漏钢筋,使构件所配钢筋数量不能满足设计要求。

    判断题查看答案

  • 岩浆岩中两种矿物相互穿插,有规律地生长在一起的现象被称为()结构。

    单选题查看答案