程序设计的思想

最近,重新翻阅了一下谭浩强老师的经典著作《C程序设计(第四版)》。才发现,里面有好多比较深刻的思想,在第一遍学的时候根本就没有感受到。再一次感受到了一本好书值得翻来覆去的好好通读。下面是自己看到的个人觉得比较精髓的点:

1.著名计算机科学家沃斯提出的公式:算法+数据结构=程序。算法:对操作的描述,即要求计算机进行操作的步骤;数据结构:在程序中要用到哪些数据以及这些数据的类型和数据的组织形式。

2.程序设计人员应该具备的四个方面的知识:算法、数据结构、程序设计方法和语言工具。四个方面中,算法是灵魂,数据结构是加工对象,语言是工具,编程需要采用合适的方法。

3.结构化程序的设计方法基本思路:把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。方法是:自顶而下、逐步细化、模块化设计、结构化编码。自顶而下意味着,在进行程序设计之前,先进行程序的整体规划,程序可以分为哪几个部分来写,逐步细化地分析每个部分实现什么样的功能,几个部分如何衔接起来。打个不太恰当的比方,就像计算机网络的7层体系结构一样,每一层仅实现自己的功能,然后传球给下一层。而在每一层中,又有具体的一些设计。模块化设计的思想告诉我们,一个很复杂的功能可能很难上手编程,但如果把这个复杂功能分成多个简单的功能,那么仅对这个简单的功能进行编程实现是很容易做到的。而后面我们只需要把多个简单的功能拼接起来就可以了。结构化编码,就是运用顺序、选择、循环三种基本结构编写程序。

4.具体来说,如果程序的功能比较多,规模比较大,把所有的程序代码都写在一个主函数(main函数中),就会使主函数变得庞杂。所以在设计一个较大的程序时,往往把它分为若干程序模块,每个模块包含一个或多个函数,每个函数实现一个特定的功能。一个C程序可由一个主函数和若干个其他函数构成。或者说一个C程序由一个或多个程序模块组成,每一个程序模块作为一个源程序文件。对较大的程序,一般不希望把所有内容全放在一个文件中,而是将它们分别放在若干个源文件中,由若干个源程序文件组成一个C程序。这样便于分别编写和编译,提高调试效率。一个源程序文件可以为多个C程序共用。

5.一个C程序由多个源文件组成时,若一个文件中想引用另一个文件中定义的外部变量,则应该在该文件中用extern做外部变量声明。

还有一段话,我也是感觉说得特别好:学习程序设计的目的不只是学习某一种特定的语言,而应当学习进行程序设计的一般方法。掌握了算法就是掌握了程序设计的灵魂,再学习有关的计算机语言的知识,就能够顺序地编写出任何一种语言的程序。脱离具体的语言去学习程序设计是困难的。但是,学习语言只是为了设计程序,它本身绝不是目的。高级语言有很多种,每种语言也都在不断发展,因而千万不能拘泥于一种具体的语言,而应当能举一反三。关键是设计算法,有了正确的算法,用任何语言进行编码都不是什么困难的事。

程序设计的思想(结构化编程)相关推荐

  1. windows程序设计相关思想

    就我个人观点,C++/MFC 程序设计必须跨越四大技术障碍: 1. 对象导向观念与C++ 语言. 2. Windows 程序基本观念(程序进入点.消息流动.窗口函数.callback...). 3.  ...

  2. Java面向对象编程的程序设计(OOP)思想

    文章目录 面向对象(oop) 封装 继承 多态 抽象类(abstract) 类型转化(instanceof) static关键字 面向对象(oop) 面向对象程序设计(Object Oriented ...

  3. 在程序设计中思想(算法)的重要性(2013.10.7)

    研一的时候实训做的是形成记录系统,当时还做过下载系统,以及老师网络课的作业局域网IP监控.实训的项目其实没有什么设计,很多难点都是通过软酷公司给的DEMO分析解决的(这也是无奈之举,初步接触,很多不熟 ...

  4. 浅谈单片机程序设计中的“分层思想”

    "分层思想"并不是什么神秘的东西,事实上很多做项目的工程师本身自己也会在用.看了不少帖子都发现没有提及这个东西,然而分层结构确是很有用的东西,参透后会有一种恍然大悟的感觉.如果说我 ...

  5. 浅谈单片机程序设计中的“分层思想”!

    浅谈单片机程序设计中的"分层思想",并不是什么神秘的东西,事实上很多做项目的工程师本身自己也会在用.看了不少帖子都发现没有提及这个东西,然而分层结构确是很有用的东西,参透后会有一种 ...

  6. 三层架构与设计模式思想部署企业级数据库业务系统开发

    1. 三层架构介绍 1.1关于架构 架构这个词从它的出现后,就有许许多多的程序员.架构师们激烈地讨论着它的发展,但是架构一词的出现,却是随着三层架构的出现才出现的.当然,目前应用三层架构开发也正是业界 ...

  7. 编程范式-结构化编程

    本系列文章会依次介绍三个主要的编程范式,它们分别是结构化编程(structured programming).面向对象编程(object-oriented programming)以及函数式编程(fu ...

  8. c语言程序设计入门导论,程序设计入门——C语言

    spContent=C语言是古老而长青的编程语言,它具备了现代程序设计的基础要求,它的语法是很多其他编程语言的基础,在系统程序.嵌入式系统等领域依然是无可替代的编程语言,在各类编程语言排行榜上常年占据 ...

  9. c语言程序设计0039大作业答案,2019西南大学0039C语言程序设计机考大作业答案.doc...

    - PAGE 1 - 西南大学网络与继续教育学院课程考试试题卷 类别: 网教 2019年 6月 课程名称[编号]: C语言程序设计 [0039] A卷 大作业 满分:100 分 一.大作业题目 1.简 ...

最新文章

  1. AI吉尼斯:那些你不知道的人工智能之“最”
  2. intellij idea cpu占用率太大太满 运行速度太慢解决方案
  3. abp core版本添加额外应用层
  4. 特斯拉 神经网络计算机,特斯拉即将推出神经网络计算机 或大幅提升Autopilot性能...
  5. nginx reload热加载实现
  6. 阵列信号处理及matlab实现_数字阵列雷达:发射数字波束形成
  7. java pv uv_使用Spark计算PV、UV
  8. Word中如何输入花体数学字符
  9. Qt点击按钮两次才弹出菜单如何解决
  10. 数据分析 之八种方法
  11. 华为网络设备查看设备温度状态检查命令方法
  12. Java实现按分数排名,同分同名次
  13. *TEST 6 for NOIP + NOIP初赛
  14. 构建一阶谓词逻辑和有限域上多项式方程的同构
  15. 计算机组成原理学习 笔记三
  16. An 8-year-old English girl who called out a major retailer as
  17. 安卓多人聊天室服务端
  18. Libxml2使用指南
  19. JAVA 基础 day-27 练习 线程与线程安全
  20. 怎么把图片压缩到30k以内?如何图片压缩到指定大小?

热门文章

  1. java 实现向pdf模板写入数据。并重新生成一个新文件
  2. Python拼接视频
  3. 3000 帧定格动画告诉你什么是 DevOps
  4. 林中有两条路,你永远只能走一条,怀念另一条
  5. C#中List集合的排序方法总结
  6. 打开ftp服务器上的文件夹时发生错误解决方法
  7. 如何安装M30T磁致伸缩式电子水尺?
  8. 2 - 组合逻辑代码设计和仿真
  9. 夯实云网融合,迈向算网一体
  10. 新买的计算机桌面只有两个软件怎么搞,新买的电脑,这些常用软件必须要装