• 数据计算-第15届蓝桥杯第一次STEMA测评Scratch真题精选


    [导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第154讲。

    第15届蓝桥杯第1次STEMA测评已于2023年8月20日落下帷幕,编程题一共有6题,分别如下:

    数据计算,本题是2023年8月20日举行的第15届蓝桥杯STEMA测评Scratch编程中级组编程第6题,题目要求编程实现数据计算。游戏开始后,输入两个整数,机器人先说出两数的和,然后将整数转成二进制并输出。

    先来看看题目的要求吧。

    一.题目说明

    编程实现:

    数据计算。

    十进制整数转换成二进制整数:采用“除2取余,逆序排列”法可以将十进制数数转换为二进制整数,例如:140

    计算步骤:

    140/2 = 70 ......0

    70/2  = 35 .....0

    35/2  = 17 ......1

    17/2   = 8 ......1

    8/2   = 4 .......0

    4/2   = 2 .......0

    2/2   = 1 ........0

    1/2   = 0 ........1

    余数逆序排序后,转换为二进制的结果为 10001100

    具体要求:

    1). 运行程序,角色、背景如图所示;

    图片

    2). 等待1秒,机器人说:“输入2个数据”2秒;

    图片

    3). 舞台下方出现询问框,机器人说:"输入第1个数据”(数据为整数,且1 ≤ 数据 ≤ 100);

    例如:输入80

    图片

    4). 完成输入,舞台下方出现询问框,机器人说:"输入第2个数据”(数据为整数,且1 ≤ 数据 ≤ 100);

    例如:输入60

    图片

    5). 完成输入,机器人说出两个数据的和;

    图片

    6). 等待1秒,机器人说出两个数据和的二进制数。

    图片

    评判标准:

    • 5分:满足"具体要求"中的1);

    • 5分:满足"具体要求"中的2);

    • 5分:满足"具体要求"中的3);

    • 5分:满足"具体要求"中的4);

    • 15分:满足"具体要求"中的5);

    • 65分:满足"具体要求"中的6)。

    二.思路分析

    本题只有1个角色,就是机器人,如图所示:

    图片

    本题考查的知识点包括列表应用和数学运算。

    根据题目的描述,我们使用计算思维中的拆分思想,可以将作品的功能分为两个模块:

    • 获取输入数据并求和;

    • 将十进制数字转成二进制;

    其中,模块1比较简单,只需要使用问答指令,将玩家输入的两个数字相加,然后说出即可。

    真正的难点是模块2,对于很多同学来说,二进制是一个陌生的概念。当然,出题老师充分考虑到这一点,所以给出了进制转换的原理,并给出了一个案例。这就要求考生要读懂这个案例,并迅速找到实现思路。

    转换的原理就8个字,“除2取余,逆序排列”,这就意味着需要使用余数指令,如图:

    图片

    同时,每次除以2之后,我们都需要把商保存起来,这里的商必须是整数部分,所以需要结合除法指令和向下取整指令,如图:

    图片

    在这个过程中,我们面临如下两个小问题:

    1). 除2取余运算要执行多少次?

    2). 怎么保存每次运算的商和余数?

    很显然,不同的数字,计算的次数是不一样的,但是它们都有一个共同的特点,就是当商等于0时,就不需要再进行计算了,这就是循环结束的条件。

    每进行一次除2取余运算,下一次就需要对新的商进行运算,是不是要把每一次的商都用一个变量保存起来呢?确实需要保存,但是我们不需要新的变量,直接使用一个变量,每次更新一下即可,这其实就是编程中经典的迭代思想。

    对于每次的余数,则可以使用两种方式来处理,一是使用列表,将每次计算的余数保存到列表,计算完成,依次将列表中的数字取出拼接成一个数字串即可;二是直接使用字符串连接操作,将每次得到的余数进行拼接。在本作品中,超平老师将使用方式1来保存余数。

    思路有了,接下来,我们就进入具体的编程实现环节。

    三.编程实现

    根据上面的思路分析,我们分3步来编写程序:

    • 准备工作

    • 获取数据输入并求和

    • 将十进制转成二进制

    1. 准备工作

    这里的准备工作比较简单,主要是创建好需要用到的变量和列表,如图:

    图片

    其中,变量“i”是计数器,在循环遍历列表时需要用到。

    2. 获取数据并求和

    这一步比较简单,其代码如下:

    图片

    为方便理解,这里使用了两个变量“数字1”和“数字2”,实际上,还可以省去这两个变量,每次将回答进行累加即可,如图:

    图片

    不过,需要注意,使用方式1时,变量“”可以不用初始化,而使用方式2时,必须要将变量“”初始化为0。

    方式2是一个非常好用的编程技巧,如果要输入多个数据的时候,它的优势就体现出来了,你说是吧。

    3. 将十进制转成二进制

    为了简化代码,我们将转换的过程定义成一个自制积木,自制积木的代码如下:

    图片

    简单说明3点:

    1). 列表一定要清空,确保没有垃圾数据;

    2). 变量“二进制”的初始值一定要设置为空;

    3). 在向列表中添加余数的时候,每次将余数插入到列表的最前面,这就相当于逆序保存了余数,在接下来循环遍历列表的时候,只需要按照顺序拼接列表项即可。

    有了自制积木,在绿旗代码块的最下面,添加如下3行代码即可:

    图片

    至此,整个作品就创作好了,一个简易的进制转换计算器就搞定了。

    四.总结与思考

    本题是中级组编程部分第6题,分数为100分,积木块数量40个左右,涉及到的知识点主要包括:

    • Scratch问答指令;

    • 变量的使用;

    • 列表的基本操作;

    • 运算符,包括取余、除法、向下取整等;

    • 字符串连接运算;

    这是中级组的第6题,也是最后一题,难度较大,完成时间20分钟左右,难点是如何实现进制的转换。

    二进制,是计算机技术中广泛采用的一种数制,由德国哲学家莱布尼茨发明,相传是受到了中国易经的启发。

    图片

    二进制数据是用0和1两个数码来表示的数,它的基数为2,进位规则是“逢二进一”,数字计算机只能识别和处理由0和1符号串组成的代码。

    计算机中一切都可以用二进制来表示,不管是图片、指令、文件还是视频在计算机内部都是使用二进制来存储的。

    对于进制之间的互相转换,是每一个学习编程的孩子都必须熟练掌握的,相信通过本作品的学习,你已经掌握了十进制转换二级制的原理和技巧了。

    超平老师给你留一个思考题,如果要将十进制转换成八进制、十六进制,该如何实现呢,能否在本作品的基础上,增加这两个小功能,创作一个进制转换计算器呢。

    如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄

    需要素材和源码的,可以移步至“超平的编程课”gzh。

  • 相关阅读:
    秒验丨Android客户端集成指南
    如何在Python爬虫中使用IP代理以避免反爬虫机制
    uniapp小程序九宫格抽奖
    高斯混合模型GMM及EM迭代求解算法(含代码实现)
    API工具类(一)玩转正则表达式等常用SDK
    作用域安全的构造函数
    音频的传输链路与延迟优化点
    机械臂速成小指南(九):正运动学分析
    Ingress 基于URL路由多个服务
    思维模型 巴纳姆效应
  • 原文地址:https://blog.csdn.net/diamondwang2012/article/details/133364741