编程思维:像程序员一样思考(动画)

编程思维:

艾斯克从休眠中醒来,就不幸遇到了三重意外。

第一个意外:牢房。

第二个意外:完全失忆。

第三个意外:一个神秘的陌生生物在她牢房窗户的横条间卡住了。他叫海吉,来帮助艾斯克拯救世界。

但是,他们首先要逃出监狱才行。

《编程思维》

 

海吉把他的手变成一个开锁器,并概述了他们将要面临的挑战。

监狱中的每一把锁都是用同一种特别的原理制成的,钥匙孔内部是一个红色拔盘,可以转至数字1到100的任意位置。

每个牢房的钥匙可将拨盘转到正确位置,当钥匙停在该位置时,锁盘变绿,牢门即打开。

从守卫那里偷钥匙是不可能的,但海吉有个更好的主意。

海吉能执行艾斯克的命令,如果艾斯克让他先前行5步,右转拨盘,接着再前行5步,海吉就会完全照办。但海吉需要具体的指示。

如果艾斯克说“选锁”或“尝试每个组合”,指令就太过模糊,但“拔盘转5个位置”就可行。

一旦离开牢房,在守卫抓住他们之前,他们也只有几分钟时间去打开监狱外门的锁。

 

那么什么指令可以使海吉高效地打开任何一扇门呢?

暂停播放,自行解决谜题。

我们解答前,给出如下提示:

一个帮助开锁的关键编程概念叫做“循环”,它可以是一个或多个指令组合,海吉可选指定次数,如“上下跳跃100次”,或者是海吉重复执行某指令,直到满足某个条件即停止,如“上下跳跃直到7点钟”。

很明显,首先你要为海吉找到一种方法,尝试每种组合,直到一个可行为止。

需要付出更多努力的是你如何能精确做到这一点,一种方法是指示海吉连续尝试每种组合。尝试1,并检查指示灯。如果灯变绿色,打开门;否则尝试2。5.如果2不行,尝试3……一直尝试到100。

一只用3行代码能完成同样的事,为何要编写100多的代码呢?“循环”语句应运而生,有几种方法可以实现。锁内有100个孔位,艾斯克可以说: “检查拨盘颜色,然后转1次,重复转动100次。记住拨盘变绿的位置,全部试完后,再让海吉设置回开锁位置”,这种设定循环次数的循环,称为“for”循环。

 

但还有一种更高效的循环,让海吉将拔盘一次转一个位置,直到变成绿色为止,一旦拔盘变绿色,让他停下,并打开门。

……

篇幅有限,更多精彩内容,请自行发现。



看全集

FavoriteLoading加入收藏夹

Leave a Reply