
2.4 用代码实现算法
前面介绍了自然语言、流程图、N-S图3种算法描述方法。这些都是依据人类大脑形成的算法,可以清楚描述问题的解决方法和步骤,但却无法被计算机所识别。要想让计算机识别人类的算法,就需要使用能与计算机沟通的语言,即编程语言来实现。本节就来介绍如何用编程语言让计算机执行人类的算法。
2.4.1 用伪代码实现算法
伪代码是由自然语言和编程语言组成的混合结构,它比自然语言更精确,算法描述更简洁,同时也很容易被转换成计算机程序。伪代码必须结构清晰,代码简单,可读性好。
【实例2.9】 根据天气温度提示增减衣物。
如今的天气预报非常智能,会根据温度提示市民增减衣物。例如,25℃以上,会提示大家穿短袖;15℃~24℃,会提示大家穿长袖或外套;5℃~15℃,会提示大家穿厚外套;5℃以下,会提示大家穿羽绒外套。用基于Python的伪代码描述此实例的算法设计。

上述伪代码中,有一部分是自然语言,有一部分是编程语言(如if、elif、else等语句)。其编程语言部分能被计算机识别,但自然语言部分无法被计算机所识别。伪代码提供了很多算法设计信息,按照其设计步骤,将自然语言部分转化成编程语言,就可以快速地形成解决本例问题的一段程序。
2.4.2 用编程语言实现算法
目前TIOBE编程语言排行榜的前5名是C、Java、Python、C++和C#,接下来我们试着用这5种编程语言分别实现实例2.9中的伪代码。
【实例2.10】 根据天气温度提示增减衣物(C版)。
具体代码如下:

【实例2.11】 根据天气温度提示增减衣物(Java版)。
具体代码如下:

【实例2.12】 根据天气温度提示增减衣物(Python版)。
具体代码如下:

【实例2.13】 根据天气温度提示增减衣物(C++版)。
具体代码如下:

【实例2.14】 根据天气温度提示增减衣物(C#版)。
具体代码如下:

以上5个版本的代码运行结果一模一样,如图2.33所示。

图2.33 运行结果
2.4.3 选择一门编程语言
通过前面的例子可发现,用5种编程语言实现的算法都能被计算机所识别。那么,在实际编程中又该选择哪种编程语言呢?事实上,C、Java、Python、C++、C#有着各自擅长的方向,语言本身没有高下之分,只有应用场景之分。
C语言是基础,C++、Java、C#都是基于C语言演化而来的,基本语法很接近。Python是脚本语言,有着另外一种语法模式。
C语言是面向过程的,适合开发底层程序和嵌入式程序,不适合开发复杂的程序;C++、C#、Java、Python是面向对象的,更适合开发应用层程序。
C++执行效率高,适合开发需要较高运行效率的计算密集型软件,如大型游戏、游戏服务器、数据库服务器、图形图像处理器、音/视频解码器等。
Java和C#的功能都很强大,是目前开发企业级项目的主流语言。Java在程序语言排行中常年位于第一,拥有广阔的开发人群。C#由微软发布,IDE功能强大,是开发Windows应用程序的不二选择。
Python作为后起之秀,语法简单,类库丰富,在网络爬虫、数据分析、人工智能等方面具有很大的优势。
再次强调,语言没有高下之分,只要是适合应用场景(即满足业务需求)的语言,就是最好的编程语言。本书中,因为Python语法简单,上手快,应用面又广,所以本书选择Python语言来实现各个算法。
说明
本书主要以算法为核心,不对Python开发环境下载与安装进行讲解,读者可以自行下载和安装Python开发环境。