自顶向下编程思考方法

为了解决某些问题,要编写一个程序。如何开始呢?
        当遇到一个新问题时,我们心里会自然而然的产生这样的想法:

马上坐在计算机前,开始编程,而不用浪费大量的时间思考我们所要解决的问题是什么?

用这种不切实际的想法来编一些非常小的程序可能会成功。但在现实中,问题可能会非常的大,程序员再用这种方法编程将会陷入困境。对于一个大的程序来说,在编写代码之前你要通盘的思考你所要面临的问题和解决的方法。

正式的编程设计步骤,然后应用这个步骤来编写大的应用程序。对于我们所遇到一些简单的例子来说,这个步骤好像有些画蛇添足。但是当我们解决的问题变得越来越大的时侯,这个步骤将会变得异常重要。“编程很简单,因为我知道在编程的过程的困难”。在工作中遇到的大多数困难都是对所要解决问题的理解。

一旦你真正理解了问题,你就会把这个问题分解成许多小的问题,更加易于管理的小块,然后逐一解决某一个小
块。自上而下的编程方法是编程设计的基础

步骤及其细节。步骤如下:

1.清晰地陈述你所要解决的问题

编写的程序大多数情况下要满足一些感觉上的需要,但这种需要不一定能够被人清晰地表达出来。例如,用户需要一个解线性方程组的表达式。像这样的要求就不够清楚,程序员就很难编出一个使他满意的程序。他必须弄清楚要有多少问题需要解决?在这些方程式中有没有对称的形式使我们的开发变得简单?程序设计者必须和使用者讨论所需的程序,他们必须要对完成的任务有一个精确细致的描述。对问题清晰的描述可以防止误解,并且能够帮助程序员合理的组织他的思想。

上面的例子对问题合适的陈述应为:设计一个用于解决联立线性方程组的程序,这些方程中未知数的系数为实数,最多有20 个未知数。

2.定义程序所需的输入量和程序所产生的输出量

指定输入量和输出量,只有这样新的程序才能适应全过程计划。在这个例子中方程式的系数可能有其预先存在的顺序,我们的新程序必须能按照顺序读取它们。相似地,也需要产生出这个程序所要求的结果,即输出量,我们还要以一定的格式打印出来。

3.设计你的程序得以实现的算法

算法是指为某个问题找到答案一步接一步的程序。

在这个阶段自上而下的编程方法发挥了作用。

编程设计者开始对这个问题进行逻辑划分,把它逐步分解为一个又一个子工作。这个过程叫做分解(decomposition)。

如果一些子工作还是比较大,设计者还可以把他它分解成更小的块。

这个过程将会继续到问题被分解成许多简单且易理解的小块为止。

在问题被分解成小块之后,每一个小块要被进一步的求精,这个过程叫做逐步求精(stepwise refinement)。

在这个过程中,设计者开始于对本小块代码总括性的描述,然后开始一步一步地定义所需的函数,越来越具体,直到他能够转化为程序语言。

逐步求精的过程中,我们要用到的伪代码将会在下节为大家介绍。

在算法开发过程中,这个方法是非常有用的。如果设计者真正理解了解决问题这个些步骤,他将会对问题进行分解和逐步求精。

4.把算法转化为代码

如果分解和逐步求精的过程已经顺利完成,那么这一步将会异常地简单。所有程序员都
会将伪代码一句一句地转化为合适地程序语言。

5 检测产生的 程序

这一步是真正的拦路虎。首先,程序的每一部分将会被单独地检测,如果有可能的话,整个程序还要被检测一遍。在我们检测程序时,我们必须证明所有合法输入数据值都能够正常运行。用标准的输入值检测程序,看它是否产生了值。如果在一个程序中执行的算法包含了不同的分支,你必须检测每一个分支,以保证产生正确的答案。大程序在交付大众使用之前,必须经过一系列地检测。检测的第一步有时被称为单元检测(unit testing)。在单元检测过程中,程序的子程序将会被独立地检测以证明它的正确性。当单元检测结束之后,这个程序将进行一系列的组合,把独立的子程序联合产生出最后的程序。程序第一步的联合通常只包括很少的子程序。通过组合这些子程序,经常用检查子程序或函数之间的联系。在一系列地组合过程中,越来越多的子程序被加了进来,直到整个程序的完成。在每一次组合的过程中,每一个错误都会被发现并在进行下一次组合之前纠正过来。

 

       

在整个程序被组合之后,调试继续进行。程序第一个版本我们通常称为“alpha 版本”。
程序员和其他有机会接近它的人可以想尽一切办法应用它,以发现其中的漏洞,然后改正之。

当许许多多大的错误从程序中去除,一个新的版本出现了,我们称为“beta 版本”。

beta 版本就要公开地发行给天天需要这个程序工作的人。这些用户使这个程序在不同的环境下,在
不同的输入条件下工作,会发现许多的错误,并报告给程序员。当这些错误被更正后,这个
程序就能够发行给公众使用了。因为本书中的程序都比较小,没有必要进行上述的大规模的
检测。但是我们会遵循基本的调试原则。
程序设计的基本步骤如下:
1.清晰地陈述出你要解决的问题。
2.确定程序所需地输入量和程序所产生的输出量。
3.为你的程序设计算法
4.将算法转化为 程序 语句
5.调试  程序

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------2021-2-25 待续

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值