2.4 数学运算

数学运算是编程语言提供的基本功能,与其他编程语言一样,Scratch也提供强大的数学运算功能。如图2-4-1所示,在Scratch的“运算”指令面板中提供进行算术运算、关系运算、逻辑运算、三角函数运算、取整和求余运算、取随机数和字符串处理等丰富的指令积木。这些运算积木是一种报告积木,它们不能单独使用,需要和堆叠积木组合在一起使用。使用这些积木可以满足创作各种类型的Scratch项目的运算需求。

图2-4-1 运算指令积木

2.4.1 跟我做:鸡兔同笼

使用Scratch提供的运算功能,可以编程求解各种数学问题。在本案例中,通过求解经典的“鸡兔同笼”问题来讲解数学运算的编程知识。

“鸡兔同笼”问题出自我国古代数学名著《孙子算经》下卷第31题,书中记载:

今有雉兔同笼,上有三十五头,

下有九十四足,问雉兔各几何?

这个流传很广的经典算题被收录在人教版小学《数学(四年级上册)》中,是一个常见的小学数学题型。用白话文描述这个问题就是:

今有若干只鸡和兔子关在同一个笼子里,从上面数,有35个头;从下面数,有94只脚。问笼子里各有几只鸡和兔子?

“鸡兔同笼”问题有很多种解法,其中《孙子算经》里记载了一种简单的“砍足法”,它的计算公式是:

兔数=总脚数÷2-总头数=94÷2-35=12

鸡数=总头数-兔数=35-12=23

我们只要做一次除法和一次减法,就能算出鸡和兔的数量。

接下来,我们根据上述算法编程求解“鸡兔同笼”问题,具体步骤如下。

(1)启动Scratch软件并创建默认的应用项目,将“当被点击”积木拖动到脚本区。

(2)通过“数据”指令面板中的“建立一个变量”按钮,分别创建四个变量:总脚数、总头数、兔数和鸡数。

(3)从“数据”指令面板中把“将…设定为…”积木拖动到右侧脚本区,在这个积木的下拉列表中选择“总脚数”变量,再按此方式分别设置总头数、兔数和鸡数这3个变量。最后将它们拼接在一起,放在“当被点击”积木之下,如图2-4-2所示。

图2-4-2 拼接四个变量积木

(4)在脚本区中,将变量“总脚数”的值设定为94,变量“总头数”的值设定为35。

(5)兔数的计算公式是:总脚数÷2-总头数。从“运算”指令面板中把除法运算积木拖动到脚本区,再把“总脚数”变量积木嵌入到除法指令块的第一个圆孔中,而在第2个圆孔中输入数字2。接着,把这个准备好的除法指令积木嵌入到减法运算积木的第一个圆孔中,而在第2个圆孔中嵌入“总头数”变量积木。这样就构建好了一个表达式组合积木,最后把它拖动到“兔数”变量积木的参数孔内,如图2-4-3所示。

(6)鸡数的计算公式是:总头数-兔数。按此公式构建表达式积木,并将其拖动到“鸡数”变量积木的参数孔内,如图2-4-4所示。至此,解决鸡兔同笼问题的程序编写完毕。

(7)单击按钮运行程序,将会计算出兔数和鸡数。通过查看舞台上这两个变量的值,就能知道答案。

图2-4-3 构建计算“兔数”的表达式

图2-4-4 构建计算“鸡数”的表达式

2.4.2 算术运算和运算优先级

Scratch提供进行加法、减法、乘法和除法等算术运算的指令积木。需要注意的是,在编程语言中,通常使用星号(*)表示乘法运算。这些积木的用法非常简单,需要配合其他积木使用,如图2-4-5所示。

Scratch支持运算积木的嵌套使用,将不同的运算积木组合成复杂的算式。它的运算顺序为:从内层到外层。从积木堆叠的角度看,也可以把运算顺序看作是:从上层到下层。

例如,将算式“(((4*5)-(2+3))*6)/(1+2)”用Scratch的运算积木表示,它的嵌套结构如图2-4-6所示。图中从上到下展现的是从内层到外层的积木组合顺序,它的运算顺序是先执行内层的积木,再执行外层的积木。

图2-4-5 加法、减法、乘法和除法运算示例

图2-4-6 一个用运算积木描述的复杂算式

2.4.3 数学函数

Scratch不仅能够进行基本的算术运算,还提供丰富的数学函数以满足多种需求的数学运算。这些函数包括:取余数、四舍五入、绝对值、向下取整、向上取整、平方根,以及常用的三角函数(正弦、余弦和正切等)、对数和指数等。其中,取余数和四舍五入这两个函数以独立的运算积木出现在“运算”指令面板中;而其他函数集中在一个积木中,它有一个下拉列表可以选择使用的函数。如表2-4-1所示,这是一些常用函数的用法示例和积木说明。

表2-4-1 一些常用函数使用示例及说明

2.4.4 动手练:计算大桥长度

1.练习重点

算术运算积木和三角函数积木的使用。

2.问题描述

图2-4-7 飞机与大桥方位示意图

如图2-4-7所示,一架直升机悬停在跨河大桥AB上方P点处,此时飞机距离地面的高度PO=450m,且ABO三点在一条直线上,从飞机上测得大桥两端的俯角分别为α=30°,β=45°。请编写程序计算大桥AB的长度(精确到1m)。

3.解题分析

已知俯角β=45°,则∠PBO=45°,所以△POB是一个等腰直角三角形,由此可知,BO=PO=450m。已知俯角α=30°,则∠APO=60°;又因为ABO三点在一条直线上,所以AO=PO•tan60°。综合可得,AB=450•tan60°-450。

根据上面分析整理的公式编写程序即可,需要用到Scratch中的正切函数积木、四舍五入积木和算术运算积木等。由于题目要求精确到1m,所以对最后的计算结果要用“将…四舍五入”积木进行四舍五入取整。

4.练习内容

(1)把图2-4-8所示的程序脚本中的空白积木替换为真实积木。

图2-4-8 “计算大桥长度”空白脚本

(2)运行程序,求得这座大桥的长度约为______m。