Scratch与数学的整合22
第22课 数图形
一、课程导入
本节课你将会学到:如何巧妙地解决图形计数问题(包括Scratch程序)?
二、知识储备
以线段、角、正方形、正方体为例,图形计数问题有如下公式:
1.1、(1+小线段的条数)×(小线段的条数÷2)=线段的条数 (小线段的条数为偶数)
1.2 、[1+(小线段的条数+1)] ×[(1+(小线段的条数)÷2]=线段的条数 (小线段的条数为奇数)
2.1、(1+小角的个数)×(小角的个数÷2)=线段的条数 (小角的个数为偶数)
2.2 、[1+(小角的个数+1)] ×[(1+(小角的个数)÷2]=线段的条数 (小角的个数为奇数)
3、{[小正方形的个数×(小正方形的个数+1)]×(2×小正方形的个数+1)}/6=正方形的个数
4、[小正方体的个数×(小正方体的个数+1)/2]²=正方体的个数
上面的公式中,1.1、2.1均为高斯求和公式,3为平方数列求和公式。4为立方和公式。
三、探索新知
1、请问图1中有多少条线段?

图1
分析:这道题不能乱数,还有人认为ABCDEFGH这些点之间有8个间隔,由此得出有8-1=7(条)线段,这样数也是错误的。这道题与间隔一点关系都没有。那我们该怎么数呢?首先要知道AD与DH的倾斜角不同,也就是对他们两个是各自独立的线段,要分开数再相加。首先看AD,AD上有4个端点,那么根据高斯求和公式Sn=[n(a1+an)]/2可知,n,an均为端点个数,a1=1,进而求得AD有[4×(1+4)]/2=10(条)线段。再看AH,DH上有5个端点。[5×(1+5)]/2=7.5,怎么会出现小数呢?奇数不能被2整除,不能用高斯求和公式,看看还有什么其他方法。我把5拆成4+1,这样就变成了[1+(1+4)]×[(1+4)÷2]=15,这回是整数了。那么DH有15条线段。最后可以得到图1中有10+15=25(条)线段。答:图1中有25条线段。
2、请问图2中有多少个正方形?

图2
分析:这道题还是不能乱数,间隔也不要想。正方形属于平面图形,线线成面。∴可以这样思考:大正方形的每条边上都有4条直线,那么图2中有4种不同大小的正方形:1×1、2×2、3×3、4×4。接下来代入平方数列求和公式可求得图2中有{[4×(4+1)]×(2×4+1)}/6=30(个)。答:图2中有30个正方形。
3、已知有一个正方体被切成6×6×6体积均等的小正方体。问:被切后的正方体一共有多少个?
分析:这道题没有给出图,需要靠我们的想象想出这个立体图形的特征是怎样的。首先明确一个最基本的概念:正方体有上下前后左右6个面,每个面的棱长相等。接下来题中又说“正方体被切成6×6×6体积均等的小正方体”,什么是体积均等呢?每个大小都均等吧?那“6×6×6”怎么理解呢?正方体由长宽高构成,那“6×6×6”就是有6层正方体,每层正方体都是6个小棱的正方体。问被切后的小正方体一共有多少个,那答案就是套入立方和公式计算:{[6×(6+1)÷2]}²=441(个)答:被切后的正方体有441个。
四、流程图
由于今天我们研究的三道题完全同属图形计数问题,因此为了保证编程时尽可能多删减脚本,∴我们就看看删减后的脚本对应的代码的流程图吧。

流程图看上去比较繁琐,但如果我们理清了里面的内在联系,进行“合并同类项”,分析起来就会简单得多。首先程序开始,点、线段、角、正方形、正方体是不同的对象,找准的对象不同,计数的过程也就不同,而程序的答案只有一个。∴我们此时要问角色输入哪个图形。回答=1时找准点计数,回答=2时找准线段计数,回答=3角计数,回答=4正方形计数,5是正方体计数。当程序知道了找准哪类图形计数时,人家就问你“××的个数?”。你此时回答的是点的个数的话直接数出来作答;线段或是角要判断n是否为偶数,若判断为“是”则用高斯求和来解,否则套用[1+(n+1)]×[(n+1)÷2]来解;正方形的话用平分数列求和,正方体的用立方和公式。
五、变量信息

图形的种类、点的个数、线段的条数、正方形的个数、小线段的条数、小角的个数、小正方形的个数、小正方体的个数、角的个数
六、代码示例
当绿旗被点击
首先要统一问题。该编程的共同点是全为计数问题,不同点是图形种类不同。那我们把图形计数看成一个集合,图形的种类则是对象。那么要统一的变量就是图形的种类。
询问你要数哪类图形?
将图形的种类设为回答

将1赋值给变量“点的个数”。由于点是独立的,∴点的个数直接询问并回答,再作答。
如果图形的种类=1那么
询问请输入点的个数
将点的个数设为回答
说:“连接连接这个图形有和点的个数和点”

将2赋值给变量“小线段的条数”,由于求线段的条数公式是连续求和。对于配对求和而言会涉及到2的整除特征,∴要用余数积木判断该数是奇数还是偶数,根据情况选用合适的公式计数。
如果图形的种类=2那么
询问被分成多少条线段?
将小线段的条数设为回答
如果小线段的条数÷2的余数=0那么
将线段的条数设为(1+小线段的条数)÷(小线段的条数÷2)
否则
将线段的条数设为[1+(小线段的条数+1)]×[(小线段的条数+1)÷2]
说:“连接连接这个图形有和线段的条数和条”

由于角的计数方法同理于线段的计数方法,∴只要此时把上一组代码复制,再把变量“小线段的条数”改成“小角的个数”,“线段的条数”改成“角的个数”就可以了。
如果图形的种类=3那么
询问被分成多少个小角?
将小角的个数设为回答
如果小角的个数÷2的余数=0那么
将角的个数设为(1+小角的个数)÷(小角的个数÷2)
否则
将小角的个数设为[1+(小角的个数+1)]×[(小角的个数+1)÷2]
说:“连接连接这个图形有和角的个数和角”

将4赋值给小正方形的个数,5赋值给正方体的个数。由于在讲例题时我们直接套公式求了,∴这里我们还套公式求。
如果图形的种类=4那么
询问由多少个小正方形构成
将小正方形的个数设为回答
将正方形的个数设为{小正方形的个数×[小正方形的个数+1]×(2×小正方形的个数+1)}/6
说:“连接连接这个图形有和正方形的个数和个正方形”

如果图形的种类=5那么
询问由多少个小正方体构成
将小正方体的个数设为回答
将正方体的个数设为[小正方体的个数×(小正方体的个数+1)]²
说:“连接连接这个图形有和正方体的个数和个正方体”
