“鸡兔同笼问题”是我国古书《孙子算经》中著名的数学问题,其内容为:“今有雉(鸡)兔同笼,上有三十五头,下有九十四足。问雉兔各几何。”这个其实就是大家熟悉的“鸡兔同笼”问题,翻译成白话文就是:
今有若干只鸡和兔子关在同一个笼子里,从上面数,有35个头;从下面数,有94只脚。问笼子里各有几只鸡和兔子?
主要的数量关系:
如果假定全部是鸡,那么① 兔的只数=(总足数-每只鸡的足数×总头数)÷(每一只鸡与兔足数的差)简写就是兔的只数=(总足数-2×总头数)÷2② 鸡的总只数=总头数-兔的只数
如果假定全部是兔,则① 鸡的只数=(每只兔的足数×总头数-总足数)÷(每一只鸡与兔足数的差)简单写就是鸡的只数=(4×总头数-总足数)÷2② 兔的只数=总头数-鸡的只数
这道题的解法有很多,这次我们试着用编程软件Scratch来解。Scratch是由MIT(麻省理工学院)米切尔·瑞斯尼克(Mitch Resnick)教授带领的“终身幼儿园团队”(Lifelong Kindergarten Group)开发的一款积木式少儿编程软件。通过类似拖动积木块的方式和使用软件中的素材,可以很容易地创造有趣的动画、游戏,以及控制机器人和电子设备等,在创作的过程中不仅习得了Science(科学), Technology(技术), Engineering(工程), Arts(艺术), Maths(数学)等多个领域的知识,而且可以培养逻辑思维能力、观察能力、创新能力和想象力。
Scratch官网 https://scratch.mit.edu/Scratch。官网上边,可以使用网页进行Scratch编程,还可以分享作品。通过类似组合积木的方式制作程序,Scratch提供很多有趣的声音和图片,也可以自己录制声音、涂鸦和上传图片,自由创作。孩子制作的作品可以发布到Scratch官方网站上,通过网络被无数人看到,也可以在网站上查看全世界各个国家的孩子们发布的作品。
所以在开始之前,我们需要先明白一个问题:我们为什么要学数学,它和编程有何关系?
中科院院士、数学教授李大潜给出了答案:数学能够提高我们的素质和能力,这些素质和能力包括:严密的逻辑思维能力、高度的抽象思维能力、自觉形成数量观念、让我们变得更细心。
数学和编程的关系
1. 编程所需要的很多能力和数学是相通的。比如逻辑思维、模式识别等。现在机器学习用到的算法,其本质还是数学模型计算问题。
2. 编程能够帮助孩子更好地理解数学抽象概念。孩子们可以通过编程将抽象的数学概念转化为看得见的、会动的图像。
例如最常用的函数,书本上的概念理解起来很抽象,通过编程就可以在计算机上展示出来
3.编程能够强化孩子的数学能力。如果孩子想用代码建造飞机,那就要用到各种各样的数学知识,并且还要调用抽象思维的能力。
数学和编程关系紧密,具备数学+编程的人优势会更大,因为它们之间的联系密切相关。
下面我们进入正题,看scractch如何解这道经典的小学奥数题。
【编程解题】
第一步:添加角色
右下角的角色区添加角色,分别是公鸡、兔子、小猫各一个:
第二步:设置逻辑运算
小猫角色的脚本要根据已知条件算出结果,并在界面显示出结果(白框里的文字),我们输入题目中已知条件:
我们要求鸡和兔子的数目,就是要解出两个未知数,把它转化为代码语言,这就需要创建两个变量来代表这两个未知数(兔子和鸡)。
现在根据已知条件输入兔+鸡=35,兔x4+鸡x2=94,注意左边的绿色框,里面包含了很多逻辑关系:“且”、“或”等等。孩子在这一步要思考:这两个式子是缺一不可还是满足一个就行呢?这就是对孩子逻辑思维最好的训练。
接着输入变量(发散下思维:分析一个问题时,教会孩子找出它的变量,问题就会好解决很多):
完整代码如下:
鸡和兔要执行的任务是:当它们接受到“兔子你说,你有多少只”和“大公鸡,你说你有多少只”指令时,就要分别“喊出”结果,兔子的代码是这样的:
鸡的代码是这样的:
最后的结果是:
在解题的过程中,孩子对逻辑关系“且”、“或”等有了更深的了解,对变量也会有初步认识,这就是构建逻辑思维的必要步骤,非常有助于孩子以后高效地处理任何问题。
这就是数学+编程的强大之处。
【试一试】
《孙子算经》中的“鸡兔同笼”问题后来飘洋过海传到了日本。
在1815年日本人坂部广胖编纂的《算法点窜指南录》一书中把这个问题以“龟鹤算”为名提出:“有一群鹤和乌龟都圈在一个笼子里。从上边数脑袋是三十五个,从下边数脚是九十四只。问乌龟和鹤各是多少只?”
这里只是把鸡兔换成了龟鹤,像这样的问题还是比较简单的,你也用神奇的Scratch试试吧!
欢迎关注微信公众号了解更多小学数学、编程知识