首页 理论教育C语言程序设计基础:算法描述方法

C语言程序设计基础:算法描述方法

【摘要】:算法的描述方法主要有如下几种。例如,用传统流程图表示的顺序结构如图3.2所示,用NS图表示的顺序结构如图3.2所示,表示先执行A操作,再执行B操作,两者是顺序执行的关系。

算法的描述方法主要有如下几种。

1.自然语言描述

用自然语言描述算法时,可使用汉语、英语数学符号等,通俗易懂,比较符合人们的日常思维习惯,但描述文字显得冗长,在内容表达上容易引起理解上的歧义,不易直接转换为程序,所以一般适用于算法较为简单的情况。

2.流程图描述

流程图是一个描述程序的控制流程和指令执行情况的有向图,它是程序的一种比较直观的表示形式。美国国家标准化协会(ANSI)规定了图3.1所示的符号作为常用的流程图符号。用传统流程图描述算法的优点是流程图可直接转化为程序,形象直观,各种操作一目了然,不会产生歧义,易于理解和发现算法设计中存在的错误;但缺点是所占篇幅较大,允许使用流程线,使用者可使流程任意转向,有可能造成程序阅读和修改上的困难。

3.NS结构化流程图描述

NS结构化流程图是由美国学者I.Nassi和B.Schneiderman于1973年提出的,NS图就是以这两位学者名字的首字母命名的。它最重要的特点就是完全取消了流程线,这样迫使算法只能从上到下顺序执行,从而避免了算法流程的任意转向,保证了程序质量。与传统的流程图相比,NS图的另一个优点就是形象、直观,节省篇幅,尤其适合于结构化程序的设计。

例如,用传统流程图表示的顺序结构如图3.2(a)所示,用NS图表示的顺序结构如图3.2(b)所示,表示先执行A操作,再执行B操作,两者是顺序执行的关系。(www.chuimin.cn)

图3.1 传统流程图中的常用符号

图3.2 顺序结构的流程图表示

4.伪码描述

伪码是指介于自然语言和计算机语言之间的一种代码,它的最大优点是与计算机语言比较接近,易于转换为计算机程序。书写无固定格式和规范,比较灵活。

很多初学者常常因急于求解问题而直接写代码,然后边写边改,越改思路越乱,结果是欲速则不达。当我们面对一个实际生活问题时,首先应通过抽象、分解、归纳、约简等分析手段将问题抽象为数学模型,并设法找到其求解方法,然后将问题求解方法用算法描述出来,进一步分析是否存在更优(如效率更高)的求解方法,最后再将算法编码实现。在上述4种算法描述方法中,传统流程图是初学者最易掌握,也是最清晰直观的一种算法描述方法,在流程图上查找算法的逻辑错误也比直接在代码上查找更快、更有效。因此,在学习程序设计时应养成“先画程序流程图,然后再编写代码”的好习惯。