模块化程序设计之自顶向下、逐步求精

来源:互联网 发布:全球进化 知乎 编辑:程序博客网 时间:2024/05/02 04:43

模块化程序设计最早出现在汇编语言中,在结构程序设计的概念提出以后,逐步完善并形成了模块化的程序设计方法。按照模块化程序设计思想,无论多么复杂的任务,都可以划分为若干个子任务。若子任务较复杂,则可以继续分解,类似于解数学题一般,一道很难的题你需要分步骤按照数学语言来完成。程序更是如此,一些庞大的程序工程,就需要各模块逐个解决,方能使问题简单化,便携化。
下图是一个照明系统,这是一个遵循“自顶向下、逐步求精”的例子。

这里写图片描述

(来自百度)
逐步求精是一种具体的抽象技术,他是1971年由Wirth提出的用于结构化程序设计的一种基本方法。
为了解决一个问题,人们往往不能一开始就了解问题的全过程细节,只能对全局做一个大致的决策,设计出对问题本身较为自然的,很可能是用自然语言表达的抽象算法。这个抽象算法有一些抽象数据及其上的操作组成,仅仅表示解决问题的一般策略和问题解的一般结构。对抽象算法进一步求精,就进入下一步抽象。
每求精一步,抽象语句和数据都会进一步分解化、精细化,如此下去,直到最后能被计算机所理解。逐步求精就是按照先全局后局部,先整体后细节、先抽象后具体的过程。组织人们思维活动,从最能反映问题体系结构的概念出发,逐步精细化、具体化,逐步补充细节,直到设计出可在机器上执行的程序。

**

自底向上与自顶向下

**

下面就简单介绍一下自底向上与自顶向下
自底向上方法是先编写基础程序语段,然后再扩大、补充、升级。

自顶向下,通俗来讲与自底向上刚好相反。先写出结构简单的主程序来表达整个问题,然后用逐步求精的 方法对主程序精细化为子程序,逐步求精,直到子程序简单的完成,从而逐步解决了问题。逐步求精技术就是由不断的自底向上修正所补充的自顶向下的程序设计方法。

下面写一段有关洗衣机的伪代码

beginwateroutswitch(open)// open 打开排水开关if 衣服(1-3件){水半桶}else if(衣服4件以上){水一桶}              wateroutswitch(close)//关闭排水开关               getwatervolume() //返回洗衣机内部水的高度     for (int i = 0;i<= timecreate; i++){//i单位s,timecreate 单位min(1min = 60s,在另一子函数中写出)    motorrun(left3round);    motorrun(stop);    motorrun(right3round);    motorrun(stop);    }     // 电机转动。 left左转, right右转, stop停     timecounter() // 返回当前时间计数,以秒为单位    halt(returncode) //停机, success 成功 failure 失败 

谢谢浏览

阅读全文
0 0