Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
社区首页 >专栏 >为什么三种基本的程序结构就够了?

为什么三种基本的程序结构就够了?

作者头像
用户6755376
发布于 2020-03-27 05:02:22
发布于 2020-03-27 05:02:22
1.7K0
举报
文章被收录于专栏:计算机二级C语言

需要编程解决的问题逻辑纷繁复杂,程序设计语言里面为什么只有三种基本的程序结构就够用了?

对于程序设计语言中的三种基本结构:顺序、选择、循环,大家应该都比较熟悉了,确实也只有这些。

其实,这个问题是经过严格证明过的。1966年,计算机科学家 Bohm 和 Jacopini 证明了这样的事实:任何简单或复杂的算法都可以由顺序结构、选择结构和循环结构这三种基本结构组合而成。所以,这三种结构就被称为程序设计的三种基本结构。也是 结构化程序设计 必须采用的结构。想详细了解的可以去看下论文:Bohm C., Jacopini G. "Flow diagrams, Turing machines and languages with only two formation rules." Communications of the Association for Computing Machinery, Vol.9, pp. 366--371. 1966.

荷兰学者Dijkstra1968年提出了“结构化程序设计”的思想,它规定了一套方法,使程序具有合理的结构,以保证和验证程序的正确性,这种方法要求程序设计者不能随心所欲地编写程序,而要按照一定的结构形式来设计和编写程序,它的一个重要目的是使程序具有良好的结构,使程序易于设计,易于理解,易于调试修改,以提高设计和维护程序工作的效率。

结构化程序规定了以下三种基本结构作为程序的基本单元: 以上三种基本结构可以派生出其它形式的结构.由这三种基本结构所构成的算法可以处理任何复杂的问题.所谓结构化程序就是由这三种基本结构所组成的程序.可以看到,三种基本结构都具有以下特点:①有一个入口.②有一个出口.③结构中每一部分都应当有被执行到的机会,也就是说,每一部分都应当有一条从入口到出口的路径通过它(至少通过一次).④没有死循环(无终止的循环).

