《Python 3.x入门到应用实践》 —1.2.2 算法与程序设计
1.2.2 算法与程序设计
算法(Algorithm)是学习程序设计的核心知识。在日常生活中,每个人每天都会用到一些算法,而算法是人类使用计算机解决问题的技巧之一,其实算法并不仅仅用于计算机领域,在数学、物理等领域广泛应用。日常生活中有许多工作都可以使用算法来描述,例如员工的工作报告、宠物的饲养过程、厨师准备美食的食谱、学生的课程表等。在网络搜索引擎大行其道的今天,我们每天要使用的搜索引擎都必须通过不断更新算法来不断提高搜索的速度和准确度。如图1-5所示为百度搜索引擎的基本使用界面。
图1-5
从程序设计语言实现的角度来看,无论我们采用哪一种程序设计语言,程序能否高效地完成任务,算法都是解决问题的核心。同样一个问题,每个人的解法可能不同,程序的执行效率也会不同,优秀的算法能够以最精简的程序代码达到上佳的程序执行效率。
在韦氏辞典中将算法定义为:“在有限的步骤内解决数学问题的过程。”如果运用在计算机领域中,我们也可以把算法定义成:“为了解决某一个问题或完成一项任务,所需的有限次数的重复性指令与计算步骤。”认识了算法的定义后,我们来说明一下算法必须符合的5个条件,如表1-1所示。
表1-1
认识了算法的定义与条件后,接下来要思考:用什么方法来表达算法最为适当呢?其实算法的主要目的在于让人们了解所执行工作的流程与步骤,只要能清楚地体现算法的5个条件即可。算法常用的描述方式或工具如下。
文字描述:使用中文、英文、数字等来说明算法的步骤。
伪语言(Pseudo-Language):接近高级程序设计语言的写法,也是一种不能直接放进计算机中执行的语言。一般需要一种特定的预处理器(preprocessor),或者人工编写转换成真正的计算机语言,经常使用的有SPARKS、PASCAL-LIKE等语言。
流程图(Flow Diagram):是一种以一些图形符号来描述算法执行流程的工具。例如,请用户输入一个数字,然后判断这个数字是奇数还是偶数,描述这个算法的流程图如图1-6所示。
图1-6
程序设计语言:目前算法也可以直接以可读性高的高级语言来描述,例如Visual C#、Java、Python、Visual Basic、C、C++等语言。在本书中,将以Python语言来描述算法。
算法和过程(procedure)有何不同?与流程图又有什么关系?
算法和过程是有区别的,因为过程不一定要满足有限性的要求,如操作系统或计算机上运行的一些过程。除非宕机,否则永远在等待循环中(waiting loop),这就违反了算法五大原则之一的“有限性”。
另外,只要是算法都能够使用流程图来描述,但反过来,过程的流程图可以包含无限循环,所以过程无法用算法来描述。
为了便于程序的编写,将算法通过流程图来描述是目前最普遍的方式。下面我们来看看流程图的用法。
- 点赞
- 收藏
- 关注作者
评论(0)