1.4.2 算法描述

算法的描述就是用文字或图形把算法表示出来。常用的描述方法有:自然语言、流程图、N-S流程图、伪代码等。

1.自然语言

自然语言就是人们日常使用的语言,可以是汉语、英语或其他语言。用自然语言描述算法通俗易懂,但也存在如下缺点:

① 往往要用一段较冗长的文字才能表达清楚要进行的操作;

② 容易出现“歧义性”,往往要根据上下文才能正确判断出它的含义,不太严谨;

③ 如果用自然语言描述的算法是顺序执行的,还比较容易理解,当算法中包含了判断和转移等步骤时,用自然语言描述就不容易理解。

【例1.1】 求任意3个正整数a, b, c中的最大者。

用自然语言描述的算法如下:

① 输入a, b, c;

② a和b比较,若a>b则a=>max,否则b=>max;

③ c和max比较,若c>max,则c=>max;

④ 输出max。

2.传统流程图

传统流程图是用一些几何图形框、线条和文字来描述各种操作,是使用最早的算法和程序描述工具。美国国家标准化协会规定了一些常用流程图符号,如图1.1所示。

图1.1 常用传统流程图符号

用传统流程图描述的例1.1如图1.2所示。

图1.2 例1.1的传统流程图

3.N-S流程图

N-S流程图简称N-S图。这种流程图能清楚地显示出程序的结构。但当嵌套层数太多时,内层的方框将越画越小,从而影响图形的清晰度。

N-S 结构流程图用以下三种基本元素框来表示三种基本结构。

(1)顺序结构

图1.3表示的是顺序结构,即依次执行A、B语句或语句组。

图1.3 顺序结构

(2)选择结构

图 1.4 表示的是选择结构,其意义是:当条件p成立时执行A操作,条件p不成立时执行B操作。

图1.4 选择结构

(3)循环结构

图1.5(a)是当型循环结构,它表示的意义是:当条件p1成立时反复执行A操作,直到条件p1不成立时为止。图1.5(b)是直到型循环结构,它表示的意义是:反复执行A操作,直到条件p2不成立时为止。

图1.5 N-S结构流程图

由于 N-S 图废除了流程线,因此比传统流程图更紧凑、易画,整个算法结构是由各个基本结构按顺序组成的,其上下顺序就是执行顺序,使写算法和看算法只需从上到下进行,十分方便。但由于 N-S 图仅使用三种基本结构设计程序,因此使某些程序设计的实现变得繁琐和困难。

图1.6是描述例1.1的N-S图。

图1.6 例1.1的N-S图

4.伪代码

伪代码(Pseudo-code)又称程序设计语言 PDL,是用介于自然语言和计算机语言之间的文字和符号来描述算法的。根据编程语言的不同,有对应的类xxx语言,例如类C、类Pascal等。伪代码借助于某些高级语言的控制结构和一些自然语言的嵌套,每一行(或几行)表示一个基本操作,书写方便,格式紧凑,比较好懂,很容易转化为高级语言程序。

伪代码可以用英文、汉字、中英文混合表示算法,以便于书写和阅读为原则。用伪代码描述算法并无固定的、严格的语法规则,它比程序设计语言更容易描述和理解,又比自然语言更接近程序设计语言,只要把意思表达清楚,书写格式清晰易读即可。

下面是描述例1.1的伪代码。

read  a,b,c
if a>b
  a=>max
else
  b=>max
if c>max
  c=>max
print max

用自然语言、流程图、N-S流程图、伪代码描述的算法很容易转换为计算机程序,只要选择一种计算机语言,按照其语法规则,就可以编写出计算机程序。