scratch是一个面向青少年的编程入门软件,用它可以熟悉编程的一些基本逻辑,事实上,除了作为入门的工具,它也是一个学习生活中的好帮手,今天我们尝试用它来完成一些复杂的计算工作。
求连续自然数之和
假设题目为求“1+2+3+...+100”的和,在数学中,我们可以利用高斯求和公式求解,而在scratch上,我们先用最笨的办法,先求出1+2=3,再用结果3去加上下一个自然数,总计求和100次,听起来很繁琐吧,但是由于计算机的运算速度快如闪电,所以真正出结果的速度,比我们想像的要快的多;
程序如上,前面说了需要计算100次,但先计算“1+2=3”,再计算“3+3=6”,一直加到100也就99次计算过程啊,为什么会有100次运算呢,因为我们设置了一个result的变量来存储结果,第一次运算并不是“1+2”,而是“0+1”;
我们把每次运算的结果放在result这个结果中,下一次运算的时候,调用上一次生成的result的值,再加上下一个自然数,在scratch中,这个过程相对易于理解,因为这个语句块用了一个将“result”设定为“result+a”这样的表述,比如在第一步运算的时候,“result”的初始值是0,在设定之前,程序提取了它的值,并将它与a(第一步时值为1)的值相加,再重新赋值给“result”,设定语句生效后,“result”的值就变成了1;
试试点击绿旗来让小猫报出运算结果吧,因为计算机的运算速度非常快,所以当按下运行的同时,小猫就把算式的结果报了出来,光就运算速度而言,人脑的运算速度是远远比不上计算机的,用计算机的运算速度去对比心算的速度,可以说是一种降维打击。
那么求“1x99+2x98+3x97+...+49x51”的和呢
新的算式有了两个不断变化的量,前一个量每次增加1,后一个则每次减少1,我们在原程序中也相应增加一个变量,因为这两者的变化是同步的,我们判断循环次数的时候,只需要判断其中一个值是否超出允许范围就可以了;
看起来求解方式完全不同的两道题目,在scratch中的解法仅仅是增加了两块积木,利用scratch,我们可以很方便的来验算自己辛苦解出的题目的解是否正确,现在看来,它是不是一个很方便的工具呢?
附scratch求连续自然数的程序源文件,有需要的亲可以下载测试:
scratch求连续自然数
递归求和的方式
博客还介绍了另一种利用Scratch求和的方法,有兴趣的亲也可以看看哦。