前面两个步骤我们已经把问题分解成具体的细节,接下来只要按照具体流程的分析结果来写程序就好了,这一步也是将具体内容抽象化的一个过程,很多孩子分析问题时头头是道,可是到了这一步就卡住了,没法在分析结果跟程序之间搭起桥梁。
我课堂观察发现有这么几个原因:
1.抽象能力不足;
2.不知道机器人能听懂什么;
3.对常用的编程概念不理解;
抽象能力不足
对于第一点,这是孩子们生理发展特性导致,按照皮亚杰的认知发展理论,7-11岁的孩子门正处于具体运算阶段,这个阶段的孩子只能把运算图式应用到真实的或者可以想象得到的物体、情景或者事件上。所以对于抽象能力不足的孩子,我们可以从两个方面入手:
一个是通过具像化,让他们把每一个程序语句跟机器人的动作一一对应,具体在机器人能听懂什么里讲;
其次呢,更多的接触,更多的链接,让他们有更多的练习的机会。通过每节课制作不同的作品,或者多去科学馆逛逛,更高级的是家长的言传身教,在生活中处处有惊喜。有个二年级的学生,做的机器人作品连四年级的孩子都不一定有他好,给我最大的感触就是他在家里每天都会跟爸爸讨论各种物件背后的原理,现在暑假了,妈妈又带他去北京的各种博物馆。
不知道机器人能听懂什么
最常见的是在前冲的时候一直前进
我们在分析的时候,这个任务也是隐藏了停止的意思:前冲到光电离开黑线后停止。如果没有注意到这个,程序就是
马达A速度50
马达B速度50
就会导致机器人一直前进。真正的程序应该是:
马达A速度50
马达B速度50
延时300ms
马达A速度0
马达B速度0
写程序的时候我们必须清晰的解释机器人执行任务的每一项具体步骤,而不是我们以为的。
同样我们常说的左转或者右转也是。
不过左转有两种情况,一种是我们上节课分析的那样,有光电遇黑作为条件,这种比较清晰,不会有什么问题。另一种就是简单的用延时来控制的,就会出现跟前面前冲任务一样的问题。
对常用的编程概念不理解
编程的概念按道理应该分在机器人能听懂什么里,但是这部分内容较多,又太重要了,所以单独拎出来讲。
常见的编程概念有循环、顺序、条件、变量。顺序这个概念其实在之前这么多内容里是强调最多的,所以就不在赘述。
- 循环
最开始看学生写程序的时候真的很搞笑,总是不管三七二十一的先拿一个循环出来,问他们放这个循环是干嘛用的,回答我的是一脸茫然。
我们前面说要必须清晰的解释机器人执行任务的每一项具体步骤,有时候我们会遇到很多任务不仅繁琐而且重复,比如让机器人围着一个正方形跑到运行,就意味着流程是这样的:
前进--》左转--》前进--》左转--》前进--》左转--》前进--》左转
这样是走了一圈,如果想要走好几圈,那就要:
前进--》左转--》前进--》左转--》前进--》左转--》前进--》左转--》
前进--》左转--》前进--》左转--》前进--》左转--》前进--》左转--》
。。。反正就是要走多少圈,就要写多少的程序。繁琐!重复!
我们知道编程语言设计的初衷就是为了便捷高效,那么就一定存在能避免重复指令的书写。
循环是能够使重复指令的编写变得更为有效的结构。我们生活中参与者各种循环,:地球围绕太阳转,每365天重复一次;小一点的,地球每24小时自转一周。只要有事物在重复,就有循环存在。
还是上面那个例子,围绕桌子走一圈:
重复循环4次:
前进
左转
如果是一直绕圈
重复循环:
前进
左转
怎么样,瞬间简洁了。
出了这个,在机器人编程中最常用到循环的是,重复检测。
因为机器人需要用传感器来接受外部环境的变化,用上节课的左转为例。
机器人需要检测是否光电遇黑,如果只是判断的程序:
如果:光电值<1500
执行:马达A速度0
马达B速度0
否则:马达A速度0
马达B速度50
程序一下子就执行完了,等到后面遇到黑线了,也不会停下来,为啥,因为从机器人开始左转到遇到黑线这个过程中,程序就在最开始判断了一次,后面就没有然后了。所以,我们需要重复检测,需要循环:
一直循环:
如果:光电值<1500
执行:马达A速度0
马达B速度0
否则:马达A速度0
马达B速度50
一直循环意味着用不停歇,这也不是我们想要的,为啥?因为这样我们就会在左转这个步骤中迷失,无法结束,那后面的步骤也就没有机会完成了。所以当断则断,到了终止条件的时候,跳出循环。
一直循环:
如果:光电值<1500
执行:马达A速度0
马达B速度0
中断循环
否则:马达A速度0
马达B速度50
- 条件
目前为止,学生最难真正理解的概念还是条件跟变量,真要讲,每个都可以花上一节课,所以留着下周开个单章来细说。
好啦,今天就到这里,我要去超市买菜,晚上给老婆做饭了。
老规矩,可子镇楼。
不点赞我就生气了.jpeg
网友评论