算法一词可能并不常见,听起来也有些不好懂。算法其实就是为了完成某项特定的任务而要按照既定顺序执行的一系列明确的指令。我们在“编程就是要简单”一节中曾经做过简单的探讨,当时就是给“小智”制订了一套明确的整理床铺的指令。
算法中指令越具体、越明确,指令运行时出现错误的概率就越小。算法就像是做菜使用的“食谱”,是计算机所要执行的命令。我们来试一下,给小智发出指令,让它为我们做个加奶酪的三明治:
1.拿起一片面包。
2.将面包放在厨房的操作台上。
3.把黄油盒的盖子打开。
4.把盖子放下。
5.握住手柄拿起刮取黄油的小刀。
6.一只手握住小刀的手柄,让刀口向外。
7.放低小刀并在黄油上刮取三秒钟。
8.拿起小刀。
9.使小刀靠近面包片。
10.放低小刀,在面包片上涂抹三秒钟,一共涂抹两次。我们已经完成了10个步骤,却只给面包片的一面涂上了黄油!
11.把小刀放在操作台上。
12.拿起一片奶酪。
13.把奶酪片放在涂有黄油的面包片上。
14.再拿起一片面包。
15.将其覆盖在奶酪和有黄油的面包片上。
你是否留意到,上面的指令非常具体,甚至提到了如何握刀?其实我们还可以更加具体,描述使用小刀时的角度及涂抹黄油时小刀的速度。在第7步和第10步中,我们的描述还包括计算机要取、涂黄油的时间。毕竟,小智不知道刀上的黄油有多少算够了,面包怎样才算抹好了。因此,我们做出估算,大概需要三秒钟的时间。
单步调试
西方有句古老的谚语,“量两次,裁一刀”。其本质意义是说,干活时多核查要比出了问题后返回来弥补更有效率。对于编程的初学者而言,这应该成为不成文的规则。检查算法时,应该单步调试(一步一步检查代码的过程。——编者注)、逐步进行,确保其合理规范。
我们再来看另一个关于算法的例子。这是一个游戏,需要用些数学知识,来猜测人的年龄。猜年龄游戏在这个“数学魔术”的戏法中,你可以先告诉朋友,你不用他们说就能猜出他们的年龄。游戏具体如下:
1.让你的朋友在一页纸上写下他的年龄。
2.将这个数字乘以2。
3.再加上1。
4.然后乘以5。
5.再加上5。
6.再乘以10。
7.再减掉100。
8.最后再画掉末尾两位数。
最后剩下的数字就是他的年龄,一共只用了简单的八个步骤。
明日预告:写给所有人的编程思维-循环篇
今日内容节选自《写给所有人的编程思维》,作者:吉姆.克里斯蒂安 ,如侵权,联系本号删除