列表排序-第14届蓝桥杯STEMA测评Scratch真题精选

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

蓝桥杯选拔赛现已更名为STEMA,即STEM 能力测试,是蓝桥杯大赛组委会与美国普林斯顿多文化教育研究中心合作推出的考试项目。STEM能力测试致力于综合评价学生的 STEM 水平,对学生的科技素养、逻辑思维和编程能力等三方面进行客观科学的测试。

列表排序,本题是2022年12月18日举行的第14届蓝桥杯STEMA考试Scratch图形化编程真题中级组编程部分第5题,是中级组最后一题。题目要求编程实现列表排序,先向列表中插入5个不重复的数字,然后按照从小到大的顺序进行排序,最后逐个判断是否为3和5的倍数。

先来看看题目的要求吧。

一.题目说明

编程实现:

列表排序。

具体要求:

1). 运行程序,角色、背景如图所示(创建一个“数据”列表);

2). 等待1秒后,在1-100中随机生成5个不重复数字加入到“数据”列表中;

3). 按下空格键,“数据”列表中的5个数字按照从小到大的顺序进行排序;

4). 等待1秒后,小猫依次说出5个数字是否是3的倍数、5的倍数;

5). 程序持续重复2)、3)、4)步骤。

评判标准:

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

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

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

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

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

二.思路分析

本题只有1个角色,就是默认的小猫,如图所示:

根据题目描述,可以将作品的功能分成如下三个方面:

  • 初始化列表

  • 列表排序

  • 判断是否为3和5的倍数

其中初始化列表,就是向列表中插入5个1~100之间的随机数,不过要避免重复数字,所以在插入数据的时候,需要做一个判断。

判断是否为3和5的倍数也比较简单,考察的是数学中的除法和余数知识,在Scratch中,专门提供了一个计算余数的指令,如图:

列表排序是这里的重难点,排序是编程中最常见的基础算法,关于排序的算法也挺多的,常见的经典排序算法有选择排序、插入排序、冒泡排序和快速排序等。

其中选择排序相对简单一些,其实现原理和步骤可以参考《考试成绩系统-第12届蓝桥杯Scratch省赛2真题第5题》这篇教程。

今天,超平老师再介绍一种更为简单的排序算法,保证你肯定听得懂、学得会、还能快速地写出程序。

列表中的数字范围在1~100之间,我们不妨从100开始,将列表中的5个数字逐一进行比较,如果某一项等于100,说明这一项就是最大的数字,如图所示:

此时,可以先将100从列表中删除,然后再将100插入到列表的最前面,如图:

一轮循环结束之后,再用99和列表中的每一项进行比较,如果没有相等的列表项,则不做任何操作。

不断地重复这个过程,把100~1之间所有的数字都循环处理一遍,就可以得到一个从小到大排列的有序列表了。

怎么样,这个算法是挺简单的吧。

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

三.编程实现

根据题目描述和思路分析,我们可以分3步来编写程序:

  • 初始化列表

  • 列表排序

  • 判断是否为3和5的倍数

为了简化代码结构,也为了更好的讲解,针对上述3个功能,分别使用一个自制积木来实现,对应的主程序如图所示:

相应的,需要先创建好列表”数据“,并清空列表。

1. 初始化列表

初始化列表自制积木的代码如下:

需要注意的是,第一次列表是空的,可以直接向列表中插入一个1~100之间随机数,但是从第二次开始,后续的4次就不能直接插入随机数了,而应该进行判断,如果随机的数字已经有了,则需要重新随机一个数字,从而避免插入重复的数字。

2. 列表排序

根据前面的思路分析,我们从100开始,逐个和列表中的每一项进行比较,这需要使用嵌套循环,具体的代码如下:

在嵌套循环中,使用了两个变量,一个是i,一个是j,其中i用于外层循环,从100开始,每执行一次,就减去1,重复100次。而j则用于内层循环,表示列表的编号,每一次都是从第一项开始,重复5次,将列表中的每一项数据都比较一遍。

3. 判断是否为3和5的倍数

一个数字是否为3和5的倍数,可以分成如下4种组合情况:

  • 既是3的倍数,也是5的倍数

  • 是3的倍数,不是5的倍数

  • 是5的倍数,不是5的倍数

  • 既不是3的倍数,也不是5的倍数

