如何向初学者解释算法?

极客 发布于| 2016-09-24

入门 进阶 专家

2.png

  “算法”一词听起来好像与我们不相关,但事实上,从平时接触的科技到每天做出的看似平常的决定,“算法”一直都在我们身边。算法很有趣,尽管有时候相当复杂,但概念本身实际上相当简单。

什么是算法?

  算法是具体的、步骤性的指令,或者可以理解为解决问题或完成某项任务的方案。在计算机领域,编程人员编写算法指导计算机如何执行任务。

  想一想"算法"在生活中的广泛运用(不要仅仅局限于计算机领域),它无处不在。做一道菜的菜谱就是一种算法,用来解决数学问题的步骤方法是一种算法,叠一件衬衫或者一条裤子的过程仍然是一种算法。甚至你每天早上有规律的安排都看作是一种算法! 上面的图就是一个普通小学生早起上学的算法。

写出自己的算法!

  尝试着编写一个自己上午安排的"算法", 或者一个完成简单任务的"算法",比如刷牙,或者喝麦片粥。我们会在毫无察觉的情况下探索更多重要的计算机性术语,如"repetition"(重复:如刷五次牙齿), sequencing(步骤:先将麦片粥放进碗里,然后在导入牛奶) , conditional:(条件:比如如果碗是空的,那就不要吃) 。

 把“指示”编写的越详细越好。因为电脑本身不会揣测你的意图,所以假如你的指示不够详细,比如你不说“先把碗准备好”,那被指令的机器人就会把牛奶倒到地上而不是碗里!

 在数学课上会学到素数和如何判断一个数是否为素数。但当数字变大时,问题将变得很难! 比如数字493,你不得不尝试超过15次计算来得到493不是素数(17 * 29 = 493)。极客勋章的项目中有个编好的算法,来判断一个数是否为素数。(点击查看项目

算法式思维的好处

  算法式思维,可以理解为是将问题的解决过程划分为清晰步骤的能力,在数学和科学学科中是至关重要的。很多时候我们不会意识到在使用算法,尤其在数学中,比如说在解决一个很长的除法问题时,需要运用所学到的"算法"来迭代之前所除的数字。需要运用除、乘、减等来处理每一个被除以过的数字。“算法式思维”让我们学会将问题分解,把解决方案概念化为一个程序里的各个步骤。

  我们可以通过完成相应的编程活动来提高"算法式"思维能力。为了能破解特定的智力游戏,需要运用"sequencing ","repetition","conditional"等相关知识自行设计一个简单的"算法"来解决一些有趣的问题。就像学习其他任何技能一样,需要通过日常的训练、运用技能完成有创造性的项目等方式来提升"算法式"思维水平。要了解更多的算法以及解决问题能力, 在极客勋章尝试一下吧!


经验分享