上QQ阅读APP看书,第一时间看更新
1.6.2 流程图
对于问题“求两个正整数m和n的最大公约数”,在上小节有了算法,但这个算法是用自然语言描述的,自然语言描述的算法是不能被程序设计语言接受的。需要另外一种方法对设计出来的算法进行描述。算法描述是为了将算法的步骤变成能够用程序设计语言所实现的表示方式。
描述算法就是使用某种描述工具表示算法的过程,描述算法有多种不同的工具,例如前面介绍的欧几里得算法,就是用自然语言描述的,其优点是通俗易懂,但它不太直观,描述不够简洁,且容易产生二义性,自然语言表示是按照步骤的标号顺序执行的,因此当一个算法中循环和分支较多时很难清晰地表示出来,自然语言表示的算法不便翻译成计算机程序设计语言。在实际应用中,常用(传统的)流程图、结构化流程图、伪代码、PAD中文图等工具来描述算法。
图1-7 欧几里得算法流程图
仅仅是为了说明问题,这里只讨论用流程图描述算法。
流程图(Flow chart)亦称框图。流程图是用一些几何框图、流程线和文字说明表示各种类型的操作。一般用矩形框表示进行某种处理,有一个入口,一个出口。用菱形框(或变形的菱形框)表示判断,有一个入口,两个出口。在框内写上简明的文字或符号表示具体的操作,用带箭头的流向线表示操作的先后顺序。
流程图是人们交流算法设计的一种工具,不是输入给计算机的。只要逻辑正确,人们都能看得懂就可以了,一般是由上而下按执行顺序画出来的。
例如,用流程图来描述欧几里得算法,如图1-7所示。
流程图的主要优点是直观性强,让人感到流程的描述清晰简洁,容易表达分支结构,它不依赖于任何具体的计算机和计算机程序设计语言,从而有利于不同环境和程序设计,初学者容易掌握。