1.2 计算机中的算法
众所周知,做任何事情都需要一定的步骤。计算机虽然很神奇,能够帮助我们解决很多问题,但是计算机在解决问题时,也需要遵循一定的步骤。在编写程序实现某个项目功能的时候,也需要遵循一定的算法。算法的地位非常重要,重要得号称是程序的“灵魂”。在本节的内容中,我们将一起探寻算法在计算机中的地位,探索程序“灵魂”在计算机中的基本应用知识。
1.2.1 认识计算机中的算法
计算机中的算法可分为如下两大类。
(1)数值运算算法:求解数值。
(2)非数值运算算法:事务管理领域。
假设有下面的运算:
1×2×3×4×5
为了计算上述运算结果,最普通的做法是按照如下步骤进行计算。
第1步:先计算1×2,得到结果2。
第2步:将步骤1得到的乘积2乘以3,计算得到结果6。
第3步:将6再乘以4,计算得到结果24。
第4步:将24再乘以5,计算得到结果120。
最终计算结果是120,上述第1步到第4步的计算过程就是一个算法。如果想用编程的方式来解决上述运算,通常会使用如下算法来实现。
第1步:假设定义t=1。
第2步:使i=2。
第3步:使t×i,乘积仍然放在变量t中,可表示为t×i→t。
第4步:使i的值+1,即i+1→i。
第5步:如果i≤5,返回重新执行步骤3以及其后的步骤4和步骤5;否则,算法结束。
由此可见,上述算法方式就是数学中的“n!”公式。既然有了公式,在具体编码的时候,只需使用这个公式就可以解决上述运算的问题。
再看下面的一个数学应用问题。
假设有80个学生,要求打印输出成绩在60分以上的学生。
在此设用n来表示学生学号,ni表示第i个学生的学号;cheng表示学生成绩,chengi表示第i个学生的成绩。根据题目要求,可以写出如下算法。
第1步:1→i。
第2步:如果chengi≥60,则打印输出ni和chengi,否则不打印输出。
第3步:i+1→i。
第4步:如果i≤80,返回步骤2;否则,结束。
由此可见,算法在计算机中的地位十分重要。所以在面对一个项目应用时,一定不要立即埋头苦干地编写代码,而是要仔细思考解决这个问题的算法是什么。在想出算法之后,就可以以这个算法为指导思想进行编码工作了。
1.2.2 为什么是程序的“灵魂”
在当今程序员的世界,算法已经成为衡量一名程序员水平高低的参照物。高深的程序员都会看重数据结构和算法的作用,水平越高,就越能理解算法的重要性。算法不仅仅是运算工具,它更是程序的“灵魂”。在现实项目开发过程中,很多实际问题需要精心设计的算法才能有效解决。对个人来讲,对算法的掌握也是区别于他人、保持竞争力的重要方面。
算法是计算机处理信息的本质,因为计算机程序本质上是一个算法,告诉计算机确切的步骤来执行一个指定的任务,如计算职工的薪水或打印学生的成绩单。一般地,当算法在处理信息时,数据会从输入设备读取,并写入输出设备,也可能保存起来供以后使用。
著名计算机科学家沃思提出了下面的公式:
数据结构+算法=程序
实际上,一个程序应当采用结构化程序设计方法进行程序设计,并且用某一种计算机语言来表示。因此,可以用下面的公式表示:
程序=算法+数据结构+程序设计方法+语言和环境
在上述公式的四个方面中,算法是“灵魂”,数据结构是加工对象,语言是工具,编程需要采用合适的方法。算法来解决“做什么”和“怎么做”的问题。
实际上程序中的操作语句就是算法的体现,所以说,不了解算法就谈不上程序设计。
数据是操作对象,对操作的描述即操作步骤,操作的目的是对数据进行加工处理得到期望的结果。举个通俗点的例子,厨师做菜肴,需要有菜谱。菜谱上一般应包括:
(1)配料(数据)。
(2)操作步骤(算法)。
这样,厨师面对相同的一些原料,就可以加工出不同风味的菜肴。