机器人编程第一步:分解
这是如何用机器人编程教授计算思维的第一篇,今天我们来讲讲分解在机器人课堂的应用。
机器人是严格按照程序设计来运行的,而程序是沟通人与机器人的桥梁,所以在写程序前,首先要明确你想要机器人做什么,是要让它前进,还是后退,左转还是右转。
如果说把知道任务是什么比做事我要吃水果,那么简单的任务是吃苹果,洗洗就能吃,复杂的任务就是吃西瓜,你要切开才能吃,除非牙口好。复杂的任务要切开看看,也就是要分解,分解成更微观的细节问题,然后一口一块,每一个细节问题都很轻松的解决。
那么问题来了,怎么切好呢,切的好了,吃的也爽,切的不好,吃的满脸汁水。同样对任务进行拆解时,也应该采用好的逻辑或结构,最简单的就是用别人总结好的框架,像经典的SWOT框架,5W2H等。那在小学阶段机器人教学中,最常用的是两个:
1.按流程或者顺序分解
大部分时候,机器人一次只能做一件事,不可能直行的同时左转,所以为了完成路线,机器人的动作一定有先后顺序。
最常见的是巡线任务。
这个任务要求从起点到D点,停留2秒,然后到达E点。
任务分解为:前进,右转,前进,左转,前进,右转,前进,停留2秒,掉头,前进,右转,前进。
2.按条件分解
我们做遥控车的时候,机器人的前进后退就没有先后了,取决于我们按下了哪个按键,也就是根据条件的不同来分解。
简单遥控车的控制任务分解为:
如果触碰1按下,则前进
否则如果触碰2按下,则后退
否则如果触碰3按下,则左转
否则如果触碰4按下,则右转
否则停止
分解过程中我们要严格遵守逐层不漏不重的原则。逐层的意思是分解问题的时候好要一层一层进行,每一步都是按照固定的条件来分。比如对人类这个概念进行分解,按性别可以分为男、女,再按年龄来分,男人可以分为男婴,少男,青年男人,中年男人,老年男人。这里的按性别就是一层,按年龄又是一层。如果分解为男,少女,这就是错层了。
不漏不重对应的是金字塔理论里的MECE:相互独立,完全穷尽。对每一层的分解中,所有的子问题都必须是父问题的一个部分,彼此互斥,但是合并起来又是父问题的全部。比如把男人分为青年男人、中年男人、老年男人,这就漏了。比如把女人分为瓜子脸、大长腿,这就有重叠又有遗漏。
回到上面那个巡线任务,很多孩子因为思维比较跳跃,总是会把各个层串在一起,比如明明是让他们简单的把巡线任务分解成直行,左转等,他们总是会陷入到考虑左转怎么转的具体问题去,这就是错层了;或者在分析每一步的具体实现时,又会把后面的步骤混到了前面的步骤里,这就是重叠了。错层或者重叠往往导致了问题复杂化,而分解的根本在于降低单次思考的复杂度。
完全穷尽呢,就是要把各个步骤环节考虑清楚,不要有所遗漏,任务要求从起点到D,再到E,那我们就不能忽略了D点直接去E点。
除了上面两个外,在机器人任务分解里还有一个很重要,就是每一步要表达清晰精确,比如左转或右转,很多孩子习惯性的说拐弯,对人来说,当他听到拐弯时,会结合各种信息对拐弯这个词进行脑补,会很容易得出左转或右转的结论,但是机器人不一样,说左转就是左转,不会右转,同样右转也是,没办法理解拐弯这种模拟两可的描述。
为了更加直观严谨,我们可以用流程图来展示我们分解好的问题。
很多孩子视流程图为洪水猛兽,每次写流程图都像是要了他们的命,可是当他们发现遇到的问题开始复杂了,光凭自己大脑记忆已经无法清晰的把自己的思路变成程序的时候,他们主动的拿出纸笔,开始画起流程图。你看,好的方法不怕你不喜欢它,等你知道它的好的时候,你会想起它。
流程图就只是个工具,把你的思路用图形表达出来。椭圆表示开始或结束,矩形表示步骤,菱形表示选择,箭头表示流程或者方向。知道这些就足够把你的思路表示清楚了。
巡线任务
遥控车.png
到了这里我们第一步分解任务也就差不多了。孩子的思维是发散的,点状的,这也是他们可以天马星空的想象的原因,但也是他们很难完整的思考和处理一件事情的原因。计算思维则提供了可行的方法,可以帮助他们更好解决问题,掌握计算思维不是用条条框框去限制孩子的想象力,而是给他们一个可以使用的工具,交给他们自己来使用。而分解这是这个工具的一个核心,帮助孩子聚焦在一个简单具体问题上,解决完一个再来下一个,就像游戏一样,一关一关的就打到最终BOSS了。
后面就要针对每一步进行具体的分析了。那就详见下回分析吧。
老规矩,猫猫镇楼。
可子.jpeg