按结构化程序设计方法设计出的程序优点是:结构良好、各模块间的关系清晰简单、每一模块内都由基本单元组成。这样设计出的程序清晰易读,可理解性好,容易设计,容易验证其正确性,也容易维护。同时,由于采用了“自顶向下、逐步细化”的实施方法,能有效地组织人们的智力,有利于软件的工程化开发。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 计算机二级C语言 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C语言算法-学习二
本文最后更新于2022年01月24日,已超过35天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
XG.孤梦
2022/02/28
2.7K0
C语言算法-学习二
程序设计语言介绍及调试技巧
什么是计算机程序? 答:所谓的程序就是计算机能识别和执行的指令,每一条指令使计算机执行特定的操作,程序和指令是计算机系统中最基本的概念。
全栈工程师修炼指南
2020/10/23
7140
程序设计语言介绍及调试技巧
标准C语言程序设计第七版pdf,C语言程序设计(向华)7.pdf[通俗易懂]
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/15
1K0
大模型写代码能力突飞猛进,北大团队提出结构化思维链SCoT
大型语言模型(下文称为:大模型)在代码生成上表现出了强大的能力。大模型依赖于 prompt 作为输入,思维链是目前用于设计 prompt 的主流方法,在代码生成上取得了目前最好的准确率。但大模型的准确率依旧较低,无法用于实际生产环境。
机器之心
2023/09/19
1K0
大模型写代码能力突飞猛进,北大团队提出结构化思维链SCoT
结构化开发方法和面向对象开发方法的比较
结构化方法是一种传统的软件开发方法,它是由结构化分析、结构化设计和结构化程序设计三部分有机组合而成的。结构化设计方法是以自顶向下,逐步求精,模块化为基点,以模块化,抽象,逐层分解求精,信息隐蔽化局部化和保持模块独立为准则的设计软件的数据架构和模块架构的方法学。它的要点是是把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。
凯哥Java
2019/06/30
3.4K0
C语言 | 怎么解决问题
把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。
小林C语言
2021/03/15
3.4K0
C语言 | 怎么解决问题
2.1 C语言程序的灵魂
广义地说:为解决一个问题而采取的方法和步骤,就称为“算法”。计算机算法可以分为两大类:数值运算算法和非数值运算算法
小林C语言
2020/12/04
8260
2.1 C语言程序的灵魂
【C++】面向对象编程引入 ③ ( 面向过程编程的结构化程序设计方法 | 结构化程序设计方法概念 / 特点 / 优缺点 | 面向对象编程引入 )
如果使用 面向过程语言 ( 如 : C 语言 ) , 开发 大型 项目 , 一般使用 结构化程序设计方法 ;
韩曙亮
2023/10/15
2570
【C++】面向对象编程引入 ③ ( 面向过程编程的结构化程序设计方法 | 结构化程序设计方法概念 / 特点 / 优缺点 | 面向对象编程引入 )
开讲啦:Chap 02 算法 - 程序的灵魂
一个程序设计人员应具备算法、数据结构、程序设计方法以及语言工具四个方面的知识,其中算法是灵魂,数据结构是加工对象,语言是工具,编程需要采用合适的方法。
石璞东
2021/09/22
4980
二级选择题(三)
(1)有穷性:一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。
pigeon
2022/04/11
4390
考试大纲-上海市高等学校计算机等级考试(二级)《C程序设计》
昨天发布的真题练过手之后,感觉如何?是不是还有知识盲点?下面来对照下考试大纲,查遗补漏吧?
用户6755376
2019/11/20
1.4K0
《北京大学、腾讯联合在Coursera开设课程》分享有礼中奖信息
之前推送的《教授们说了,我们的目标是培养中国最优秀的程序员》分享有礼活动,中奖名单如下,恭喜幸运参与者!我们将按照问卷中填写的信息尽快邮寄奖品! 洪瑞琦 梓鑫 邢晓媚 张琼 余小娅 附原文 ---- 如果你看过美剧《Silicon Valley》,一定也曾有过“做个工程师”的想法。剧中,硅谷 Pied Piper 团队通过一套无损压缩算法,成功吸引到投资人,开始了有趣的“搅”机生活。 (左边小哥看上去挺落寞……他是里面唯一不懂编程的) 而在现实生活中,有一个叫Aaron Pollack 的学习者
腾讯高校合作
2018/03/20
1.3K0
《北京大学、腾讯联合在Coursera开设课程》分享有礼中奖信息
为什么不建议使用goto语句
现在老师上课基本上不怎么讲goto语句,很多文章也提到不建议使用,那到底是为什么呢?
用户6755376
2020/04/01
2.3K0
递归调用:程序整体性的优化锦囊
在数学及程序设计方法学中为递归下的定义是这样的:若一个对象部分地包含它自己,或用它自己来定义自己,则称这个对象是递归的;若一个过程直接或间接地调用自己,则称这个过程为递归的过程。
博文视点Broadview
2020/06/12
4970
递归调用:程序整体性的优化锦囊
Java笔记(1)
结构化程序设计非常强调实现某个功能的算法,而算法的实现过程是由一系列操作组成的,这些操作之间的执行次序就是程序的控制结构。
云深无际
2020/08/12
5680
Java笔记(1)
二级选择题
1、确定数据结构:根据任务书提出的要求、指定的输入数据和输出结果,确定存放数据的数据结构。
pigeon
2022/04/11
5090
C语言/C加加新手入门学习经验资料分享,基础知识大汇总!
C语言是面向过程的,而C++是面向对象的 相信这么努力的你 已经置顶了我 学习C语言始终要记住“曙光在前头”和“千金难买回头看”,“千金难买回头看”是学习知识的重要方法,就是说,学习后面的知识,不要忘了回头弄清遗留下的问题和加深理解前面的知识,这是我们最不易做到的,然而却又是最重要的。 学习C语言就是要经过几个反复,才能前后贯穿,积累应该掌握的C知识。 一 学好C语言的运算符和运算顺序 这是学好《C程序设计》的基础,C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。 在表达式方面较其它
企鹅号小编
2018/01/15
1.2K0
C语言/C加加新手入门学习经验资料分享,基础知识大汇总!
逆向工程-架构真题(二十)
1、结构化程序设计采用自顶向下、逐步求精及模块化程序设计方法,通过()三种基本控制结构可以构造出任何单入口单出口程序。
用户9919783
2023/09/05
2370
逆向工程-架构真题(二十)
附录B 编程的本质附录B 编程的本质编程的本质N小结编程简史名词纪要参考资料
尼古拉斯·沃斯(Niklaus Wirth,1934年2月15日—),生於于瑞士温特图尔,是瑞士计算机科学家。Pascal语言之父。
一个会写诗的程序员
2018/08/20
6580
附录B 编程的本质附录B 编程的本质编程的本质N小结编程简史名词纪要参考资料
面向对象程序设计的由来
最早的程序设计都是采用机器语言来编写的,直接使用二进制码来表示机器能够识别和执行的指令和数 据。简单来说,就是直接编写 0 和 1 的序列来代表程序语言。例如:使用 0000 代表 加载(LOAD),0001 代表 存储(STORE)等。 机器语言由机器直接执行,速度快,但一个很明显的缺点就是:写起来实在是太困难了,一旦你发现自己 写错了,改起来更蛋疼!这样直接导致程序编写效率十分低下,编写程序花费的时间往往是实际运行时间 的几十倍或几百倍。 有一个关于机器语言和比尔盖茨的笑话,是说比尔盖茨拿着绣花针在一张光盘上戳,把 Windows 给戳出 来了!但如果真的让你去戳,不要说 Windows,连一个简单的“Hello world”都要让人戳到眼睛冒烟!
py3study
2020/01/15
6320
推荐阅读
相关推荐
C语言算法-学习二
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 大模型知识引擎×DeepSeek实践征文