本文转自于”超平的编程课“公众号,更多教程,可移步至公众号。
[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第5讲。
第12届蓝桥杯青少年组国赛于2021年5月29日举行,本次赛事仍然采取了在线考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。
存钱罐,本题是第12届蓝桥杯Scratch国赛真题编程部分的第3题,初级组和中级组都有此题。题目要求考生使用Scratch编程模拟往存钱罐中存钱以及从存钱罐中取钱的过程和效果,本题难度系数为3,分值为60分。
先来看看题目的详细说明吧。
编程实现:存钱罐
具体要求:
1). 点击绿旗,出现对应的角色与背景(初始余额为1000);
2). 点击存钱,询问存多少钱并出现对话框;
3). 输入存钱数,余额显示存入后的总钱数;
4). 点击取钱,询问取多少钱并出现对话框;
5). 在对话框内容输入取钱数额,余额显示取出后的总钱数;
6). 如果取出的钱数大于余额,则显示余额不足1秒后显示此时余额;
评判标准:
5分:满足要求1;
10分:满足要求2
10分:满足要求3;
10分:满足要求4;
10分:满足要求5;
15分:满足要求6。
这是一道简单的编程题,涉及到角色也只有两个,分别是“存钱”按钮和“取钱”按钮,如图所示:
本题没有复杂的逻辑,无非就是进行简单的加减运算,唯一要注意的就是在取钱的时候,要考虑两种情况,即余额充足和余额不足两种情形。
接下来,我们就分两步来编写程序:
存钱过程
取钱过程
1.存钱过程
根据题目描述,初始余额为1000,在存钱和取钱的过程中,余额会发生变化,因此,需要创建一个变量,来表示余额,并设置初始值为1000,在“存钱”角色中编写代码如下:
代码非常的简单,需要注意的是,除了变量初始化之外,还有设置方向和位置的指令,这是一个非常好的习惯,确保任何时候只要点击绿旗,“存钱”角色就可以回到正确位置。
这里的“余额”变量是一个全局变量,以确保在两个角色中都可以使用,同时要注意,变量有三种显示效果:
正常显示
大字显示
滑杆
根据前面的图片展示效果,在这里我们需要将“余额”变量设置为第二种,即大字显示效果,并拖放到正确的位置。
当点击“存钱”按钮时,会询问“存多少钱?”,并根据用户输入数额改变余额,这需要使用Scratch侦测模块中的问答指令,代码也非常简单,如图:
注意:Scratch中的“+”指令只对数字起作用,如果输入的是非数字内容,都会被当作0来处理。所以,如果输入的不是纯数字串,那么余额将保持不变。
2.取钱过程
接下来是取钱过程,当点击“取钱”按钮时,会询问“取多少钱?”并根据输入金额作相应处理。
这里有两种情形,一是余额不足,一是余额充足,所以,我们需要使用“如果...那么...否则”双分支条件指令。
如果余额充足,直接相减即可。如果余额不足,则需要先将变量“余额”修改为“余额不足”,1秒后再显示原来的余额,因此我们需要借助一个临时变量“临时余额”来保存余额。
切换到“取钱”角色,编写代码如下:
如此一来,取钱过程也就顺利完成了。
本题相对比较简单,对于大部分考生来说是送分题,考察的知识点包括:
scratch问答交互,包括“询问并等待”和“回答”两个指令;
变量的使用,这里主要是指全局变量;
减法和减法运算符
“如果...那么...否则”双分支条件的使用;
另外,需要说明的,本题中要求输入的是数字,但用户可能会输入非数字,对于用户的非法输入,在实际编写程序中是需要进行处理的,以避免出现bug。只是题目中没有要求,由于考试时间优先,可以先不予考虑。不过你可以思考和尝试一下,要确保用户输入正确的内容,该怎么做呢?
需要素材和源码的,可以联系作者,或者移步至”超平的编程课“公众号。