自顶向下

首先我们先了解一下自顶向下的解决方法。
自顶向下设计 (zì dǐnɡ xiànɡ xià shè jì)一种逐步求精的设计程序的过程和方法。对要完成的任务进行分解,先对最高层次中的问题进行定义、设计、编程和测试,而将其中未解决的问题作为一个子任务放到下一层次中去解决。这样逐层、逐个地进行定义、设计、编程和测试,直到所有层次上的问题均由实用程序来解决,就能设计出具有层次结构的程序。 ——来自百度百科

自顶向下的方法(也称为逐步设计,在某些情况下用作分解的同义词)本质上是系统的分解,以逆向工程的方式获得对其组合子系统的洞察。在自上而下的方法中,系统的概述是制定、指定、但不详细的,任何一级子系统。然后,每个子系统在更大的细节中被细化,有时在许多额外的子系统级别中,直到整个规范被简化为基本元素。 ——–翻译自维基百科

名词解释好像都很高大上的样子,但是其实说白了,就是将一个大问题分成一块一块的小步骤去解决,从上到下的方向去解决,就是自顶向下的解决方法,其本质就是两个字“分解”。
那么具体操作又是怎样?
来自百度
以洗衣机程序设计为例:
1)首先,考虑洗衣机的各种功能:标准洗,快洗,精洗,洗大件衣物……等等数不胜数的功能,或者思考洗衣机的各个按钮:水量、时间、步骤……
2)然后再考虑各种功能与按钮之间的对应关系,或者说是各个功能在执行的时候会有什么动作:电机转动、注水、放水……,以及各个动作的先后顺序,时间长短:快洗的时间会短一些、洗大件衣物的功率会大一些……
3)那么既然有了这些动作,那它对应的程序是怎样的?
这就可以用伪代码来表示出来;
注水:Waterinswitch open
If (getwatervolume() >= watervolume)
Waterinswitch close;
浸洗:wait 5 min;

洗涤:For(timecounter < 10 min){
motorrun(left) for 30s;
motorrun(right) for 30s;
}

漂洗:for(3 times){
注水;
For(timecounter < 2 min){
motorrun(left) for 10s;
motorrun(right) for 10s;
}
Wateroutswitch open ;
If (getwatervolume() <= 0)
Wateroutswitch close;
脱水;
}

脱水: For(timecounter < 5 min){
motorrun(left)
}
表达出来后发现有的步骤是重复实现的,所以我们就可以构建一个函数来表达某个程序,如 脱水 这种,就可以更方便简洁表达程序;
5)最后就真正通过编程语言,将这些程序表达出来,问题就迎刃而解了。

谢谢阅读!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值