[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第98讲。
蓝桥杯选拔赛每一届都要举行4~5次,和省赛、国赛相比,题目要简单不少,再加上篇幅有限,因此我精挑细选了一部分题目进行解读。
加减大师,本题是第10届蓝桥杯Scratch真题,出现在2019年的市选拔赛考试中,题目要求编程创作加减大师作品,博士汪是加减大师,它会随机地出加减算式,并判断玩家回答的得数是否正确。
先来看看题目的要求吧。
一.题目说明
准备工作:
导入背景库中的“room1”,导入角色库中的“Dog1”、“Pico”。
编程实现:
博士汪是加减大师,它会随机出加减算式,并判断玩家回答的得数是否正确。如果它出的是加法,则两个加数均是自然数且不能大于100;如果它出的是减法,则被减数和减数都要是自然数且小于100,同时被减数大于等于减数。博士汪会出5道题,之后由Pico角色说出回答正确的次数。参考题图所示效果,完成程序。
评判标准:
-
10分:能够设置出题目要求的舞台背景和角色;
-
10分:加减法数字是随机的,且都是两位自然数;
-
15分:程序能确保被减数大于等于减数;
-
15分:Pico能在5次全部回答结束后,正确地说出正确次数。
二.思路分析
本题有两个角色,分别是博士汪Dog1和Pico,如图所示:
博士汪与玩家一问一答,5道题答完后由Pico说出答题情况,这是典型的IPO模式,所谓IPO模式,是指输入(input)-处理(process)-输出(output),根据玩家输入的答案,进行判断处理,然后输出是否正确,以及最后的统计情况。在《数字与图形-第13届蓝桥杯Scratch国赛真题第5题》一文中,对IPO模式有详细的介绍。
在Scratch中,要实现IPO模式,需要使用询问并等待和回答指令。
不过在询问之前,需要由博士汪随机出题,这个随机有两个方面,一是随机加减法,二是随机运算的两个数字,这需要使用随机数指令,同时为了对运算的结果进行判断,要使用变量将参与运算的两个数字保存起来。
在出题的时候,博士汪会说出一个算式,此处的算式需要使用字符串连接操作,将数字和运算符号连接起来,注意不能直接使用加法和减法运算。博士汪一共出了5道题,这个也需要使用变量来计数实现,接下来,我们就一步一步编程来实现。
三.编程实现
根据题目描述和思路分析,我们可以分4步来编写程序:
-
准备工作
-
随机加减法
-
判断结果
-
统计答题情况
1. 准备工作
选中舞台背景,点击“选择一个背景”,导入“room1”背景,然后在角色库中添加好“Dog1”角色和“Pico”角色,并分别放置到舞台下方的左侧和右侧,并对两个角色进行初始化设置,这里的初始化包括位置和方向,代码如图所示:
注意一个细节, 这里的Pico角色,使用了“将旋转方式设置为左右翻转”,其作用是保证在将Pico角色方向设置向左的同时,不进行上下翻转,避免头下脚上的尴尬效果。
2. 随机加减法
是出加法呢,还是减法呢?这是一个问题。
这就和你玩掷硬币游戏一样,是正面呢,还是反面呢?
有规律吗?完全没有,这是一个随机事件,所以我们可以通过随机数来决定是出加法,还是出减法。我们只需要在1和2之间取随机数即可,如果是1,就出加法,否则就出减法。
在Dog1角色中,继续编写代码如下:
针对上面的代码,需要注意两个细节:
1). 在询问并等待语句中,我们使用了3个连接运算符,把“数字1”、“运算符号”、“数字2”和“=?”连接起来,这样才能保证我们看到的是算术本身;
2). 在实现减法的时候,为了确保数字2不大于数字1,在对数字2进行随机的时候,范围并不是1~100,而是1~数字2,这样就可以确保数字2不会超过数字1,这是一个非常有用的编程小技巧。
3. 判断结果
俗话说,有问必有答,当玩家在输入框中输入答案后,如何获取用户输入的内容呢?
这就需要有请“回答”指令出马了,它可以获取用户输入的内容。我们只需要将回答 和“结果”变量进行比较即可,如果二者相等,则说明答对了,否则就是答错了,在Dog1中添加代码如下:
看到这里,我想你应该明白为什么我在专门定义了一个“结果”变量,它帮我们节省了不少代码。
4. 统计答题情况
通过上述代码,我们已经可以实现一道题的问答功能,而博士汪一共要出5道题,所以,我们要将这个问答过程重复5次,同时还需要记录一下答对题目的数量,这需要新建一个变量,不妨将其命名为“正确数量”,并将其初始值设为0,如果回答正确,就将数量加1。5道题答完,则需要发送一个广播,将其命名为“出结果”,相应的代码如图所示:
再切换到Pico角色,它在接收到“出结果”广播时,说出答对的题目数量,对应的代码如下:
至此,整个作品就创作完成了,是时候测试一下你的速算水平啦
四.总结与思考
本题难度系数为3,积木块数量55个左右 ,涉及到的知识点主要包括:
-
随机数指令及设置随机数范围的编程技巧;
-
字符串连接运算,尤其是多个字符的连接;
-
Scratch问答指令;
-
变量的灵活运用;
-
双分支条件指令;
-
事件广播机制。
本题难度中等,涉及到小学数学课中诸多知识点,包括100以内的加减法、自然数、随机数和位置等,这是一道编程和数学紧密结合的好题目。
这也说明如果只具备编程能力,而忽略了其他的知识也是不行的,本题涉及了数学中自然数的概念,在编程竞赛中还会涉及到其它数学知识,如奇数与偶数、质数与合数、最小公倍数和最大公约数等。
如果你觉得文章对你有所帮助,别忘了点赞,你的鼓励是我坚持继续写下去的最大动力,Thanks♪(・ω・)ノ。