Scratch与数学的整合38
第38课 过河
一、预学提示
过河也是趣味数学题型的其中之一。它分好多种小题型,比如已知有20个人要乘船过河,船一次只能载5人,问至少要乘几次船才能使大家全部过河?至于答案我在后面会讲到。包括如何用Scraatch实现。
二、例题讲解
1、预学提示中的例题解析如下:我先画一下图,在上边的直线的里面标上没过河的剩余

人数,在上侧用“-1人”表示“减去船夫”,在19——14之间标上“-5人”表示“在余下4人之前每次5人过河”。如果我把过河加往返看做1个周期的话,那么这20人减去1个船夫后还剩20-1=19(人),19÷5=3……4,说明5个5个人过要过3次,这3次来回总共有3×2+2=8(次),为什么要加2?∵最后还有余下的4人没过,这就说明等到余下4人时还要单独一次往返。∴答案就是6次。
2、由此可见,解决过河问题的公式需要分类讨论:当总人数-1的差除以可载人数的结果没有余数时,{[(总人数-1)]÷可载人数}×2-1=过河的次数;否则{[(总人数-1)]÷可载人数}×2+2=过河的次数。
三、流程图
首先程序开始,询问有多少个人过船,将过船的人数设为“回答”,然后用过船的人数-1求出载客的人数,接着询问每次能载多少个乘客,将可载的人数设为“回答”。接下来判断是否载客的人数÷可载的人数的余数=0,如果“是”那么接下来用(载客的人数÷可载的人数)×2-1求出过河的人数,否则套用载客的人数-载客的人数除以可载的人数的余数÷可载的人数×2+2求出过河的次数。再接下来将乘船的次数设为“过河的次数”,最后作答,程序结束。

四、变量信息
过船的人数、载客的人数、过河的次数、乘船的次数

五、代码示例
首先确定总人数,而这些人里面本身包含1名船夫,那么知道了总人数,把这1名船夫减掉,就是船夫要载客的人数。
当绿旗被点击
询问有多少个人过船?
将过船的人数设为回答
将载客的人数设为:过船的人数-1
询问每次能载多少个乘客?
将可载的人数设为回答
∵解决过河问题时需要分类讨论,讨论总人数-1的差除以可载的人数的结果有余数。根据判断情况套用合适的公式。由于前面已经推导出载客的人数了,∴现在可以直接把该变量值套入公式内求过河的次数。由于Scratch中不提供求商模块,∴要将判断的值与余数除法中商=(被除数-余数)÷除数结合起来进一步推导。
如果载客的人数除以可载的人数的余数=0那么
将过河的次数设为:(载客的人数÷可载的人数)×2-1
否则
将过河的次数设为:载客的人数-载客的人数除以可载的人数的余数÷可载的人数×2+2
将乘船的次数设为:过河的次数
说:“连接连接答:至少要乘和过河的次数和次才能使所有人过河”
