Scratch与数学的整合36
第36课 植树问题
一、课程导入
本节课你将会学到:如何解决植树问题、如何用Scratch实现植树问题?
二、知识储备
1、直线植树的3种情况:(1)两端都种树时,整条线棵数=间隔数+1。(2)一端种树时,整条线棵树=间隔数。(3)两端不种树时,整条线棵数=间隔数-1。
2、在圆周上植树的棵数=间隔数。
3、在正方形四周植树的3种情况:(1)封闭线路上植的棵数=全长÷单边棵数=间隔数+1,(2)在对角线植树的棵数=全长÷单边棵数=间隔数。(3)不封闭线路上植的棵树=全长÷单边棵数=间隔数-1。
三、例题讲解
1、在一条160米的街上每隔25米一盏路灯路灯 (至少有一段要安)。问:一共要安多少盏路灯?
分析:这道题一定有的人上来就答160÷25=6(盏)……10(米),其实不是这样的。这里只是有一处隐藏条件你没有找到:两端都安、一端安、两端不安3种情况,要不然题目为什么要加“至少一端要安”呢?况且你算的6只是间隔数,同时又余10米了,那就说明实际上根本没有两端都安的情况,那么就对一端安和两端不安分类讨论。如果一端安的话,就是盏数=间隔数=6盏,两端不安则是一共要安6-1=5(盏)。答:一共要安6盏或5盏。
2、在一个圆形花坛的圆周上摆花,每隔7米摆一朵花,问:这个花坛的面积是多少?
分析:根据圆周上植树的棵数=间隔数,全长=间隔数×间隔长度可知,花坛的周长是7×7=49(米),进而求出花坛的面积:(49÷3.14÷2)²×3.14=191.162420382766(平方米)。答:这个花坛的面积是191.162420382766平方米。
3、用若干个硬币摆成周长为1米的正方形,要求每两个硬币之间均隔5厘米,问:最多能摆多少枚硬币?
分析:虽然题目从字面上看不属于植树问题,但道理同属于植树问题,这里的“正方形”就是“线路”,“硬币”就是“树”。在正方形线路植树问题中,树最多的情况就是封闭线路,那么答案就是边长=100÷4=25(厘米),单边硬币枚数=25÷5+1=6(枚),最多的硬币枚数:6×4-4=20(枚)。答:最多能摆20枚硬币。
四、流程图
1、现在我把例1中的“街”改成“路”,“路灯”改成“树”,“盏数”改成“棵数”,又该怎么编程呢?这就需要我们解读下面的流程图:如图所示,程序开始。询问“在路的两边种多少棵树?”并将变量“在一端植的棵数”设为“回答”。然后判断该变量值是否大于2,若大于2则将变量“在两端植的棵数”设为“在一端植的棵数+1”,将变量“两端不植的棵数”设为“在一端植的棵数-1”。接着询问“每两棵树之间距离多长”?并将变量“间距”设为“回答”,接下来通过连接在一端植的棵数×间距和字符m求得路的长度,并思考变量“路的长度”。最后程序结束。

2、现在我把例2中的“花坛”隐藏掉,把“花”改成“树”,又该怎么编程呢?这就需要我们解读下面的流程图:如图所示,程序开始。询问“在圆周上种多少棵树?”和“每两棵树之间距离多长?”,这2个问题的回答分别对应于变量“圆周上的棵数”、“间距”。然后用圆周上的棵数×间距求出圆周的周长,最后思考连接连接水池的面积是(圆周的周长÷3.14÷2)²×3.14和m²。

3、如果我不仅把“间隔数”、“硬币”、“间隔长度”的说法改变一下,而且还把正方形改成正n边形,隐藏掉“最多”,甚至还要求周长,又该怎么编程呢?我们再解读下面的流程图:如图所示,首先程序开始,询问并回答正n边形的边数。然后判断边长是否>4,若“是”则接下来询问并回答单边种多少棵树。接着将不封闭的线路的单边棵数设为单边棵数×边数,将封闭线路的棵数设为单边棵数×边数+边数。接下来询问并回答每两棵树之间的间距,再接下来将边长设为(单边棵数-1)×间距,并将正n边形的边长设为边数×边长。最后思考代码连接连接正n边形的周长是和正n边形的周长和m。程序结束。

五、变量信息
1、角色A执行程序用到的变量:在一端植的棵数、在两端植的棵数、两端不植的棵数、间距、路的长度
2、角色B执行程序用到的变量:圆周上的棵数、间距、圆周的周长
3、角色C执行程序用到的变量:边数、单边棵数、不封闭线路的棵数、封闭线路的棵数、间距、边长、正n边形的周长

六、代码示例
1、先来看看角色A执行程序的代码是什么样子的:
当绿旗被点击 (0)
(1)——(2):首先确定路上种的树的间隔数,∵它等于在一端植的棵数,∴将变量“在一端植的棵数”作为间隔数的回答。
询问在路的两边上种多少棵树? (1)
将在一端植的棵数设为回答 (2)
(3):∵0是空数,∴树的棵数的最小值必须是1,∴要对间隔数进行判断,间隔数有意义才有必要求间距。
如果在一端植的棵数>2那么 (3)
(4)——(9):接下来就可以套公式求棵数。知道了棵数,就又可以询问并回答间隔数进一步求出路的长度。
将在两端植的棵数设为:在一端植的棵数+1 (4)
将两端不植的棵数设为:在一端植的棵数-1 (5)
询问每两棵树之间距离多长? (6)
将间距设为回答 (7)
将路的长度设为连接在一端植的棵数×间距和m (8)
思考:“连接马路的长度是和路的长度” (9)

2、再来看看角色B执行程序是代码是什么样子的:
这串代码就没有什么多说的了,就是让程序知道树的棵数、间距,通过套用公式求出圆的周长和面积就可以了。
当绿旗被点击
询问在圆周上种多少棵树?
将圆周上的课数设为回答
询问每两棵树之间距离多长?
将间距设为回答
将圆周的周长设为:圆周上的棵数×间距
思考:“连接连接水池的面积是和(圆周的周长÷3.14÷2)²×3.14和m²”

3、最后看看角色C执行程序是代码是什么样子的:
当绿旗被点击 (0)
(1)——(2):∵正多边形是一个不确定的形状,∴需要对边数进行询问并回答。
询问在正多少边形的形状上植树? (1)
将边数设为回答 (2)
(3):正n边形的边数必须大于4,符合条件才有必要执行后面的程序。
如果边数>4那么 (3)
(4)——(6):线线成面,∴必须知道单边棵数才能知道整个多边形的线路。
询问每条边均种多少棵树? (4)
将单边棵数设为回答 (5)
将不封闭线路的棵数设为:单边棵数×边数 (6)
将封闭线路的棵数设为:单边棵数×边数+边数 (7)
(7)——(10):接下来就可以执行如何推理正n边形的周长了。
询问每两棵树之间距离多长? (7)
将间距设为回答 (8)
将正n边形的周长设为:边数×边长 (9)
说:“连接连接正n边形的周长是和正n边形的周长和m” (10)
