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

**自顶向下:将复杂的大问题分解为相对简单的小问题,找出每个问题的关键、重点所在,然后用精确的思维定性、定量地去描述问题。其核心本质是”分解”。
逐步求精:将现实问题经过几次抽象(细化)处理,最后到求解域中只是一些简单的算法描述和算法实现问题。即将系统功能按层次进行分解,每一层不断将功能细化,到最后一层都是功能单一、简单易实现的模块。**
这里写图片描述

在这里我举出一个用“自顶向下,逐步求精”方法解决问题的实例。
洗衣机是我们家中必不可少的一种电器,但是你有观察过洗衣机的工作过程吗?
这里我们来设计一个洗衣机的控制程序。
这里写图片描述
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)。 等子程序

展开阅读全文

没有更多推荐了,返回首页