Scratch编程计算奥数机器人克隆问题

为了教包子学习编程,包爸给包子装了一台树莓派电脑,里面有图形化的Scratch。然后从图书馆借了两本书(《Scratch少儿趣味编程》,《Scratch 2.0趣味编程指南》),扔给包子让他看了一阵儿。包子照着书里面的例子,自己拖拖拽拽,算是入了门。下一步要怎么教,包爸也有点迷茫。

周四爸爸陪着包子上奥数课的时候,老师出了这样一道题:

博士发明的机器人“大食1号”在生产出来1小时内要吃废铁,之后每1小时将自身克隆,做出来的克隆也和“大食1号”做相同的行动。现在,有1台刚刚生产出来的“大食1号”,那么12个小时时,有多少个机器人?

包爸突然想到,可以用Scratch做一个程序,让它帮着包子计算自己喜欢的数学问题。从兴趣入手,解决自己遇到的实际问题,应该是一个不错的途径。

等到了周末,包爸打开包子的树莓派电脑,打算用Scratch1.4做一个这样的程序出来。本来以为这种循环累加问题是小菜一碟儿,没想到还是废了一些周折。主要是包爸一开始在Scratch里盲目找了半天数组类型的变量未果,还好包子自己弄过一些程序了,拖出来一个列表,可以起到同样作用。最后终于有了下图的程序,可以实现输入任意小时数,解算出结果。大家也可以到Scratch官网上直接进入我们的项目分享,在自己的Scratch里打开查看。

这个小程序可以教孩子理解Scratch里的循环,以及条件判断的具体应用。最外层的循环是时间循环,从0小时到输入的小时数为止。里层的循环是所有已生产出来的机器人的循环,列表变量“机器人总数”中每一行就是一个生产出来的机器人,而这一行的数据是这个机器人生产出来的时间。这个循环里的条件判断就是看每一个机器人是否过了吃废铁的时间,没有过就什么也不用做。过了的话就生产出一个新机器人(“机器人总数”列表中增加一行)。

在写这个程序的过程中,包子也积极参与,一开始包爸是把小时总数作为一个变量写在程序里的。多亏包子建议,才改成现在这样:程序一开始经小猫提问,用户自己输入的方式。程序写完后,经过爸爸的讲解和多次演示,包子基本理解了这个程序。可以在爸爸的提示下,自己从头开始,重新拖拽出一个新程序来完成同样的任务。个人感觉这节课还是比较成功的:)

要提醒一下的是,在运行这个程序时,列表变量“机器人总数”的显示选项(下图蓝箭头所指)一定不要勾选,否则运行起来会非常缓慢。