姓名:______________________________
日期:____________________
第 3 周
把指令说明白
把一条路线变成清清楚楚的分步计划,再编程让机器人一步不差地照着走。
60 至 75 分钟
要点
计算机是照字面执行指令的
机器人做的正是你说的那件事,而不是你想说的那件事。如果你说「向前走」却忘了说走多远,机器人猜不出来;它要么做错,要么干脆不动。计算机又快又不知疲倦,可它们没有常识。
程序就是一串按顺序执行的指令
程序是一份指令清单,机器人从上往下一条接一条地执行。每条指令都是一个小小的命令,比如「向前走」或者「向右转」。按次序把它们执行下来,就叫顺序结构。
事件让程序跑起来
程序要等到有什么把它启动了才会跑。这个启动的时刻就叫事件:按下「开始」按钮、点一下「被点击时」积木块,或者在模拟器里点「运行」。
算法和伪代码:先规划,再编程
算法是完成一项任务的清晰分步计划,每一步都交代清楚,不留任何含糊的地方。在动手写真正的代码之前,工程师会先用日常语言把计划写出来,这份日常语言的计划就叫伪代码。
用时间、速度和转向来控制距离
这一周你用三件工具来操控机器人:它走多远(距离)、这个动作持续多久(时间)、它转多少(转向)。在很多套件上,距离是由时间和速度一起决定的:速度更快、时间更长,走过的路就更多。
先预测,再运行
运行程序之前先作个预测:用手指顺着指令走一遍,标出你认为机器人会停在哪里、朝着哪个方向。先把猜测定下来,某一步错了就会一目了然。
要认识的词
- 程序:
- 计算机为完成一件活儿而遵循的一份指令清单。这一周,程序就是一串移动指令。
- 指令:
- 机器人能执行的一条命令,比如「向前走」或者「向右转」。
- 顺序:
- 指令一条接一条、按次序从上往下执行。次序很要紧。
- 算法:
- 完成一项任务的清晰分步计划,既不漏步骤,也不含糊其辞。
- 伪代码:
- 在把计划变成真正的代码之前,先用日常语言把步骤写下来。
- 事件:
- 让程序开始运行的那一刻,比如按下「开始」或者触发「被点击时」积木块。
- 时间:
- 一条指令持续多久,以秒计量:这是控制机器人走多远的一种办法。
- 距离:
- 一条指令让机器人移动多远,通常用厘米或网格的格数来设定。
- 转向:
- 让机器人原地旋转的指令,通常按固定的度数来转,比如 90 度。
- 速度:
- 电机转得有多快。速度越快,同样的时间里走的距离就越远。
- 预测:
- 运行程序之前,你对机器人会停在哪里作出的最佳判断。
你的活动
送货路线编程挑战
目标:只用一串精确的前进和转向指令,编程让机器人沿路线或穿过迷宫从起点走到终点。
- 看着地图,找出起点、终点,以及沿途的墙和拐弯处。先用手指把路线描一遍。
- 动手搭建之前,先用日常语言把计划写成伪代码:按顺序写下前进、转向和距离。保持一串直线式的顺序结构:这一周没有循环、没有条件判断、也没有传感器。
- 把伪代码变成指令,运行一遍;如果机器人没到终点,就把出错的那一条指令改掉。
写下发生了什么:
先预测,再验证结果
目标:在运行一串给定指令之前,先预测机器人会停在哪里、朝着哪个方向,然后运行并对照。
- 拿一串简短的指令,在地图上用手描一遍。在纸上标出你认为机器人会在哪里结束、朝着哪个方向。
- 运行任何东西之前,先把你的预测定下来:先写出来。
- 运行程序,把真实结果和你的预测对照,并指出是哪条指令造成了差别。
写下发生了什么:
预测
动手测试之前,先写下你的猜测。
运行你的送货程序之前:你预测机器人会停在哪一格?它会朝着哪个方向?
你觉得你的程序要用多少条指令(多少步)才能到达终点?
测试并记录
预测结果与实际结果记录
每次尝试之前,先写下你预测的终点格,然后运行这串指令,记录机器人实际停在了哪里。再记下你为下一次尝试改了哪条指令。
记录:历次尝试中预测的终点位置与实际终点位置的对比
| 第几次尝试 | 预测的终点格 | 实际的终点格 | 为下次改动的指令 |
|---|---|---|---|
知识检测
逐题作答。选择题请把最合适的答案圈出来。
把编程让机器人完成一项任务的这些步骤按正确顺序排好。
- (Number these from 1 to 4.)
- 把步骤规划成算法
- 把步骤写成精确的指令
- 在机器人上运行程序
- 检查它有没有做到你预期的事
机器人一开始朝上。把这个程序走一遍。最后它朝哪个方向?
向右转 向右转 向左转
- A.朝上
- B.朝右
- C.朝下
- D.朝左
你的机器人把整个程序都跑完了,做出来的事却不对。最可能是怎么回事?
- A.机器人决定即兴发挥一下
- B.它完全照你的指令做了,只是你的指令并不是你想要的
- C.机器人没理会那个程序
- D.程序本来就故意第一次都跑不通
什么是顺序结构?
- A.一条接一条、按次序执行的指令
- B.一条会永远重复下去的指令
- C.一条根据传感器来作判断的指令
- D.所有指令完全同时执行
什么是伪代码?
- A.只有计算机才看得懂的密码
- B.在动手编程之前,用日常语言写下的程序计划
- C.一个满是错误、跑不动的程序
- D.让程序开始运行的那个事件
你的机器人停到了正确的位置,方向却不对。你该检查哪条指令?
- A.某条前进距离的指令
- B.开始事件
- C.某条转向指令:度数或者方向
- D.停止指令
在按时间来控制的套件上,你怎样才能让机器人在一条前进指令里走得更远?
- A.让电机运转更长时间(或者用更高的速度)
- B.加一条转向指令
- C.改一下开始事件
- D.把这条指令换个颜色写
反思
哪条指令造成的误差最大?你是怎么把它改得更精确的?
在动手搭真正的指令之前先写伪代码,对你有什么帮助?
当你的预测和机器人的实际表现对不上时,你是怎么找出该改哪条指令的?