前言Swift Playgrounds是苹果公司发布的一款适用于iPad的Swift编程教学免费app,它能以互动有趣的方式来教你编写Swift代码。
目前有《学习编程1》和《学习编程2》两个主教程。
女儿5+岁,从大班开始在家里接触Swift Playground;之前我自己试玩了一下scratch,对比之下,作为儿童编程启蒙,我觉得swift playgrounds比scratch更合适。其实小朋友学编程可以直接从代码开始,不一定要先学图形化编程;倒是掌握了代码编程之后(锻炼了编程的思维),再选用图形化的scratch来做作品(游戏、动画等)会更合适,scratch平台更容易做出东西;由于是在家里自己教,所以一开始先定下一些教学的原则:把儿童编程作为一种思维锻炼来看待1. 重思考(多讨论),不赶进度;2. 不直接教(不手把手写代码),向她展示思维的方法,学会怎么思考;3. 允许她不同思路的尝试,锻炼思维;允许她犯错,学会调试;4. 听不懂,可以换个方式再讲再讨论;做错了,可以趁机学习debug;但不认真思考就不可以了,毕竟这是在做“思维体操”,越锻炼越强壮;实际上,本学习札记是在第二轮学习的时候才开始记录的;在学习完【函数】和【For循环】两章之后,我想控制一下进度,决定把前面两章翻炒一下,让小朋友自己重来一遍并且让她有更多的主导权;所以,在第二轮的时候,我们把第一轮学习过程中逐步总结的好经验强化了一下,每一关我们都按照下面的方法来进行:画简图;画路线图;写符号代码;优化代码;1. 画简图Swift Playground是以游戏过关的形式来教编程的,所以画面还是比较好看的。漂亮的画面能提高小朋友的兴趣,但花花绿绿的装饰有时候也会干扰了小朋友的思考。画简图(示意图)能去掉干扰。比如,这里的台阶是不用往上、往下的,都是和平路一样用同一个命令moveForward( )往前走一步(不是两步);直接画成一个平面图即可;从另一个角度来说,建模是数学、编程等学科中一个很重要的能力。能从复杂的场景中抽象出关键的信息画成简图,这也是建模能力的一种锻炼;
121954uousuu1maz1g90my...,
2.画路线图在简图的基础上,我们开始思考如何“解决问题”。这时候焦点不应该是“具体使用哪条命令”上,而是“整体方案”;这时我会让小朋友用口述方式来介绍自己的想法:“先走到这,把这个宝石捡了,然后再走到这,把这个开关打开,最后走到这,穿过传送门去到另一侧......然后完成所有任务”;当你能把整个思路讲出来,尤其是能清楚地把线路图记录下来,就能一目了然地判断你是否能“正确”完成题目;至于用哪个命令、哪里可以封装成函数、哪里可以用循环语句简化代码等,这都是下一阶段的事。
121957thmk7k2elhx11l7l...,
3. 写符号代码这是一个中间的过渡阶段。小朋友看着路线图(解题思路)直接去iPad上敲代码,这还是有难度的。而且也不便于她去发现代码中,哪里出现了规律(函数或循环)。因此,这里加了一步:用命令的首字母(或圆圈、三角形、箭头等符号)代替完整的命令,来书写程序;
122024kp4wse3sthiaepie...,
这要根据小朋友的能力来决定,英语好的,可以用缩写字母,这样会更简单清晰;或者用不同方向的箭头来表示;而不同颜色的圆圈就会费时一些;4. 优化代码在前面几步的基础上,通过分析符号代码,使用函数、循环等的手段来优化代码;或者从根本上尝试不同的路线,找到更优的解决方案;以下是同一道题的不同路线方案
122029ydzsskc13r0nccw0...,
122033blyvz4zllndz2y2v...,
01.01.00 命令
224128fgxrjnzqwrq2pr2h...,
第一章【命令】是一些最基础的东西,这里不作过多的阐述;但在这章入门里,发现小朋友作为编程的新手会碰到两个难点:1、状态:站在哪里,面向哪里【状态】对于编程来说是一个很基础的概念。在Swift Playground里,【状态】就是byte现在【站在哪里、面向哪里】,这样我们才能决定下一步要byte做什么:是前进、还是原地调整方向、还是原地做一个动作;凡是到了【转折】的地方我都会提醒小朋友问一下自己这2个问题:现在【站在哪里、面向哪里】2、转左 还是 转右?对于5、6岁的小朋友,向左转还是向右转也是一个很突出的问题。在他们这个年龄阶段,方向问题还不是掌握得很好,尤其是判断对方(byte)的左右;
224131gic6s4z4qj6c61l6.,
此时,使用一个乐高人仔(或类似的小玩具)放在【简图】上来辅助判断会很有效果。把人偶要转向的手举起来,小朋友再对应着自己的手,就比较容易判断出来了。
01.02.00 函数
113029r815sfgew28fpa6f...,
【函数】章节,包括了5关游戏:收集、切换、重复尽收囊中嵌套模式嵌入式阶梯寻宝比喻:【函数】——【打包】针对5岁的小朋友,要说明什么是【函数】,必须找一个她比较熟悉的例子来比喻;我选用了小朋友每天回家后做的第一件事来比喻:【去洗手间洗手】第1步:去洗手间;第2步:把袖子卷起来;第3步:打开水龙头,把手弄湿,关水龙头;第4步:用洗手液搓手;第5步:打开水龙头,冲水;第6步:关水龙头;第7步:用毛巾擦手;第8步:用抹布把台面擦干;小的时候,需要一步一步地提醒;但长大了,现在还需要说这么多的话吗?不需要了,直接【打包】,只说一句【去洗手】就搞定了,就明白需要做多少事情(多少命令);这个【打包】的动作就是【写函数】,一句【去洗手】就顶替【8个动作】;实践下来,小朋友对函数、嵌套概念的理解比我想象中的要好;而难点在于让她去发现:哪些命令集合存在重复的规律,适合进行【打包】,封装成函数;我们的实践:写符号代码,便于找规律,找出哪里可以封装成函数;(在后面的例子中详述)比喻:【嵌套】——【大盒子装小盒子】嵌套,就像收拾玩具,先用小盒子打包一些小玩意,然后再把一个个小盒子打包到一个大盒子里面;这个大盒子里面还有小盒子的情况,就是嵌套;比喻:【调用函数】——【查字典】写代码的时候,小朋友有时候分不清楚【主代码】和【函数库】的关系,我用【查字典】来比喻;我们看故事书(主代码)的时候,发现一个不懂的单词(函数),那就去查字典(线程跳转到函数的定义Func( ) ),根据字典的解释去理解故事的内容(调用函数);
113037idza8f9m82296g2f.,
查字典的时候,发现单词A的解释里面还有一个不懂的单词B,那就停下来先去查字典看看B的意思,然后再回到单词A的解释里继续往下看;最后回到原处继续读故事书;这就是嵌套的过程。
113040nuyv1kz002302n2f.,