自顶向下,逐步求精

刚刚学习编程的小朋友们,虽然已经掌握了一些C语言的语法知识,但是对于如何运用却是有点问题的。有些时候,我们不是不懂知识,而是不知道如何运用,如何用计算机的思维来解决问题。比如说,如何将十进制的一个数,转化为二进制?如果放在平时,我们可以用数学方法逐步求余来得到结果,但是,如何设计一个算法,写出一个程序来做解决这个问题呢?接下来我就来介绍一种程序员不得不知道得一种思考方法。

自顶向下,逐步求精

这个思想方法就是先将问题逐步分解为一个个小问题,从最开始的大问题,分解为一个个的小问题,自顶向下,在其中,小问题又可以被分解成多个方面,再通过一步步细化问题,并将问题解决,逐步求精,最终就可以解决原来的问题。
可能这样说一些人仍是觉得十分的抽象,无法完全理解。而且,这本来就是属于一种思考方法,如果不加以实践的话是无法完全掌握的。那么接下来就来介绍一个实践的例子。

如何写出1+2+3+·······+100的算法

我们将运用伪代码来写出算法。
首先,要执行这个程序就是要从1加到100,第一步我们先设结果为sum,初始化为0,然后执行第一步,+1,加完1后,结果就是1,然后我们需要继续加2,2及1+1,可见,后一个加上的数是前一个数加1,我们可以再设一个变量来记录加上的数字,第二步就是加2,这个步骤与第一步是相同的方法,于是我们可以运用重复,重复100次之后,便得到了问题的最终结果。从解决这个问题的思考方法来看,便是自顶向下,逐步求精的。
接下来我们翻译这段伪代码,得到程序。

 #include<stdio.h>
 int main()
 {
    int sum = 0;
    int i = 0;
    for(;i < 100;i ++)
    {
        sum = sum + i + 1;
     }
     printf("The result is %d.\n",sum);
 }

运用这种方法就会觉得问题很简单。


接下来我们将在生活实践上运用这种方法。

洗衣机的步骤

according衣服的量choose水量
waterinswitch(open)
if(getwatervolume == choose水量)
waterinswitch(close)

the 2 part 漂洗
for(int i = 0;i < 500;i ++)
{
motorrun(left)
motorrun(right)
}
if(timecounter() > 规定时间)
continue
motorrun(stop)
else
failure
wateroutswitch(open)
if(getwatervolume()== 0)
wateroutswitch(close)

The 3 part 浸泡
waterinswitch(open)
if(getwatervolume == choose水量)
waterinswitch(close)

The 4 part 脱水
if(timecounter() > 规定时间)
wateroutswitch(open)
if(getwatervolume()== 0)
wateroutswitch)(close)
halt(return) *//停机
这里写图片描述
if it have any mistake,please tell me,thank you!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值