欢迎光临
我们一直在努力

Scratch第二十一讲:用编程方法解决鸡兔同笼问题

CC哥发现网上有很多Scratch解数学题的讲座,其实CC哥感觉Scratch的特长不是做数学题和搞算法,如果是做算法还是C++更合适,当然为了结合一下小学数学,也可以用Scratch练习一下算法编程。

今天CC哥用Scratch跟大家演示一个小学最常见的鸡兔同笼问题。看看编程怎么解决这种问题。

CC哥上网看了一下,很多网上的Scratch讲解竟然用的是算术的方法,就是最基本的假设吧。比如题目如下:鸡子和兔子关在一个笼子里,数头有35个,数腿有94个,问鸡有几只,兔子有几只。

算术怎么做,最简单的就是假设法,假设笼子里全是鸡,那腿应该有多少条?腿应该有70条,现在腿总共是94个,那多出来的24条腿就是兔子的,一个兔子比鸡多2条腿,那说明总共有12只兔子。鸡的数量就是35-12=23。所以鸡23只,兔子12只。我们验算一下:腿的总数是:23*2+12*4=46+48=94。完美,这就是小学算术的经典解法。

CC哥发现有编程教学就是用这种方法,直接用算数公式来写代码:假设鸡的数量是a,兔子数量是b,b=(94-35*2)/2=12,a=35-12=23。有没有毛病,没毛病。但是如果这样做的话,干嘛要计算机编程呀。直接给个计算器不就解决问题了。或者如果我就不知道该怎么解这道题怎么办?所以说,这么做如果放在计算机编程上就是有毛病了。

计算机为什么叫计算机?就是因为有强大的计算能力。远远超过人的计算能力。而算法通常作用是用来做简化计算的。那么如果鸡兔同笼的问题,你不会算法怎么办?用最笨的方法呀,穷举呀。就是假设所有的情况,看哪种符合呀,比如假设鸡一只没有,全是兔子,看看有多少条腿;假设只有一只鸡,34只兔子,再算算有多少条腿。只要耐心,总能试出来。如果让我们拿笔算,这样算,肯定要被大人骂了。但是计算机不怕呀,计算机就是计算用的,再复杂的计算,一下子就算出来了。

那怎么做呢?用循环一个一个试验呀,这个编程小朋友应该得心应手吧。

方法刚才CC哥解释了,就是一个一个数字试一遍,最多试36次嘛,这才是计算机的算法。

小猫的代码如下:

这段代码的主要部分就是用循环+判断了,重复试36次,从0试到35,总能试出来。(a代表运算过程中鸡的数量,b代表运算过程中狗的数量)

注意有一点CC哥之前没说过,“说”这个命令里面是可以放文本变量的,也就是不光是在里面可以输入一段文字。还可以用连接命令组合一段文字。CC哥就是把’鸭子的数量是‘这段文字和DUCK这个变量连接在了一起形成一段文字,然后用说命令说出来。又学了一招没?是不是很厉害

另外鸭子的代码是:

狗的代码是:

CC哥这些代码都是顺便把程序做的有趣些。

大家注意,在这里面CC哥做了多角色的互动,这里面有三个角色,猫,鸭子和狗。三个角色在互动的时候一定会碰到同步问题。所以请大家一定注意要多习惯广播和接收广播这一组命令,这组命令可以很好的去控制多角色互动。比如猫说完了才轮到鸭子和狗,鸭子和狗说完了才轮到猫。如果不用广播和接收广播,小朋友就必须在写代码时自己去计算好每一个角色要等待的时间,不但很容易出错的,并且一旦一个角色的时间需要调整,那所有的角色的命令都需要改。所以编程一定要养成好习惯。

总结:计算机的编程算法其实很多就是穷举,就是用强大的计算能力去计算所有可能。下一次,CC哥会讲经典的逻辑推理问题(也是很头疼的小学数学题)用计算机是怎么解决的。

CC哥这么努力,有没有关注CC哥? 有没有把CC哥推荐给别的小朋友?

加的时候请备注:Scratch。

赞(6)
分享到: 更多

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址