编程思维:像程序员一样思考(动画)
编程思维:
艾斯克从休眠中醒来,就不幸遇到了三重意外。
第一个意外:牢房。
第二个意外:完全失忆。
第三个意外:一个神秘的陌生生物在她牢房窗户的横条间卡住了。他叫海吉,来帮助艾斯克拯救世界。
但是,他们首先要逃出监狱才行。
《编程思维》
海吉把他的手变成一个开锁器,并概述了他们将要面临的挑战。
监狱中的每一把锁都是用同一种特别的原理制成的,钥匙孔内部是一个红色拔盘,可以转至数字1到100的任意位置。
每个牢房的钥匙可将拨盘转到正确位置,当钥匙停在该位置时,锁盘变绿,牢门即打开。
从守卫那里偷钥匙是不可能的,但海吉有个更好的主意。
海吉能执行艾斯克的命令,如果艾斯克让他先前行5步,右转拨盘,接着再前行5步,海吉就会完全照办。但海吉需要具体的指示。
如果艾斯克说“选锁”或“尝试每个组合”,指令就太过模糊,但“拔盘转5个位置”就可行。
一旦离开牢房,在守卫抓住他们之前,他们也只有几分钟时间去打开监狱外门的锁。
那么什么指令可以使海吉高效地打开任何一扇门呢?
暂停播放,自行解决谜题。
我们解答前,给出如下提示:
一个帮助开锁的关键编程概念叫做“循环”,它可以是一个或多个指令组合,海吉可选指定次数,如“上下跳跃100次”,或者是海吉重复执行某指令,直到满足某个条件即停止,如“上下跳跃直到7点钟”。
很明显,首先你要为海吉找到一种方法,尝试每种组合,直到一个可行为止。
需要付出更多努力的是你如何能精确做到这一点,一种方法是指示海吉连续尝试每种组合。尝试1,并检查指示灯。如果灯变绿色,打开门;否则尝试2。5.如果2不行,尝试3……一直尝试到100。
一只用3行代码能完成同样的事,为何要编写100多的代码呢?“循环”语句应运而生,有几种方法可以实现。锁内有100个孔位,艾斯克可以说: “检查拨盘颜色,然后转1次,重复转动100次。记住拨盘变绿的位置,全部试完后,再让海吉设置回开锁位置”,这种设定循环次数的循环,称为“for”循环。
但还有一种更高效的循环,让海吉将拔盘一次转一个位置,直到变成绿色为止,一旦拔盘变绿色,让他停下,并打开门。
……
篇幅有限,更多精彩内容,请自行发现。
加入收藏夹