最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

Code.org 初学者常见问题分析

编程教程 少儿编程 5159浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

本文以「经典迷宫」和「Minecraft探险家」为例,在Code.org教学课程中整理出几个常见的问题,并尝试分析初学者问题形成的原因,提供适时协助克服困难。

此处谈论的程序执行,其实就是透过指令进行状态的改变与转移,而这些状态的改变是可以预期的。每次程序的执行都是从头开始、重新开始,也就是从最早的状态开始演变。除非有纪录或储存状态,否则程序执行结束后,再来修改的程序也必然重新执行。

问题一:初始状态

初学者知道指令的用途,但对于状态改变的概念并不明确。当现阶段的程序结束,而程序未达成任务,此时初学者会误以为再次执行即可从目前结束状态接续开始。如下图,玩家需要向前移动两步,也就是需要两个「移动-向前」的指令。

 

Code.org 初学者常见问题分析

部份初学者先执行第一段程序

Code.org 初学者常见问题分析

,当发现还差一步时,便会再重新执行一次程序

Code.org 初学者常见问题分析

,想藉此达成任务所需的移动两步。当中并不了解「当运行时」的意义(回复初始状态),仅以现阶段的状态来考虑。如采取「试误(trial and error)」或「由下而上(bottom-up)」的方式逐步建构程序者,对于程序重新执行与初始状态的概念则需要特别澄清。

问题二:明确指令

当初学者知道指令可以造成状态的改变,如

Code.org 初学者常见问题分析

指令可以让主角改变位置(状态),但并不知道作用程度,例如向前移动到底是移动多少距离?移动到何时才会停止?这里可以让初学者先观察单一指令执行后状态的改变为何,程度有多大。明确了解指令的作用与自己预期的结果是否有落差。

问题三:观点与视角

当主角的方向需要进行改变时,初学者多会以自身的角度和观点来判断左右转。而主角的方向与自身方向不同时,判别左右转会令其感到困惑。如能适时协助初学者转换视角(实际起身转至与主角同方向),或采取辅助标示将能顺利判别正确转向。

 

Code.org 初学者常见问题分析

问题四:程序越来越复杂

随着关卡越往后面,任务的复杂度也随之增加。部份初学者在前面的关卡已累积足够经验,透过观察或计算(点数)直接判断所需积木数量,无须以试误的方式逐一放置指令积木来建构程序,换言之可以一步到位写出程序。但复杂度增加,出错的机会也增加。此时,可以协助初学者将程序进行「分段」,先求前段程序的正确,再依续迭加后段的程序。执行过程如果有错误可以立刻发现,避免错误累积或扩散。既然初学者可以快速写出一段程序,此时程序迭加的单元是「一段程序」,而不仅是「一个指令」。但采取迭加的方式建构程序,策略上是没有改变的。

问题五:过度复杂无法一步到位,失去信心

对于尝试错误的代价并不高,看似愚笨而缓慢的方式,试误法具有一定的效益。以现有程序为基础,尝试迭加指令后观察是否达到预期的状态,接着再做修正,如此反复的尝试与修正,对于初学者将会获得更具体的经验,也将更具信心。结构化程序的执行,是复杂的状态演变。反复的试误方式,让初学者的程序保持在最近的状态,而非初始状态,有助于思考下一步该怎么走。

 

Code.org 初学者常见问题分析

问题六:不如预期,如何除错

已具备规划完整程序的能力,执行结果不如预期,且不易发掘出错误的地方。此时,可以协助初学者将程序拆解,先确保前段程序可以达到预期的阶段状态。接着,再把剩余的程序陆续迭加上来,直到发现问题症结点。如下段程序存在错误,无法达成任务。

 

Code.org 初学者常见问题分析

但当程序被分解时,就可以清楚看到每个阶段的状态是否合乎预期。再次透过「拆解」与「迭加」的方式,正确的建构出程序。

 

Code.org 初学者常见问题分析

问题七:发现规律,找出重复

当初学者已正确使用迭加方式达成任务时,可以试着引导学生观察规律的现象,以重复的方式简化指令的使用。

 

Code.org 初学者常见问题分析

如采用口语的方式,说出指令的顺序「放置—向前,放置—向前,放置—向前,放置」,试着让学生更容易听出规律,或以拆解指令的方式协助学生发现规律的现象,如下图。

 

Code.org 初学者常见问题分析

但初学者可能会认为,前面有3次的「放置-向前」,但最后只有1次的「放置」,如何使用重复4次的「放置-向前」。此时,可以比较前3次的重复样式,找出缺漏的指令将之补齐。因为发现规律现象的「起始位置」与「周期」不同,初学者有可能发展出以下不同的程序结果。

 

Code.org 初学者常见问题分析

上述三种程序案例整理(A为「放置」,B为「向前」)

 

Code.org 初学者常见问题分析

初学者使用重复之前,可试着先堆栈出完整的指令,求程序的正确性再求优化。当然,如果重复次数过大无法慢慢堆栈出来,势必就会找到重复的结构来使用。

问题八:不急着使用重复

以类似阶梯的迷宫为例,明显存在规律的样式,非常适合使用重复的方式来达成任务。也因为样式相当简单,让初学者在未经验证的情况下就直接使用重复的结构,倘若重复的内容有误,将不易发现与排除。

 

Code.org 初学者常见问题分析

以下为常见的错误案例:

 

Code.org 初学者常见问题分析

如同影印100份文件一样,我们会先试着印个12份,确认印出来没有问题后,再把后续的9899份文件接着印出。倘若未经确认,就直接印出这100份文件,那么只要其中有误,问题就会变得很难收拾了。

问题九:如何优化,节省积木数量

以下为两个不同班级学生在「Minecraft探险家」的表现结果,可以预见的是「第8关」与「第12关」未能以较少的积木达成任务。

 

Code.org 初学者常见问题分析

以第8关为例,初学者如果纯粹以过关为主,则不会继续思考如何以较少的积木达成任务。再者,即便以巨观的角度看出整体规则,光是左转与右转就足以让人感到困惑,如何直觉地找出重复样式当然不容易。

 

Code.org 初学者常见问题分析

以红色路线为例,运用前述方法,不急着使用重复,反倒是先找出具体可行的解答。将指令逐一迭加出来,再来观察其中规律的样式,找出重复的「起始位置」与「周期」,运用重复来减少积木的使用,优化程序。这里的规律样式为阶梯形式,程序的组合不全然只有重复结构而已,尚有非重复部份。

 

Code.org 初学者常见问题分析

而黄色路线适合熟悉使用重复的玩家,单纯的前进数步与左转。同样先求可行的解法,再找出规律样式,最后使用难度较高的巢状重复(nested loops)达到优化。

 

Code.org 初学者常见问题分析

相对于第8关,第12关的开采红石则是要面对「不易预期」的熔岩,即便规划好程序,难免会在开采后掉入熔岩,此时就得加入判断熔岩的处理策略。同样的,初次尝试仍会以试误的方式进行,先开采红石,待发现底下的熔岩后,再试着放置物品避开熔岩。逐步探查虚实,尝试的过程中先求具体可行的解法,最后再发展出较佳的程序。重复3次所执行的程序虽然都一样,但这重复3次的过程中外界环境却是不相同,有的有熔岩、有的却没有熔岩,但透过「如果」结构却可以发展出一致而弹性的策略应付这些差异解决问题,此为「选择」结构的作用。

 

Code.org 初学者常见问题分析

连结来源

1. Code.org—经典迷宫

https://studio.code.org/hoc/reset

2. Code.orMinecraft 探险家

https://studio.code.org/s/mc/reset

您必须 登录 才能发表评论!