刚刚学习编程的小朋友们,虽然已经掌握了一些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!