「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】或【Python】,即可进入。如果加入了之前的社群不需要重复加入。
我们将有关编程题目的教学视频已经发布到抖音号21252972100,小马老师上,大家可以关注一下。
绳子算法
故事情境:最近在学绳子算术的小星星非常苦恼,他常常在想,如果有一款程序能实现根据输入的两根绳子长度,可以把两根长绳截成长度相等的小段后,直接求出一共可以截成多少段,每段最长多少米就好了。小猫知道后,决定设计一个程序帮助小星星走出绳子算术的困境。
1. 准备工作
(1)保留舞台默认白色背景及小猫角色,将小猫角色调整到舞台上合适的位置;
(2)建立名为“绳子”的列表用于存储数据。
舞台效果如下图所示。
2. 功能实现
(1)点击绿旗,询问“输入绳子长度”并等待;
(2)将输入的绳子长度保存到列表“绳子”后,小猫分别说两根绳子的长度3秒;
(3)根据输入的两根绳子长度,设计算法实现:把两根长绳截成长度相等的小段。求出一共可以截成多少段,每段最长多少米;
(4)计算完成后,小猫分别说“一共可以截成多少段,每段最长多少米。”3秒。
3. 设计思路与实现
(1)角色分析
- 角色:默认角色小猫
(2)背景分析
- 背景:默认背景(无色)
(3)所用积木块介绍
a. 外观类
- 在规定的时间内在舞台上显示输入的文字。
b. 事件类
- 程序开始积木块。
- 点击舞台区的绿旗,执行以绿旗开始的所有程序脚本。
c. 控制类
- 循环积木块:一遍一遍地执行包起来的积木序列。
- 重复执行指定的次数后停止,该积木块通常在角色移动等场景中使用。
- 条件判断语句,如果条件返回值为真(bool值),那么执行模块里面的积木指令,如果条件不成立,返回值为假,执行条件判断模块后面的程序指令。
- 循环积木块:一遍一遍地执行包起来的积木序列。
- 判断条件是否为真,如果尖尖角里面的返回值为真则停止循环。
d. 侦测类
- 角色发出询问,并在舞台下边框弹出对话框,等待用户的输入回答。
- 实时的侦测用户所输入的回答,并存储在“回答”变量中。
e. 运算类
- 连接两个字符串,得到一个新的字符串。
- 逻辑与运算,两个条件,只有两个条件都为真的情况,逻辑运算才返回true值(真),只要满足一个条件为假,则整个逻辑运算返回false值(假)。
- 算术运算,返回左边与右边的商。
- 比较运算,左边大于右边返回true值(真),否则返回false值(假)。
- 比较运算,左边等于右边返回true值(真),否则返回false值(假)。
- 算术运算,返回左边除以右边的余数。
- 算术运算,返回左边与右边的和。
f. 变量类
- 建立一个变量,输入变量名称,然后选择适用于所有角色还是适用于当前角色。
- 设置变量的值为给定值,通常用于初始化变量。
- 设置变量的值为自身的值加X。
- 建立一个列表,输入列表名称,然后选择适用于所有角色还是适用于当前角色。
- 清空列表。
- 将一个元素加入到列表的末尾。
- 获取列表中索引为X的项目。
(4)角色、舞台背景设置
a. 角色设置
默认角色设置,无需修改角色造型。
b. 舞台背景设置
默认舞台背景设置,无需修改舞台背景。
(5)脚本编写
新建列表“绳子”,用于存储数据。
新建变量“a”,用于存储第一根绳子的长度。
新建变量“b”,用于存储第二根绳子的长度。
新建变量“c”,用于存储取出绳子的长度。
新建变量“result”,用于存储最后的结果,每段最长的米数。
a. 角色:小猫
流程描述:
点击小绿旗时:
- 开始:点击绿旗,也就是程序启动,就要执行后续的程序指令。
- 初始化列表:清空 绳子 列表。
- 重复执行2次:把2次输入的绳子长度存入列表中。
- 询问“输入绳子长度”并等待。
- 将输入的绳子长度保存到列表“绳子”。
- a = 绳子的第1项。
- b = 绳子的第2项。
- 说第一根绳子的长度3秒。
- 说第二根绳子的长度3秒。
- 初始化变量:result = 1,c = 1。
- 重复执行直到 c > a 或 c > b:从1开始遍历,直到min(a,b),寻找a,b的最大公约数(即:每段最长多少米)。
- 如果c能够被a整除 并且 c能够被b整除,则result = c。
- c = c + 1。
- 计算完成后,小猫分别说“一共可以截成多少段,每段最长多少米。”3秒。
4. 评分标准
(1)点击绿旗,出现询问“输入绳子长度”并等待。(2分)
(2)将输入内容加入列表,小猫分别说两根绳子的长度3秒。(4分)
(3)编写程序实现:把两根长绳截成长度相等的小段。求出一共可以截成多少段,每段最长多少米。(6分)
(4)计算完成后,小猫分别说“一共可以截成多少段,每段最长多少米。”3秒。(3分)
5. 考点分析
四级考试大纲与说明
(一)考核目标
学生对编程软件的较强综合操作能力,考查使用软件进行数据处理的能力,同时对函数和过程的理解和使用进行考查,以及学生对已掌握知识的深度综合应用及思考更优程序方案,另针对参加 4 级考试的学生将进行结合分析和计算的情境考查。
(二)能力目标
通过本级考试的学生,逻辑推理能力很不错,对数据的处理,函数和过程等的理解和使用掌握得很不错,对已学知识的综合应用能力很好,具备一定的程序调试和优化能力。学生对编程软件的进一步综合操作能力,考查新建链表,字符串处理,循环的复杂运用,理解函数的作用范 围,理解多线程的概念,同时考查学生对已掌握知识的深度综合应用, 另针对参加 4 级考试的学生将进行难度更高的逻辑推理能力的考查。
(三)考试标准
1、理解并使用链表、函数和多线程。
- 1)能够新建链表;
- 2)能够完成对链表中数据的插入、删除;
- 3)字符串处理;
- 4)能够自己创建一个有返回值的函数;
- 5)理解函数的作用范围;
- 6)理解多线程的概念;
- 7)循环的复杂运用;
- 8)逻辑,算法过渡。
(四)知识块
- 1. 字符串:字符串操作,加密
- 2. 函数:不同类型函数的创建,参数的设置,返回值,函数的调用
- 3. 链表:创建链表,实现数据的增、删、改、查,显示和隐藏,找最值,平均值等
- 4. 大综合:前面所有知识点的综合使用,考查
- 5. 程序优化:使用已有知识进行问题的优化
- 6. 逻辑,算法过渡:分析和计算情境考察,如爬楼梯的方法(递归)
- 7. 循环的复杂运用:循环的结构,循环的嵌套,递归调用
备注:
- 为本题涉及到的知识点。
- 为需要掌握,但本题未涉及到的知识点。
(五)题型配比及分值