[导读]:这是Scratch蓝桥杯真题解析第102讲。蓝桥杯选拔赛现已更名为STEMA,即STEM 能力测试,是蓝桥杯大赛组委会与美国普林斯顿多文化教育研究中心合作推出的考试项目。STEM能力测试致力于综合评价学生的 STEM 水平,对学生的科技素养、逻辑思维和编程能力等三方面进行客观科学的测试。
小猫小狗玩数学,本题是2023年2月12日举行的第14届蓝桥杯STEMA考试Scratch图形化编程真题中级组编程部分第5题,也是压轴题,题目要求编写程序实现小猫出算式题,玩家输入算式结果,小狗能够判断算式结果是否正确并统计答对题目的数量。
先来看看题目的要求吧。
一.题目要求
编程实现:
小猫出算式题,玩家输入算式结果,小狗能够判断算式结果是否正确。
具体要求:
1). 运行程序,角色、背景如图所示(变量:“答对题数”初始值0);
2). 小猫说出3个数字(3个数字均是0-10之间的随机数,数字间使用逗号隔开);
3). 小猫说出2个符号(2个符号的四种可能情况:“+,-”、“-,+”、“+,+”、“-,-”符号间使用逗号隔开);
4). 小猫将之前的3个数字和2个符号组成算式并询问;
例如:3个随机数字“7,9,4”与2个随机符号“-,-”组合成的算式:7 – 9 – 4 = ?
5). 玩家输入的结果为正确时,小狗说:“回答正确”,答对题数+1;玩家输入的结果为错误时,小狗说:“回答错误”,答对题数不变;
6). 小猫共出3道题,小狗完成3道题的判断后,说出玩家答对的题目数,程序结束。
评判标准:
- 3分:满足”具体要求”中的1);
- 3分:满足”具体要求”中的2);
- 3分:满足”具体要求”中的3);
- 5分:满足”具体要求”中的4);
- 11分:满足”具体要求”中的5);
- 5分:满足”具体要求”中的6)。
二.作品效果
在编程之前,先来看一下作品的完整效果吧:
三.思路分析
本题只有两个角色,分别是小猫和小狗,如图所示:
其中小猫负责出题,小狗负责判卷并统计答题情况,两个角色一唱一和,一起来考察玩家的数学算术水平。
这里的重点是出题,根据题目要求,一个完整的数学算式由3个数字和两个运算符号组合而成,其中数字都是在0~10之间取随机数,而运算符号则是在“+”和“-”之间进行随机。
很显然,我们需要使用变量来保存这3个数字和两个运算符,然后结合随机数设置好数字和运算符的值。小猫要分别说出3个数字、两个运算符和算式,这需要用到字符串连接运算。
实现的流程也比较简单,先设置3个随机数字,再设置两个随机符号,然后拼接算术并提问,当用户输入答案后,由小狗来判断正确与否。
有一个小地方稍微麻烦一点,就是要根据随机的数字和运算符先计算出正确答案并保存起来,作为小狗判断的依据。
两种运算符,一共有4种组合,分别是“+,-”、“-,+”、“+,+”、“-,-”,怎么计算比较简单呢?
常规的方法是使用条件进行判断,4种组合总共也只需要判断4次,感觉也还行。
实际上还有一个更巧妙的方法,这就是在随机运算符的过程中就开始计算,每随机一个运算符计算一次,当两个运算符都确定下来后,正确答案也就出来了,这样可以节省大量的判断语句,岂不妙哉。
。
四.编程实现
根据题目描述和思路分析,我们可以分6步来编写程序:
- 初始化设置
- 随机3个数字
- 随机两个加减号
- 小猫说话并出题
- 小狗判断对错
- 重复出题3次并统计答对数量
1. 初始化设置
初始化设置包括两个方面,一是创建变量,二是角色初始化,这里一共需要7个变量,如下所示:
对于小猫角色,设置好其初始位置和方向即可,代码如下:
对于小狗角色,同样需要设置其位置和方向,代码如下:
为了避免小狗头上脚下,需要将旋转方式设置为左右翻转,同时这里将变量“答对题数”初始化为0。之所以放在小狗中设置,是因为接下来对变量的修改也是在小狗角色中,这并不必须的,但是将相关的代码放在一个角色中,是一个良好的编程习惯。
2. 随机3个数字
这个比较简单,为了简化代码,我这里使用了自制积木,代码如下:
3. 随机两个加减号
接下来需要随机“+”和“-”,这是一个二选一的操作,类似于日常生活中掷硬币一样,不是正面就是反面(别跟我说立着,那是特殊情况^_^)。
我们可以在1到2之间取随机数,如果为1,则设为“+”,否则设为“-”。根据前面的思路分析,每设置一个符号,就立刻进行计算,并将计算结果保存到变量“答案”中。
为了简化代码,这里仍然使用了自制积木,代码如下:
代码比较好理解,需要注意一点,就是在每次运算之前需要先将变量“答案”初始化为0。
4. 小猫说话并出题
有了上面的两个自制积木,结合字符串连接操作,按题目要求,先说出3个数字,然后说出两个符号,最后将数字和运算符连接成数学算式进行提问,在绿旗代码块下面添加如下代码:
小猫询问之后,等待玩家输入答案,然后由小狗来判断,因此这里增加了一个广播指令,需要注意的是这里使用了“广播并等待”指令,这是为了确保在小狗判断对错之后,小猫才继续下一次提问。
5. 小狗判断对错
小狗角色在接收到广播之后,直接比较玩家输入的“回答”和变量“答案”即可,代码也非常简单,如下所示:
6. 重复出题3次并统计答对数量
上面的代码,我们只出了一道题,将这个过程重复3次,就可以出3道题,在小猫角色中增加重复指令即可,代码如下:
出完3道题之后,小狗会说出答对题目数量,所以在代码的结尾,增加了一个广播指令,相应的,小狗角色要接受广播并说出答对数量,然后结束程序,在小狗角色中编写代码如下:
至此,整个作品就创作好了,一个简单的自动出题系统就诞生了,赶紧来测试一下你的算术水平吧
五.总结与思考
本题分数为30分,积木块数量85个左右 ,涉及到的知识点主要包括:
- 循环指令的使用,这里使用的是“重复执行10”指令;
- 条件指令的使用,重点是“如果…那么…否则”指令;
- 变量的使用;
- 随机数的灵活运用;
- 算术运算符的使用,包括+和-;
- 字符串连接运算符的使用,尤其是多个连用的情况;
- Scratch问答指令;
- 事件广播机制,重点是广播并等待的作用及使用。
作为中级组最后一题,本题还是有一定难度的,考察的知识点还是挺多的,这需要考生具备扎实的编程基础,能够将各知识点综合起来,实现复杂的功能和效果。
为了简化代码,我在本作品中使用了自制积木,虽然这不是必须的,但是超平老师还是建议你多用用自制积木,这是将复杂问题变成简单问题的思维训练,一旦你具备了这种思维,你会变得越来越厉害的。
如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香