跳到主要内容

姓名:______________________________

日期:____________________

第 3 周

把指令说明白

把一条路线变成清清楚楚的分步计划,再编程让机器人一步不差地照着走。

60 至 75 分钟

要点

计算机是照字面执行指令的

机器人做的正是你说的那件事,而不是你想说的那件事。如果你说「向前走」却忘了说走多远,机器人猜不出来;它要么做错,要么干脆不动。计算机又快又不知疲倦,可它们没有常识。

程序就是一串按顺序执行的指令

程序是一份指令清单,机器人从上往下一条接一条地执行。每条指令都是一个小小的命令,比如「向前走」或者「向右转」。按次序把它们执行下来,就叫顺序结构。

事件让程序跑起来

程序要等到有什么把它启动了才会跑。这个启动的时刻就叫事件:按下「开始」按钮、点一下「被点击时」积木块,或者在模拟器里点「运行」。

算法和伪代码:先规划,再编程

算法是完成一项任务的清晰分步计划,每一步都交代清楚,不留任何含糊的地方。在动手写真正的代码之前,工程师会先用日常语言把计划写出来,这份日常语言的计划就叫伪代码。

用时间、速度和转向来控制距离

这一周你用三件工具来操控机器人:它走多远(距离)、这个动作持续多久(时间)、它转多少(转向)。在很多套件上,距离是由时间和速度一起决定的:速度更快、时间更长,走过的路就更多。

先预测,再运行

运行程序之前先作个预测:用手指顺着指令走一遍,标出你认为机器人会停在哪里、朝着哪个方向。先把猜测定下来,某一步错了就会一目了然。

要认识的词

程序:
计算机为完成一件活儿而遵循的一份指令清单。这一周,程序就是一串移动指令。
指令:
机器人能执行的一条命令,比如「向前走」或者「向右转」。
顺序:
指令一条接一条、按次序从上往下执行。次序很要紧。
算法:
完成一项任务的清晰分步计划,既不漏步骤,也不含糊其辞。
伪代码:
在把计划变成真正的代码之前,先用日常语言把步骤写下来。
事件:
让程序开始运行的那一刻,比如按下「开始」或者触发「被点击时」积木块。
时间:
一条指令持续多久,以秒计量:这是控制机器人走多远的一种办法。
距离:
一条指令让机器人移动多远,通常用厘米或网格的格数来设定。
转向:
让机器人原地旋转的指令,通常按固定的度数来转,比如 90 度。
速度:
电机转得有多快。速度越快,同样的时间里走的距离就越远。
预测:
运行程序之前,你对机器人会停在哪里作出的最佳判断。

你的活动

送货路线编程挑战

目标:只用一串精确的前进和转向指令,编程让机器人沿路线或穿过迷宫从起点走到终点。

  1. 看着地图,找出起点、终点,以及沿途的墙和拐弯处。先用手指把路线描一遍。
  2. 动手搭建之前,先用日常语言把计划写成伪代码:按顺序写下前进、转向和距离。保持一串直线式的顺序结构:这一周没有循环、没有条件判断、也没有传感器。
  3. 把伪代码变成指令,运行一遍;如果机器人没到终点,就把出错的那一条指令改掉。

写下发生了什么:

先预测,再验证结果

目标:在运行一串给定指令之前,先预测机器人会停在哪里、朝着哪个方向,然后运行并对照。

  1. 拿一串简短的指令,在地图上用手描一遍。在纸上标出你认为机器人会在哪里结束、朝着哪个方向。
  2. 运行任何东西之前,先把你的预测定下来:先写出来。
  3. 运行程序,把真实结果和你的预测对照,并指出是哪条指令造成了差别。

写下发生了什么:

预测

动手测试之前,先写下你的猜测。

运行你的送货程序之前:你预测机器人会停在哪一格?它会朝着哪个方向?

你觉得你的程序要用多少条指令(多少步)才能到达终点?

测试并记录

预测结果与实际结果记录

每次尝试之前,先写下你预测的终点格,然后运行这串指令,记录机器人实际停在了哪里。再记下你为下一次尝试改了哪条指令。

记录:历次尝试中预测的终点位置与实际终点位置的对比

第几次尝试预测的终点格实际的终点格为下次改动的指令
    
    
    

知识检测

逐题作答。选择题请把最合适的答案圈出来。

  1. 把编程让机器人完成一项任务的这些步骤按正确顺序排好。

    • (Number these from 1 to 4.)
    • 把步骤规划成算法
    • 把步骤写成精确的指令
    • 在机器人上运行程序
    • 检查它有没有做到你预期的事
  2. 机器人一开始朝上。把这个程序走一遍。最后它朝哪个方向?

    向右转
    向右转
    向左转
    • A.朝上
    • B.朝右
    • C.朝下
    • D.朝左
  3. 你的机器人把整个程序都跑完了,做出来的事却不对。最可能是怎么回事?

    • A.机器人决定即兴发挥一下
    • B.它完全照你的指令做了,只是你的指令并不是你想要的
    • C.机器人没理会那个程序
    • D.程序本来就故意第一次都跑不通
  4. 什么是顺序结构?

    • A.一条接一条、按次序执行的指令
    • B.一条会永远重复下去的指令
    • C.一条根据传感器来作判断的指令
    • D.所有指令完全同时执行
  5. 什么是伪代码?

    • A.只有计算机才看得懂的密码
    • B.在动手编程之前,用日常语言写下的程序计划
    • C.一个满是错误、跑不动的程序
    • D.让程序开始运行的那个事件
  6. 你的机器人停到了正确的位置,方向却不对。你该检查哪条指令?

    • A.某条前进距离的指令
    • B.开始事件
    • C.某条转向指令:度数或者方向
    • D.停止指令
  7. 在按时间来控制的套件上,你怎样才能让机器人在一条前进指令里走得更远?

    • A.让电机运转更长时间(或者用更高的速度)
    • B.加一条转向指令
    • C.改一下开始事件
    • D.把这条指令换个颜色写

反思

哪条指令造成的误差最大?你是怎么把它改得更精确的?

在动手搭真正的指令之前先写伪代码,对你有什么帮助?

当你的预测和机器人的实际表现对不上时,你是怎么找出该改哪条指令的?