而且这四种组合是互相排斥的,也就是只能满足其中一种情况,所以比较好的做法就是使用双分支条件指令”如果...那么...否则“,并通过嵌套的方式区分4种不同的情况。

判断的方法也非常简单,直接使用计算余数指令即可,具体的代码如下所示:

注意,对于同时满足条件的情况,需要使用逻辑与指令。

至此,我们的列表排序作品就创作好了,感觉也不是很难吧。

四.总结与思考

本题是中级组最后一题,分数为30分,积木块数量72个左右 ,涉及到的知识点主要包括:

  • 列表的操作,包括列表数据的插入和删除;

  • 使用循环结合变量遍历列表;

  • 随机数的运用;

  • 除法和余数,重点是计算余数的指令;

  • 逻辑与运算;

  • 循环嵌套和条件嵌套。

这是中级组最后一题,难度较大,考察的重点是列表操作,尤其是排序,如果之前没有接触过排序,基本上是做不出来的。

关于列表排序,是必备的编程技能,也是孩子踏入算法殿堂的第一道门槛,在蓝桥杯竞赛中,已经出现过好几次了。比如第10届省赛中的《列表排序-第10届蓝桥杯Scratch省赛真题第6题》,还有第12届省赛中的《考试成绩系统-第12届蓝桥杯Scratch省赛2真题第5题》,可见排序算法的重要性,你可以好好掌握哦。

当然,排序算法众多,这里只是介绍了一种比较简单的方式,后续超平老师会继续讲解其它几种算法实现,请持续关注。

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

需要素材和源码的,可以移步至“超平的编程课”gzh,或者联系本人。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/589.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Request和Response的概述

⭐作者介绍:大二本科网络工程专业在读,持续学习Java,输出优质文章⭐作者主页:︶ㄣ释然⭐如果觉得文章写的不错,欢迎点个关注😉有写的不好的地方也欢迎指正,一同进步😁Request和Respo…

UE笔记-AI Move To无法正常结束/打断 1

启用Stop on Overlap 会导致AI与目标距离受到碰撞影响,实际效果需按要求处理 当Lock AILogic为True时,Move To的Task无法被黑板装饰器打断 当Use Continuos Goal Tracking为True时,Move To的节点不会根据Acceptance Radius设定而结束&#x…

第五周作业、第一次作业(1.5个小时)、练习一

一、创建servlet的过程没有太多好说的,唯一需要注意的就是:旧版本的servlet确实需要手动配置web.xml文件,但是servlet2.5以后,servlet的配置直接在Java代码中进行注解配置。我用的版本就不再需要手动去配置web.xml文件了,所以我只…

Spring Cloud Alibaba 微服务2,注册中心演变 + Nacos注册中心与配置中心

目录专栏导读一、什么是Nacos?二、注册中心演变及其设计思想1、RestTemplate调用远程服务2、通过Nginx维护服务列表(upStream)3、通过Nacos实现注册中心4、心跳版Nacos三、Nacos Discovery四、Nacos核心功能1、服务注册2、服务心跳3、服务同步…

Python的30个编程技巧

1. 原地交换两个数字 Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方法,请参见下面的示例: x,y 10,20 print(x,y) x,y y,x print(x,y) #1 (10, 20) #2 (20, 10) 赋值的右侧形成了一个新的元组,左侧立即解…

Kubernetes详细安装

By:雪月三十 参考: https://blog.csdn.net/qq_43580215/article/details/125153959 https://juejin.cn/post/6844903943051411469 https://mp.weixin.qq.com/s?__bizMzI0MDQ4MTM5NQ&mid2247502359&idx1&sn8c16100c9731359b9864403183f44233…

python 正则使用详解

python 正则使用详解什么是正则在 python 中使用正则一些正则的定义python 正则的方法match 从字符串开头匹配正则返回的结果分析(重要)fullmatch 严格匹配整个字符串search 任意位置开始匹配sub 替换匹配内容subn 以元组方式返回替换结果split 正则切割…

一 Go环境搭建

1. 下载地址 https://golang.google.cn/dl/ 傻瓜式安装,自动会配置path的变量,安装完成后可以使用go version 查看当前安装的版本 本文使用目前最新的1.20.2版本 2. 配置go环境 cmd控制栏打开输入以下命令(如果cmd有问题可以尝试powershe…

