自顶向下,逐步求精

在用计算机编写解决复杂的实际问题的编程时,往往不能直接得出解决问题的最优方案,甚至不能得出一个结论。在这时,可以尝试使用“自顶向下,逐步求精”的方法进行解决。

什么是“自顶向下,逐步求精”呢

“自顶向下,逐步求解”就是在解决某一具体问题时,按以下步骤来执行:

  1. 从问题的整体(最顶层)出发,将问题分为若干个子问题,每个子问题解决整个问题的一部分或一种情况;
  2. 将子问题当做新的问题的整体,继续对其分解(求精),得到更低一级的子问题;
  3. 持续执行步骤2直至可用计算机语言解决每一个子问题;
  4. 将所有子问题的解决方法汇总到一起,就构成最开始问题的解决方法。

求精技术

  1. 顺序连接的求精
  2. 分支、选择的求精
  3. 循环的求精
  4. 递归的求精
    用图表示出来便是:
    这里写图片描述

优点

  1. 程序层次清晰,结构分明;
  2. 便于查错,可快速将错误位置指定到某一子问题,从而快速纠错;
  3. 便于集体开发程序,在小组分工合作中,可将某些子问题分发给不同的组员进行解决,互不影响,提高工作效率。

实例(智能洗衣机)

分解过程

  1. 轻触开关,打开电源;
  2. 用户控制,选择水量;
  3. 开始清洗
    (1)洗涤
    (2)漂洗
    (3)脱水

  4. 清洗完成,响铃,断开电源。

伪代码

power(open)//用户打开电源
V water (by user)//用户选择水量


/*洗涤*/
water switch(open)//水夹打开
input(V water)//注入用户所需水量
water switch(close)//水夹关闭
start (time)//计时开始
whiletime<=10mindo 滚筒旋转,洗涤
tine=0
output//排水

/*漂洗*/
water switch(open)//水夹打开
input(V water)//注入用户所需水量
water switch(close)//水夹关闭
start (time)//计时开始
whiletime<=10mindo 滚筒旋转,漂洗
time=0
output//排水

/*脱水*/
start(time)//计时开始
while(time<5min)
do 滚筒旋转,脱水

ring//响铃
power(close)//电源关闭
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值