为什么不赞成使用goto语句(C语言)

为什么不赞成使用goto语句?上课写了一句goto语句,被老师批了。
goto不是蛮好用的。详细点,拜托。

C语言是面向过程的语言,在编程的时候,一般会遵从结构化程序设计的要求。
结构化程序设计要求模块单入口,单出口,而goto语句则容易破坏这种结构,所以不建议使用。
但这并不是强制的,只是一种建议,有时goto可以大幅度简化代码量,在保证代码足够清晰明确下,偶尔使用也是可以的。

以下为结构化程序设计的相关概念:

最早由E.W.Dijikstra在1965年提出的,是软件发展的一个重要的里程碑。它的主要观点是采用自顶向下、逐步求精及模块化的程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环三种基本控制结构构造。结构化程序设计主要强调的是程序的易读性。
结构化程序设计曾被称为软件发展中的第三个里程碑。该方法的要点是:
(1) 主张使用顺序、选择、循环三种基本结构来嵌套连结成具有复杂层次的“结构化程序”,严格控制GOTO语句的使用。用这样的方法编出的程序在结构上具有以下效果:
a. 以控制结构为单位,只有一个入口,一个出口,所以能独立地理解这一部分。
b. 能够以控制结构为单位,从上到下顺序地阅读程序文本。
c.由于程序的静态描述与执行时的控制流程容易对应,所以能够方便正确地理解程序的动作。
(2)“自顶而下,逐步求精”的设计思想,其出发点是从问题的总体目标开始,抽象低层的细节,先专心构造高层的结构,然后再一层一层地分解和细化。这使设计者能把握主题,高屋建瓴,避免一开始就陷入复杂的细节中,使复杂的设计过程变得简单明了,过程的结果也容易做到正确可靠。
(3)“独立功能,单出、入口”的模块结构,减少模块的相互联系使模块可作为插件或积木使用,降低程序的复杂性,提高可靠性。程序编写时,所有模块的功能通过相应的子程序(函数或过程)的代码来实现。程序的主体是子程序层次库,它与功能模块的抽象层次相对应,编码原则使得程序流程简洁、清晰,增强可读性。
(4) 主程序员组。
其中(1)、(2)是解决程序结构规范化问题;(3)是解决将大划小,将难化简的求解方法问题;(4)是解决软件开发的人员组织结构问题。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-06-03
使用goto编写的程序逻辑性差,可读性差
不过在退出多重循环的时候 建议使用
第2个回答  2009-06-03
降低效率,降低可读性,破坏程序结构化
一般goto用来跳出多级循环
第3个回答  2009-06-03
达不到现在所赞成使用的"结构化".

如果代码多了,跳来跳去感觉很乱,个人认为
第4个回答  2009-06-03
goto语句会破坏“结构化”。
不但带来编程的混乱,而且容易出错。
打个比方,比如你生产一个机器,你会希望零件之间不要发生太紧密的联系,一般用螺丝之类的来连接。如果你把两个零件用电焊焊死,那么一旦一个零件出错,另一个也会受到影响。
goto起的作用就像把零件焊死一样。如果程序某一部分因为某种原因必须改动,可能会导致整个程序产生巨大的修改工作量。本回答被提问者采纳

c语言为什么不能用goto写循环
goto是一个有争议的语句,许多书本建议少用或不用它,是因为它是无条件跳转目标,不符合结构化程序设计的思想,还有就是从程序书写规范和易读角度说,经常使用goto语句会使代码混乱(你没事跳转来跳转去 ,会搞得整个程序,只有你自己看得懂,也许跳个十几次之后,你自己也会看不懂)。goto语句不是不...

...一些判断时很实用,但为什么书上说宁愿加强循环也不用goto语句...
goto语句也称为无条件转移语句,在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。1968年,Edsger Wybe Dijkstra 首先提出“GOTO语句是有害的”论点,向传统程序设计方法提出了挑战,从而引起了人们对程序设计方法讨论的普遍重视。主要理由是:GOTO语句使程序...

为什么都不建议用goto语句进行跳转呢?
GOTO语句使程序的静态结构和动态结构不一致,从而使程序难以理解,难以查错。goto语句的结果:在C\/C++等高级编程语言中保留了goto语句,但被建议不用或少用。在一些更新的高级编程语言,如Java不提供goto语句,它虽然指定goto作为关键字,但不支持它的使 用,使程序简洁易读;尽管如此后来的c#还是支持goto...

为什么C语言中的go to 语句老师说要小心使用?注意的地方是什么?_百度...
goto语句称为无条件转移语句,通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能。但是,在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。而且,goto语句一般可以用其他语句来代替。当然,goto语句也有其优势,例如可以用goto语句一次...

求助C语言goto语句错误
最好不要使用goto,使用goto会使程序可读性差。而且还是单片机在中断程序里使用goto,这个坏习惯,得改。

为什么都不建议用goto语句进行跳转呢?我觉得挺方便啊!
用他的话来说就是:“在有些情形,我主张删掉GOTO语句;在另外一些情形,则主张引进GOTO语句。”后来,G·加科皮尼和C·波姆从理论上证明了:任何程序都可以用顺序、分支和重复结构表示出来。这个结论表明,从高级程序语言中去掉GOTO语句并不影响高级程序语言的编程能力,而且编写的程序的结构更加清晰。goto...

goto语句是有害的吗?
可以说是有害的。因为在程序调试时不容易发现错误在那里。可以说是不赞成多用GOTO语句。但也不反对用的。既然有这个语句就一定有他的作用的。

为什么说GOTO有害?
主要批评goto的有2个原因:1、降低代码的可读性。很多人管这类代码叫做Spaghetti code,说的就是代码写出来像是这么的一堆:另外早期像Basic这样频繁使用goto的语言都是有行号的,如果大量使用goto的话可能会造成代码的行号异常复杂,更加难读;2、现在程序语言普遍的做法是用if-then-else这种结构来代替...

C语言中goto的用法
1. goto 语句的缺点 尽管 goto 语句在日常编程中不常被提及,但它存在一个致命的缺点:滥用 goto 语句可能导致逻辑混乱,从而引发系统崩溃等问题。因此,尽管它有时能简化代码,但在大多数情况下,我们更倾向于使用其他控制流程的结构。2. goto 语句的结构与用法 goto 语句的基本结构通常包含一个标签(...

goto的优点与缺点?
使用goto语句的缺点:1、使用goto语句,因为它会使程序逻辑非常复杂,不易阅读。2、使用goto使得分析和验证程序(尤其是涉及循环的程序)的正确性的任务非常困难。1968年,E·W·代克斯特拉首先提出“GOTO语句是有害的”论点,向传统程序设计方法提出了挑战,从而引起了人们对程序设计方法讨论的普遍重视。

相似回答