数据结构与算法(Python版)
上QQ阅读APP看书,第一时间看更新

1.5 算法表示方式

程序设计采用自然语言描述容易产生二义性,即歧义。例如,英文单词“doctor”的汉语含意是“博士”或“医生”,需要根据“doctor”所处的语境决定其含义。为了让算法表示的含义更为准确,往往采用流程图、N-S图和伪语言等。

1.5.1 流程图

流程图是描述算法最常用的一种方法,通过几何框图、流向线和文字说明等流程图符号表示算法。流程图具有以下优点。

● 采用简单规范的符号,画法简单。

● 结构清晰,逻辑性强。

● 便于描述,容易理解。

流程图如图1.7所示,主要采用以下符号进行问题的描述。

● 起止框用于流程的开始和结束。

● 输入框向程序输入数据,输出框用于程序向外输出信息。

● 箭头用来控制流向。

● 执行框又称为方框,用于表示一个处理步骤。

● 判别框又称菱形框,用于表示一个逻辑条件。

例1-5】流程图举例。

【题意】求最大公约数,流程图如图1.8所示。

图1.7 流程图基本符号

图1.8 求最大公约数的算法

1.5.2 N-S图

1973年美国学者I.Nassi和B.Shneiderman提出了一种新的流程图形式,称为N-S图。N-S图删除了带箭头的流程线,避免了流程无规律随意转移。N-S图如图1.9所示。

● 顺序结构:语句1、语句2和语句3这3个框组成一个顺序结构。

● 选择结构:当“条件”成立时执行“选择体1”操作,“条件”不成立则执行“选择体2”操作结构。

图1.9 N-S结构流程图基本元素框

● 循环结构:循环结构分为当型循环结构和直到型循环结构两种。

● 当型循环结构。先判断后执行,当“循环条件”成立时反复执行“循环体”操作,直到“循环条件”不成立为止。

●直到型循环结构。先执行后判断,当“循环条件”不成立时反复执行“循环体”操作,直到“循环条件”成立为止。

图1.10 N-S结构流程图

例1-6】N-S图举例。

【题意】求整数1~n之和不超过10000时n的最大值,N-S图如图1.10所示。

1.5.3 伪语言

伪语言(Pseudocode)也称伪代码,介于自然语言和计算机语言之间,并不是真正存在的编程语言。伪代码综合使用多种编程语言中的语法、保留字,甚至会用到自然语言,不采用图形符号,因此书写方便、格式紧凑,便于向计算机编程语言(如Pascal、C和Java等)过渡。

例1-7】伪代码举例。

【题意】输入3个数,打印输出其中最大的数。伪代码如下所示。