您的位置:首页 > 其它

“自顶向下,逐步求精”方法介绍

2017-11-29 19:37 417 查看
**自顶向下:将复杂的大问题分解为相对简单的小问题,找出每个问题的关键、重点所在,然后用精确的思维定性、定量地去描述问题。其核心本质是”分解”。

逐步求精:将现实问题经过几次抽象(细化)处理,最后到求解域中只是一些简单的算法描述和算法实现问题。即将系统功能按层次进行分解,每一层不断将功能细化,到最后一层都是功能单一、简单易实现的模块。**



在这里我举出一个用“自顶向下,逐步求精”方法解决问题的实例。

洗衣机是我们家中必不可少的一种电器,但是你有观察过洗衣机的工作过程吗?

这里我们来设计一个洗衣机的控制程序。



1.首先我们要粗略的定出这个控制程序的步骤

(1)根据所洗衣物的多少输入水量。

(2)按下开始键后开始注水,至预定水量。

(3)浸泡预定时间。

(4)到达预定浸泡时间后,电机开始转动,左转右转周期循环。

(5)到达预定洗衣时间后,电机停转,开始放水。

(6)结束洗衣,洗衣机进入待机或者关机状态。

2.列出每个步骤后,我们再将每个步骤的细节用伪代码补充完整

(1)input 预定水量

(2)wateroutswitch(open)打开上水开关

Until getwatervolume==预定水量

(3)do nothing

Until timecounter==预定浸泡时间;

(4)do if(timecounter%2==1) motorrun(left) //当时间为奇数秒时电机左转;

If(timecounter%2==0)motorrun(right) //当时间为偶数秒时电机右转;

Until timecounter==预定洗衣时间;

(5)motorrun(close);

Wateroutswitch(open) //打开排水开关

(6)switch off or stand by;(结束)

3.细化每个步骤之后我们还可以提取一些共性功能模块(函数),简化“正常洗衣”程序,使程序 变得更利于人们理解和修改维护。例如:

wait(time) //等待指定的时间;

注水(volume,timeout) //在指定时间内完成注水,否则停机;

排水(timeout)。 等子程序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: