分享

从趣味游戏到编程思维——Scratch编程课程设计思想

 chenholly1 2017-12-24


邓博士和很多在学习编程孩子的家长交流后,发现一个共同的特点:家长其实对于孩子为什么要学编程并不是很理解,就觉得反正买个课程又不贵,孩子喜欢而已,就试试呗!另外,有些理工科背景的家长也对孩子的Scratch项目有点疑惑:看起来小孩子过家家一样的东西,小盆友们真的在学编程么?希望看完这篇文章,能够让各位家长对Scratch课程背后的设计思想所有了解,对这两个问题不再困惑。



毋庸置疑,因为Scratch的趣味性,让它在青少年编程领域获得广泛认可。在这样的趣味性背后,是Scratch对编程思维的包装和训练。说起编程思维,我们先来看一个耳熟能详的小故事:


数学王子高斯在小学三年级时候,老师要求从1+2+3开始一直加到100,得出的和是多少?其他同学都费劲地一个数一个数的加,只有小高斯注意到了这些数可以两两配对,相加和为101:

1+100=101

2+99=101

......


一共有50对,最后的和可以用乘法来做:(50X101)=5050。


我们感慨数学王子的惊人天赋同时,不要忘记了高斯的解题思维:但凡重复的问题,一定有规律。高斯首先提取这个规律,然后再进行求解。这就是编程思维中常说的问题拆分、抽象思考和模式识别。高斯的思考实际上解决的不仅仅是从1加到100,老师如果再出101加到200,201加到300,这个模式都可以解决。再进一步延伸,就可以概括出求任意范围【a, b】连续整数求和公式:(a+b)x (b-a+1)/2。


编程中有一个重要的概念:顺序执行。意思是程序需要按照一定的顺序依次执行语句,这就要求学生在编程时要将想要实现的功能分解为多个具体步骤,并且要考虑到不同步骤之间的关系和触发条件。


学了编程的孩子,在思考问题时会更加注意问题内部各个因素之间的关系,会对解决问题的步骤有一个更加清晰的思考。这之中涉及很多的数学和逻辑学知识。编程中还需要考虑到程序执行时出现的各种可能,这锻炼了学生思考问题时的全面和细心。 除此之外,学生在学习编程的过程中会不断尝试、不断面对挑战、不断经历失败,不断从错误中学习,只有经历了这些,才能最终获得程序的正确运行。


下面我们来看一个例子:打地鼠是孩子们很喜欢的小游戏,通过这个了解如何把编程思维的锻炼贯穿在创作中。




在孩子兴高采烈要开始做这个小程序的时候,老师会先引导孩子思考这么几个问题:


1、屏幕上的6只地鼠有关系么?这6只地鼠是彼此没有关系的,基于随机数来控制是否冒出来,再用个随机数决定冒出来多久。因此,一只和六只的代码是一样的,用Scratch的角色复制就可以了。为了屏幕整洁,我们先从一只地鼠开始,让它调皮的冒头出来。


2、识别锤子的状态:正常,移动,敲击。把锤子随鼠标移动,按下鼠标按钮敲击这个流程实现。


3、给锤子和地鼠加上一个判断逻辑,如果锤子击中地鼠,则显示特效,表明成功得分。


4、调试完毕后,将一个地鼠复制6份,进行联调。


此时,一个基本版的打地鼠游戏就完成了。这是一个标准的“问题拆分-逐项解决-综合汇总”的过程。在这个过程中,主要的难点并不是Scratch代码本身,而是让同学们理解这个思考的过程。


事实上,如果在没有提醒的情况下,绝大部分孩子会按照最习惯的做法,一上来就连放六个地鼠,然后逐个调整和修改,难免顾此失彼。当然,老师也会愿意让他们犯一下这样的错误,然后再和上面的方法进行对比,加深对思考方法的理解。


完成这个基础版本后,老师会一步一步的提出新的功能,让同学们在现有游戏的基础上实现:


1-计分功能。打中一只地鼠加一分,这个把之前学的变量概念加进去。


2-限时功能,30秒钟一到游戏结束,记录下多轮游戏的最高分,做个排行榜出来。


3-仿效“水果忍者”游戏,给地鼠中加入一个危险的炸弹!如果炸弹冒出来被击中了,则扣10分!


完成这三个挑战功能后,这个项目就成功结束了(目前一堂课内完成以上功能要求的同学不到一半)。但是我们还会留一个开放问题给意犹未尽的孩子:


如果你把这个游戏给你的朋友玩,他觉得太简单了,希望你提升难度。同时你的妹妹也想玩,但她觉得太难了,希望减少难度。你如何为游戏设计一个难易程度机制,并方便的调节?


这个开放问题没有标准答案,孩子们可以自由发挥。小鱼同学选择的方法是加了个开关,如果“Hard”模式的话,地鼠出来得时间更短,而且出来后还会随机左右移动一下,更加难打中了。说实话,这个设计出来也出乎我的意料,我原先考虑就是加快速度缩短冒头时间这样的标准套路,但小鱼的这个随机移动让我有点惊喜。


以上例子,是我们Scratch课程设计思想的体现:重要的不是完成这个趣味小游戏本身,而是同学们用什么样的思考方式和思维模型完成这个任务。通过这样的趣味程序设计操作,让编程思维得到锻炼。


除此以外,Scratch的友好功能和丰富的表现能力,让孩子能够借助这一工具表达出更多的创意。这是一个国内四年级女生,为校园“爱护环境,节约用水”环保宣传月活动做的小游戏:


如果说打地鼠游戏中我们更多考虑的是算法和逻辑部分,那这个小游戏则是艺术和创意的良好体现。对于一个10岁的孩子来说,这个作品是很有亮点的:


  • 画面整洁清爽,元素丰富

  • 以情境方式导入游戏玩法,符合逻辑又引人入胜,衔接自然

  • 直接在对话中就表明了游戏操作方式,玩家简单易懂,作者很有同理心

  • 扣住了环保主题,以活泼有趣的方式传递出节约用水的概念


小鱼同学看到了这个作品后,马上反应过来:爸爸,这个和我做得那个接金币的小游戏是一样的吧。我说没错,小姐姐把金币换成了水,加上小老鼠和甲虫的对话,告诉大家要节约用水,是很不错的创意啊!小盆友们在开心的玩这个小游戏的同时,潜移默化的也接受了爱惜水资源,节约用水的环保理念。


受这个的启发,我决定让小鱼做个环保垃圾分类的小游戏,天上掉下不同的垃圾:Organic、Recycle和Garbage,下面是小鱼同学推动绿盖、蓝盖和黑盖的垃圾桶去接垃圾。垃圾只有进入正确的框子里面才能得分,很环保有木有?

(啪!此处收获小鱼妈妈响亮怒斥:搞什么不好,让儿子捡垃圾,你这个创意太扯了啊!)


从上面的例子可以看出,编程和下棋其实很相似,都是在既定规则下解决问题。规则并不复杂,却能变化无穷。你的思维能力的边界就是这个编程世界的边界。逻辑是程序的基础,逻辑走不通的程序很快就能够通过运行结果反馈出来。通过反复的练习和修正来提升逻辑思维能力。总结一下编程中得到的思维训练如下:


1、抽象思维练习:编程源于现实世界,但又不是现实世界。须有有能力抽象出机器能够理解的语言来表达。


2、解决问题:编程的过程是将一个复杂的问题拆解为若干简单的问题,先解决一部分问题,或者假设问题的解决来倒推须有的条件。每一个问题的解决过程就是这些思维的不断运用的过程。


3.试错与纠正:调试的过程就是不断的尝试,不断修正来解决问题的过程。这个过程的练习能够鼓励小朋友勇于尝试。


4.创造思维:小朋友很容易接受游戏化的学习方式,而编程有结合的很自然的游戏化学习方式。小朋友能做到不仅仅是玩游戏,也可以自己编游戏,体验创造规则的乐趣。


5.工程思维:每一个编程项目都是一个工程过程,有设计、编码、调试、发布的不同阶段。在这个过程的练习能锻炼小朋友合理安排流程的能力


Scratch作为优秀的工具,给孩子的想象力和逻辑思维能力插上了翅膀。体会到Scratch的真正乐趣,在Scratch中真真正正地有所收获,这样的孩子,怎么会不喜欢编程?!希望每一个学习编程的孩子都能收获这份乐趣,拓宽眼界!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多