今天回到家,吃好晚饭,和老彼得聊天。他说,昨天他争取了一个名额加入了“信息技术”兴趣小组。 “信息技术”小组就是学编程,用LOGO语言。
为什么要争取呢?因为一个班最多只有3个名额、3张报名表,当老师宣布后,手脚快的同学立马就抢走了报名表。老彼得当然抢不过人家,不过他有办法:
(据他今天对我的描述:)
他举起手向老师挥舞,说:老师,你来看我的LOGO!
今天回到家,吃好晚饭,和老彼得聊天。他说,昨天他争取了一个名额加入了“信息技术”兴趣小组。 “信息技术”小组就是学编程,用LOGO语言。
为什么要争取呢?因为一个班最多只有3个名额、3张报名表,当老师宣布后,手脚快的同学立马就抢走了报名表。老彼得当然抢不过人家,不过他有办法:
(据他今天对我的描述:)
他举起手向老师挥舞,说:老师,你来看我的LOGO!
最好玩的就是看老彼得拼命想问题……
昨天提了一个比较中规中矩的问题:电脑是怎么发明的。
这个问题是我比较擅长回答的。所以我从Eniac开始,讲到图灵,讲到电脑处理的三个要素:输入、处理、输出。
===
星海学校今年的电脑课是Logo语言。这是一门“古老”的语言。
我本来认为向老彼得讲述变量的概念应该是轻而易举的,但是在实际中发现,还是有一些困难。
首先,引入“变量”概念的问题不是很容易找。比如,我问他“你们班上有多少同学”、“隔壁班上有多少同学”,试图用这样的问题来引入“多少同学”是个变量的概念。但是,对于老彼得来说,自己班上有多少同学、隔壁班上有多少同学都是“固定”的,不是“变化”的。
有了前两天的积累,老彼得终于可以迎来他编程入门课程的一个重要的里程碑:过程。
我先是和老彼得讨论了一些“过程”的概念。比如收看“喜洋洋和灰太狼”,那么一般的步骤就是:打开电视机、用遥控器选择32频道;比如削铅笔的一半步骤就是:拿起削笔器,把要削的铅笔插进去,然后夹住,然后旋边上的摇杆……
通过这些深入浅出的例子,老彼得理解了过程的几个特点:
今天教了老彼得一个很重要的指令:REPEAT,以及另一对配对的指令:PU/PD。
小孩子对重复的概念的理解是不容易的。我花费了几乎两天的时间来教他。
比如这个简单的命令:
repeat 4 [fd 100 rt 90]
这个命令可以在屏幕上画出一个边长为100的正方形。老彼得对这个的理解还是比较快的。同时,他也迅速的掌握了5/6/7/…等正多边形的绘制,同时学到了两个很重要的、也是互相关联的概念:什么是外角;任意凸多边形外角和总是360度。
结合PU/PD命令,他在经过了一些失误之后,学会了画虚线:
repeat 10 [fd 10 pu fd 10 pd]
难点在于嵌套重复。比如画下面这个图形:

需要用到两个循环:
repeat 10 [repeat 4 [fd 90 rt 90] rt 36]
这时他就开始糊涂了。我让他先从里面的循环开始看,然后再看外面的循环。同时,也鼓励他先画一个正方形、再转角度,再画一个正方形、再转角度……通过这样的方式,他领悟到画正方形+转角度可以被看做是一个动作,然后再对这个动作进行重复的道理。我想,有了这个思路,一旦学会过程后再回头来看,对循环会有更深入的理解。
That\’s all for today!

今天开始正式教老彼得学习编程。我决定用Logo语言作为他的入门语言,理由有三:
今天学了四个基本指令:FORWARD, BACK, RIGHT, LEFT。老彼得还是很快就掌握了,并且完成了我交给他的课后作业。
另外,指导老彼得开始记笔记,这个也算是学习习惯的培养吧。
我的目标是这个暑假让他初步掌握Logo。然后到四下的时候,看是不是有能力学习C/C++。
BTW,我用的是MSWLogo,还专门下载了一本教程。
