每年四级考完,总有家长和学生来问我:"老师,这次考得怎么样?是不是特别难?"我带的班上也有不少孩子参加了12月这期GESP Scratch四级考试,考完出来表情各异。作为一门教了好几年图形化编程考级的老师,我拿到这套四级真题试卷后,花了一个周末逐题复盘,今天就把这套卷子的考点分布、题型逻辑、编程题的解题思路,以及我踩过的教学坑,一次说清楚。不管你是准备下次考试的学生,还是想帮孩子规划路径的家长,这篇复盘都能帮你少走很多弯路。
需要先说明一个前提:这篇文章里提到的具体编程题,是基于考生考后回忆和历年GESP四级考纲规律做的还原推演,不是官方原卷。但考点分布、能力要求、易错点这些,都是我结合多年教学和历次考情总结出来的硬货,参考价值不打折扣。
1. 四级到底考什么:从题目反推能力模型
1.1 三级到四级:从"会搭积木"到"懂算法"
很多家长有个误区,觉得Scratch四级就是积木用得更多、脚本更长。真不是。三级以前确实在考"能不能实现",比如做一个动画、做一个简单游戏,核心是事件、循环、条件、变量、列表这些基础语法的组合运用。到了四级,题目明显从"实现"转向"设计",从"能做出来"转向"做得巧、做得对、能应对各种输入数据"。
这次卷子最直观的感受是:列表操作的题目明显变多、变深。三级最多让你往列表里存几个名字、求个总和,四级则要求你用列表模拟一个"数据集合",完成排序、查找、插入、删除,还要考虑边界情况。比如某道选择题问"列表长度为5,用二分查找找某个元素,最多需要比较几次",如果孩子只是背过二分查找的结论,没真正理解"每次比较砍掉一半"逻辑,这道题就很容易错。
另一个明显变化是递归。Scratch积木里没有直接的"递归"按钮,但可以用"自制积木"(函数块)自己调自己。四级对递归的考查不是让你画出分形图形就完了,而是要求你能推算递归调用的过程。今年选择题里就有一道给出一段递归自制积木,让考生推算某个输入值下的输出结果,考的就是"调用栈"的基本概念。这种题目非常考验逻辑推理能力,靠死记硬背完全无效。
1.2 四级核心知识模块速览
我复盘完整套卷子后,把考点归成六大模块,基本就是四级复习的完整地图:
| 知识模块 | 卷面占比(估算) | 典型出题方式 |
|---|---|---|
| 顺序/选择/循环综合 | 20%左右 | 嵌套循环的执行次数、条件判断的短路思维 |
| 列表(数组)操作 | 25%左右 | 列表遍历、查找最值、插入删除、冒泡排序 |
| 字符串处理 | 15%左右 | 字符统计、子串查找、逐个字符遍历 |
| 算法思想入门 | 20%左右 | 排序算法过程追踪、二分查找推理 |
| 递归与自制积木 | 12%左右 | 递归过程推算、参数传递、停止条件判断 |
| 数学逻辑与枚举 | 8%左右 | 最大公约数、素数判断、逻辑运算真值表 |
这个分布说明一个问题:四级已经不满足于"语法正确",它要的是算法思维。所谓算法思维,简单说就是"面对一个问题,能拆解成若干步骤,并且能判断哪个步骤更高效、更可靠"。拿排序来说,孩子知道"从小到大排一下"很容易,但要在Scratch里用冒泡排序实现,需要两层循环、交换变量、边界判断,每一步都是对逻辑能力的考验。
2. 这套卷子的题型结构与分值逻辑
2.1 判断题:哪些说法最容易被埋坑
四级试卷的第一部分是判断题,二三十道,每道都很短,但陷阱一个比一个隐蔽。今年考生反馈里,有几道题很有代表性。
一道题问"Scratch中所有积木都可以在舞台和角色中使用",答案是错。熟悉Scratch的人知道,舞台区不能使用移动积木,运动类积木只属于角色。这类题考的是对集成开发环境的细致理解,很多孩子天天编程却从没注意过这类规则。
还有一道题说"使用'重复执行直到'时,如果条件初始就成立,循环体一次都不会执行"。这道题是对的,但错误率极高。原因是很多孩子习惯性把"条件成立"和"继续循环"搞混。重复执行直到的语义是"直到条件成立就停止",所以条件一开始成立,自然一次都不跑。想验证这个逻辑,我建议家长让孩子在Scratch里自己搭一个试试:用变量做计数器,条件设为"计数器=0",循环体里给计数器加1,看看循环体到底执行了几次。自己踩一次坑,比背十遍定义都管用。
判断题还有一个高频陷阱是关于"私有变量"和"全局变量"的。四级考纲里明确要求理解变量的作用域,实际卷子里经常给出一个角色创建了一个仅适用于该角色的变量,然后在另一个角色里引用,问会不会报错。答案是"不会报错,但取到的不是同一个变量"。很多孩子选成"会报错",这就是只记住了结论没理解机制。
2.2 单选题:不是考积木,是考计算机思想
单选题占了试卷的大头,这次复盘下来我最大的感受是:考得特别"计算机"。
比如有道题问"下列哪种数据结构最适合模拟排队买票的场景",选项里有列表、栈、二叉树、图。答案是列表,因为它支持在队尾追加、在队头删除,正好模拟先进先出的队列。如果孩子没接触过"队列"这个概念,看到这道题会很懵,因为他以为四级还是考积木用法。但学过一点数据结构入门的孩子,一眼就能识别出这是队列的应用场景。
再比如考二分查找,卷子里给出一个已排序的列表,问你查找某个目标值,第一次比较的是哪个位置。这题考的不是"记住二分查找步骤",而是"理解中间下标怎么取、后续搜索区间怎么收缩"。我见过不少孩子用Scratch写二分查找,只会照着模板搭积木,换一个列表长度就不会算了,问题就出在没理解"每次排除一半"的本质。
单选题里还出现了一道逻辑运算题,给出一组条件,比如"a和b中至少有一个为真,但不能同时为真",要求你用逻辑运算符组合表达。这道题其实在考"异或"的思想。Scratch积木里没有专门的"异或"块,但你完全可以用(a或b)且(非(a且b))拼出来。能把基础逻辑积木灵活组合成更高级的逻辑,这才是四级想要的。
2.3 编程题:两道大题背后的综合能力考查
四级编程题一般两道大题,每道题目都像一个"小项目",半步一步地拆开做。今年从考生回忆来看,两道大题的风格非常典型:一道偏算法实现,一道偏字符串与逻辑。
先说第一道大题的还原思路。题目大概是:舞台上有一串随机顺序的数字卡片,要求用冒泡排序把它们从小到大排好,并且让排序过程以动画形式展示出来,也就是能明显看到"每一轮比较后,最大的数一路冒泡到末尾"。这道题有三个得分层次。
第一层是"能用两层循环实现冒泡排序",拿到基础分。第二层是"实现过程中正确交换列表元素",这需要引入中间变量,因为在Scratch里,你不能直接用一条积木交换两个变量的值。第三层是"实现动画展示",也就是每比较一次就刷新列表显示,并等待0.1秒。很多孩子代码逻辑没问题,但忘记加刷新展示,导致评分时只能靠代码逻辑判断,丢失了展示分。
第二道大题属于字符串处理。这类题目通常要求统计一段文字中某个字符出现的次数,或者判断某个字符串是不是回文。今年从考后反馈里听到的版本偏向"字符频率统计"方向:给出一段英文句子,统计每个字母出现的次数,然后输出出现次数最多的字母。这道题思路不难,方法是先遍历每个字符,再用列表存储26个字母的计数,但实际操作里有两个坑:一是Scratch中字符串拼接和逐个取字符要用到第X个字符积木,许多孩子对索引从1开始不敏感,取字符时偏移一位;二是中英文的字符处理方式不一样,一个中文字在Scratch里占几个字符位,如果不处理会统计出错。这两点恰恰是四级想要拉开差距的地方。
3. 编程大题解题思路:从读题到写积木的全流程
3.1 冒泡排序动画题的完整拆解
我再把这套编程题往细里讲,因为这才是真正能帮到备考学生的部分。这道"数字卡片排序"题,我给出的标准解法分四步。
第一步:理清输入。假设置舞台区排列着n张数字卡片,每张卡片的数字存在列表卡片数字中。积分球场你的第一件事不是写代码,而是先定义一个明确的目标:循环结束之后,卡片数字中的元素必须从小到大排列。
第二步:设计外层循环。冒泡排序的思路是"进行n-1轮扫描,每轮把当前未排序部分的最大值移动到末尾"。外层循环用重复执行(卡片数字的长度-1)次。这里为什么要减1?因为最后一个数不需要再和任何数比较,它自然就是最小的那个。很多孩子这里写错,写成长度次,结果最后一次循环做了无意义的比较,虽然不影响结果,但体现了对算法过程的不理解,在阅卷时会扣分。
第三步:设计内层循环。内层循环负责"从左到右两两比较,如果前一个大于后一个,就交换位置"。内层比较次数每轮都在减少,所以用重复执行(卡片数字的长度-i)次,这里的i是外层循环的当前轮数。这个细节是这道题的灵魂,如果内层循环永远比较n-1次,算法虽然正确,但不再是严格的冒泡排序实现,评分标准里会明确扣分。
第四步:实现动画与交互。动画的关键是在一次交换完成后,把舞台上对应的卡片造型更新,并让程序等待100毫秒,这样人眼才能看到"大数向后冒"的过程。这里有个技巧:在交换两个列表项时,一定先建一个临时变量存第一项的值,再覆盖第一项,最后用临时变量覆盖第二项。直接使用替换列表的第X项为第Y项会丢失原值,这是新手最典型的Bug。
我把核心积木流程写成一个参考结构,方便家长帮孩子对照:
定义:自制积木 [冒泡排序] 重复执行(卡片数字的长度 - 1)次 将 [交换标记] 设为 0 重复执行(卡片数字的长度 - i)次 如果 <<第(j)项 > 第(j+1)项> 成立,那么 将 [临时变量] 设为 第(j)项 替换列表第(j)项为第(j+1)项 替换列表第(j+1)项为临时变量 将 [交换标记] 设为 1 刷新舞台上的卡片位置 等待 0.1 秒 如果 (交换标记 = 0) 则 停止这个脚本倒数第二行的判断就是冒泡排序的优化:如果某一轮一次交换都没发生,说明列表已经有序,直接结束。这个"提前退出"的优化很体现水平,能加印象分。
3.2 字符串统计题的逐项作答要点
再看字符串统计这道编程题,典型实现步骤是这样:
第一步:确定要统计的对象。假设题目要求统计一个英文句子中每个字母出现的次数,忽略大小写和空格标点。先把句子里的所有字母统一成大写或小写,这里用将[处理后的句子]设为(P句),然后逐个字符处理。
第二步:遍历字符串的每个字符。Scratch的字符串索引从1开始,所以用重复执行(字符数)次,每次取第(i)个字符。这里必须小心:中文字符在Scratch中一个字符算一位,英文字母也算一位,所以如果句子是纯英文,没问题;一旦混入中文标点,索引就乱了。建议考前提点孩子一句:遇到混合文本,先把所有字符统一处理,用"替换"积木把中文标点替换成英文标点,再遍历。
第三步:用一个26项的列表记录每个字母的数量。列表的索引对应字母顺序,比如第1项存字母A的数量,第2项存字母B的数量。每取到一个字符,先判断它是不是字母,如果是,就通过字符转ASCII码的运算算出它在列表中的下标,再把对应项加1。Scratch里有字符的ASCII码这个运算积木,用ASCII码(字符) - ASCII码(A) + 1就能定位下标。
第四步:输出结果。遍历计数列表,找到最大值对应的下标,再转换回字母,用"说"积木输出结果。注意如果有多个字母并列第一,题目的要求可能是全部输出,也可能只输出一个,读题时务必看清。这里有个细节:局部变量在循环里的作用范围,如果孩子在循环内新建一个"最大次数"的变量,那么每次循环它都会重置为0,导致结果总是最后一个字母。正确做法是在循环外初始化这个变量,每次循环里只更新它。
这道题的整体难度其实不大,它的区分度体现在细节上:是否处理大小写、是否正确判断字符范围、是否考虑并列情况。这些恰恰是考纲中"通过实际问题训练程序健壮性"的体现。
3.3 从积木到代码:四级备考的思维转换
复盘整套卷子,我还发现一个趋势:题目里的"Scratch味儿"越来越淡,"编程味儿"越来越浓。同样考排序,以前可能给出一段已经搭好的积木让你补全,现在是给你一堆乱序卡片,让你从零设计排序流程。这种开放性命题方式,明显是在为后续学习C++/Python打基础。
所以我一直和我的学生说,如果你是为了拿证而学四级,格局就小了。四级真正的价值是让孩子把Scratch当作"算法思维训练场",用积木这种低门槛的方式,提前触摸到后面代码编程才有的概念:数组、排序、查找、递归、栈、队列。很多孩子在Scratch阶段建立起的逻辑直觉,到了C++阶段会非常有优势。反之,如果只在Scratch里重复做动画、做小游戏,那四级学习的收获就要小得多。
4. 考场实操中的高频失误与时间分配技巧
4.1 编程环境与交卷环节的细节
GESP的Scratch四级考试是在官方指定的图形化编程环境里完成的,这个环境和孩子们平时用的Scratch开源版有一定差异,界面布局、积木位置、甚至部分积木名称都可能不一样。有经验的孩子进考场后,会先用几分钟熟悉环境,找到"自制积木"、"列表"、"字符串运算"这些关键积木到底放在哪。我见过不只一个孩子,因为没提前熟悉官方环境,在找积木上浪费了大量时间。
交卷环节也是一个隐藏考点。四级考试要求在考后提交代码,也就是把你的程序上传到平台。这里有个坑:有些孩子做完编程题后直接交卷,但没检查"列表初始化"的积木是不是放在当绿旗被点击的事件下面。如果初始化积木漏了,程序运行后列表还是上一次的数据,测试用例全错,这种失分是最冤的。建议孩子做完题后预留5分钟,重新点击绿旗,从头到尾跑一遍两个编程题,确认每次运行结果一致,再确认提交。
还有一个容易忽略的规则:Scratch四级考试虽然有两道编程大题,但它们的测试数据是多组输入。不同测试点考察不同的边界情况,比如"列表长度为0"、"字符串为空"、"所有元素都相等"等等。孩子提交前要特别检查自己的程序能否处理这些边界输入。很多程序在常规数据上跑得很好,一遇到长度为1的列表就直接报错,就是因为循环次数算错。
4.2 丢分重灾区Top 5
我根据多年带考经验和这次复盘,把四级孩子最容易丢分的地方排了个序:
列表索引越界。Scratch的列表如果访问不存在的下标,会直接报错并停止程序。许多孩子在循环里写了
第(长度+1)项,只要最后一项处理完,程序就崩了。解决办法是循环次数统一用列表长度纳底,涉及第(j+1)项时,循环次数最多只能到长度-1。变量初始化位置错误。把计数器变量初始化放在循环内,导致每次循环都清零,这是最经典的逻辑题陷阱。判断变量初始化位置的标准是:变量是否需要在循环内保留历史状态,如果需要,就必须在循环外初始化。
递归缺停止条件。考递归的编程题里,如果自制积木里没有"如果满足XX就停止该脚本"的语句,程序就会无限调用自己,最后卡死。我批改学生作业时,见到最多的问题就是递归的结构写对了,但忘了设计"递归出口"。
字符串与列表混淆。Scratch里字符串和列表的遍历方式完全不同,字符串用
第(i)个字符,列表用第(i)项。考试时紧张状态下一个不留神就混用,编译时往往看不出问题,但运行结果完全不对。不会手推算法过程。单选题里经常出现"第几轮冒泡之后的序列是什么"这种过程追踪题。很多孩子平时用积木跑结果没问题,但在纸上倒推算法过程就卡壳。这个能力只能在平时训练,建议每学一个算法,都让孩子用手在草稿纸上模拟一遍小规模数据的执行过程,而不是只依赖电脑运行结果。
4.3 时间分配的合理方案
四级考试的总时长虽然是90分钟,但实际操作中真的会遇到时间不够用的状况。按照这次题量和难度,我建议按下面这个比例分配:
- 判断题和单选题:40到45分钟内完成。做题时遇到拿不准的,先标记跳过,不要在一道题上死磕太久。选择题的分值和难度不一定成正比,把时间留给后面的编程大题更划算。
- 第一道编程题:25到30分钟。冒泡排序动画题需要搭积木、调动画、测数据,建议先搭核心排序逻辑,能跑通以后再补动画效果,不要一上来就追求动画完美。
- 第二道编程题:20到25分钟。字符串统计题相对独立,按"拆步骤、写实现、测边界"的顺序进行。给每个环节留够时间,特别是最后的测试环节。
- 剩余5到10分钟:全面检查。重点检查列表初始化、变量作用域、递归出口,然后完整运行一遍两个程序。
这个方案不一定适合每个孩子,关键是平时在家做模拟卷时就要养成计时习惯,知道自己哪类题目容易超时,提前调整策略。
5. 从12月这套题看未来的备考方向
5.1 知识查漏补缺清单
如果你准备参加下一期四级考试,我建议按下面这份清单自查一遍,哪个模块有短板就重点补哪个模块:
- 列表基础:你能熟练完成列表的添加、删除、插入、替换吗?能遍历列表求最值、求和、计数吗?
- 排序算法:能不看任何资料,用两层循环写出冒泡排序和选择排序吗?能说出它们每一轮之后列表状态的变化吗?
- 二分查找:给定一个有序列表,你能说出第一轮比较哪个位置吗?能处理"目标不在列表里"的情况吗?
- 字符串:能遍历字符串的每个字符、统计字符频次、判断回文、拼接与截取子串吗?
- 递归:能设计一个有明确停止条件的自制积木吗?能推算简单递归函数在给定输入下的执行结果吗?
- 数学基础:质数判断、最大公约数、奇偶判断、反向输出数字这些经典数学编程题,能独立用Scratch实现吗?
这份清单基本覆盖了四级考纲的核心算法点。如果孩子能在不看答案的情况下完成70%以上,四级的通过希望就很大;如果低于50%,建议先回到三级内容巩固基础,不要急着报四级。
5.2 三个月备考计划参考
距离下一次考试如果还有三个月,我通常会让学生按这么安排复习:
第一个月打基础。把列表、字符串、自制积木这三个核心模块彻底过一遍,每天完成2到3道基础练习题,例如"删除列表中所有偶数"、"统计一句话中的单词数量"、"制作一个能够计数的自制积木"。这个阶段要求不追求难度,追求熟练度。
第二个月学算法。集中攻克排序、查找、递归三大块。每学一个算法,都先在纸上用手推一遍执行过程,再在Scratch里实现。这个月可以做历年真题里的算法题,但不用计时,重点是理解每个步骤的原理。
第三个月刷套卷。每周完整做2套模拟卷,严格按照90分钟计时,模拟考场环境。做完后必须复盘错题,把错题对应的知识点标记出来,考前一周集中复习错题本。这个阶段我发现最有效的方法,是让孩子把做错的题"讲给家长听"——能讲明白,才是真理解。
5.3 给家长和老师的几条建议
我带考这些年,发现四级是一个明显的"分水岭"。不少孩子在三级能考优秀,到了四级却连续失利,不是孩子变笨了,而是学习方式没有切换。如果家长发现孩子刷题很多但成绩不理想,问题通常出在"只看结果不看过程":编程题对着答案搭积木,搭完了也不理解为什么。我强烈建议家长调整一个观念:不要用做完多少题来衡量进步,而要关注"孩子能不能不看程序,独立说出这段逻辑从头到尾是怎么走的"。
另外,Scratch四级的学习路径和目标要早点规划。GESP只是一个阶段性的检验工具,后面还有更高级别的认证和竞赛路径。Scratch阶段的核心目标是培养算法直觉和解决问题的信心,如果孩子在这个阶段被考题难住、失去了编程兴趣,那就本末倒置了。平时练习要以孩子的节奏为准,不必和别人的进度攀比。
5.4 复盘这套卷子后的整体判断
最后说说我对这套试卷的整体判断。从题型分值和命题风格看,它完全延续了GESP四级"重算法、重逻辑、轻操作"的路线,甚至比往届更加注重过程性理解。比如排序题不再满足于让考生写出能跑的代码,而是要展示排序的每一轮变化;统计题也不再只考遍历列表,而是引入了字符编码转换和结果比较的环节。这些变化都指向同一个方向:四级要筛选的是真正理解编程思想的孩子,而不是会背诵积木用法的操作工。
所以如果你是准备四级的学生,我希望你看完这篇复盘后,不要在"记题型"上花太多力气,而是回到算法本身,把手推过程练扎实。判断、选择、编程,无论题型怎么变,内核永远是那些经典思想:分治、遍历、比较、递归。把这些内核真正装进脑子里,任何一套卷子都不会难倒你。
我在实际教学中有一个屡试不爽的方法,最后分享给你:每次学完一个算法,让孩子在纸上用一组很小的数据(比如3到5个数字)完整推演一遍算法的每一步,然后对着自己的推演过程,再搭一遍Scratch积木。这个"先纸面、后积木"的顺序,比直接打开电脑敲代码的学习效率高出一大截,尤其在备考四级这种重逻辑的考试时特别管用。希望这篇复盘对你的备考有所启发,也欢迎留言交流你在这套卷子里遇到的困惑。