主要内容 #
- 自然语言
- 流程图
- 伪代码
1. 自然语言 #
自然语言就是我们日常使用的各种语言,可以是汉语、英语、日语等。用自然语言描述算法的优点是通俗易懂,当算法中的操作步骤都是顺序执行时比较直观、容易理解。
自然语言固有的不严密性使得这种描述方法存在以下缺点:
(1) 算法可能表达不清楚,容易出现歧义。例如,“甲叫乙把他的书拿来。”,是将甲的书拿来还是将乙的书拿来?从这句话本身难以判定。
(2) 难以描述算法中的多重分支和循环等复杂结构,容易出现错误。
由于上述缺点的存在,一般不使用自然语言描述算法。
2. 流程图 #
流程图(Flow Chart)是最常见的算法图形化表达,也称为程序框图,它使用美国国家标准化协会(American National Standard Institute,ANSI)规定的一组几何图形描述算法,在图形上使用简明的文字和符号表示各种不同性质的操作,用流程线指示算法的执行方向。
结构化程序设计方法中规定的三种基本程序流程结构(顺序结构、选择结构和循环结构)都可以用流程图明晰地表达出来(见下图)。
流程图描述算法简单、直观,但修改麻烦,使用者可以在流程图上随意画流程线,使其常常非结构化。因此,结构化程序设计语言出现之后,对流程图的依赖逐渐降低。流程图适用于描述非常简单的算法,对复杂算法的描述非常不便。
3. 伪代码 #
伪代码是用在更简洁的自然语言算法描述中,用程序设计语言的流程控制结构来表示处理步骤的执行流程和方式,用自然语言和各种符号来表示所进行的各种处理及所涉及的数据(见下图)。它是介于程序代码和自然语言之间的一种算法描述方法。这样描述的算法书写比较紧凑、自由,也比较好理解(尤其在表达选择结构和循环结构时),同时也更有利于算法的编程实现(转化为程序)。
图2:用伪代码表示顺序、选择和循环结构
例 给出计算10!算法的伪代码。
Output:10! FACTOR-10 1 sum = 0 2 FOR j = 2 TO 10 3 DO sum = sum * j 4 RETURN sum
伪代码是一种用类似于程序的文本来表达算法的方式。它比一般的程序设计语言简单易学,使算法设计者可以把注意力集中在设计算法而不是具体程序设计语言的语法细节上。用伪代码表达的算法容易翻译成程序,因此,伪代码往往出现在程序的注释中。需要强调的是,伪代码没有统一的格式标准,前面介绍的标准只是建议性的,只要能够简洁完整地表达算法就可以了。伪代码在算法描述中是使用得非常多的一种工具。