面试了一个32岁的程序员,一个细节就看出来是培训班的····

首先,我说一句:培训出来的,优秀学员大有人在,我不希望因为带着培训的标签而无法达到用人单位和候选人的双向匹配,是非常遗憾的事情。 最近,在网上看到这样一个留言,引发了程序员这个圈子不少的…

Qt(c++)调用海康威视监控摄像头

文章目录一.海康威视监控摄像头开发SDK介绍二.海康SDK模块说明三.Qt项目中海康威视SDK配置四.实时预览摄像头图像程序一.海康威视监控摄像头开发SDK介绍 设备网络SDK是基于设备私有网络通信协议开发的,为嵌入式网络硬盘录像机、NVR、网络摄像机、网络球机、视频服务…

【Linux】冯诺依曼体系结构

冯诺依曼体系结构一、计算机结构体系来源二、冯诺依曼体系结构三、冯诺依曼体系结构中的数据流动一、计算机结构体系来源 研制电子计算机的想法产生于第二次世界大战期间,主要用来进行弹道计算,在"时间就是胜利"的战争年代,迫切需…

【JavaEE进阶篇1】认识Spring、认识IoC、使用spring创建对象

目录 一、什么是Spring 1.1容器 1.2什么是IoC 传统方式创建对象的问题: 类与类之间的耦合性过大 Ioc的优点 Spring IoC容器最核心的功能 1.3DI概念说明(Dependency Injection) IoC和DI的区别是什么 二、Spring项目的创建 三、Spring的使用(把对象存储到spr…

ChatGPT是如何训练得到的?通俗讲解

首先声明喔,我是没有任何人工智能基础的小白,不会涉及算法和底层原理。 我依照我自己的简易理解,总结出了ChatGPT是怎么训练得到的,非计算机专业的同学也应该能看懂。看完后训练自己的min-ChatGPT应该没问题 希望大牛如果看到这…

stm32外设-中断详解

0. 写在最前 本栏目笔记都是基于stm32F10x 1. 中断是啥? 什么是中断:CPU在处理某一事件A时,发生的另外某一事件B请求CPU去处理(产生了中断),随后CPU暂时中断当前正在执行的任务,去对事件B进行处…

Java的二叉树、红黑树、B+树

数组和链表是常用的数据结构,数组虽然查找快(有序数组可以通过二分法查找),但是插入和删除是比较慢的;而链表,插入和删除很快(只需要改变一些引用值),但是查找就很慢&…

【C#】组件化开发,调用dll组件方法

系列文章 C#项目–业务单据号生成器(定义规则、自动编号、流水号) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/129129787 C#项目–开始日期结束日期范围计算(上周、本周、明年、前年等) 本文链接&…

快排函数 -- qsort函数(Quick Sort)

文章目录🔎1.qsort函数简介💡1.1.函数原型💡1.2.参数含义🔎2.比较函数介绍🔎3.比较函数使用案例💡3.1.整型数组💡3.2.浮点型数组💡3.3.结构体类型 - 字符串🔎4.利用冒泡排…

震撼,支持多模态模型的ChatGPT 4.0发布了

最近几个月,互联网和科技圈几乎ChatGPT刷屏了,各种关于ChatGPT的概念和应用的帖子也是围绕在周围。当去年年底ChatGPT发布的那几天,ChatGPT确实震撼到了所有人,原来AI还可以这么玩,并且对国内的那些所谓的人工智能公司…

Tesla都使用什么编程语言?

作者 | 初光 出品 | 车端 备注 | 转载请阅读文中版权声明 知圈 | 进“汽车电子与AutoSAR开发”群,请加微“cloud2sunshine” 总目录链接>> AutoSAR入门和实战系列总目录 带着对更美好未来的愿景,特斯拉不仅成为有史以来最有价值的汽车公司&…

多线程(初阶)

文章目录一.初始线程(Thread)1.1.线程的概念1.2.线程的优势1.2.1.线程比进程更轻量1.2.2.并发编程1.3.线程和进程的区别二.Thread类方法2.1. java 中创建线程的方法2.1.1. 继承Thread,重写run2.1.2. 实现Ruuable接口2.1.3. 使用匿名内部类,继承Thread2.1.4.使用匿名内部类,实现…