- ·上一篇内容:1.1 程序与程序语言
- ·下一篇内容:上帝不必花钱
1.2 算法和算法的表示
1.2.3 算法的表示
原则上说,算法可以用任何形式的语言和符号来描述,通常有自然语言、程序语言、流程图、N-S图、PAD图、伪代码等。第一节中的三个例子就是用自然语言来表示算法,而所有的程序是直接用程序设计语言表示算法。流程图、N-S图和PAD图是表示算法的图形工具,其中,流程图是最早提出的用图形表示算法的工具,所以也称为传统流程图。它具有直观性强、便于阅读等特点,具有程序无法取代的作用。N-S图和PAD图符合结构化程序设计要求,是软件工程中强调使用的图形工具。
因为流程图便于交流,又特别适合于初学者使用,对于一个程序设计工作者来说,会看会用传统流程图是必要的。本书主要介绍和使用传统流程图表示算法,只对N-S图作简要说明。
1.流程图符号
所谓流程图,就是对给定算法的一种图形解法。流程图又称为框图,它用规定的一系列图形、流程线及文字说明来表示算法中的基本操作和控制流程,其优点是形象直观、简单易懂、便于修改和交流。美国国家标准化协会ANSI(American National Standard Institute)规定了一些常用的符号,表1-1中分别列出了标准的流程图符号的名称、表示和功能。这些符号已被世界各国的广大程序设计工作者普遍接受和采用。
起止框:用以表示算法的开始或结束。每个算法流程图中必须有且仅有一个开始框和一个结束框,开始框只能有一个出口,没有入口,结束框只有一个入口,没有出口,其用法如图1-1(a)所示。
输入/输出框:表示算法的输入和输出操作。输入操作是指从输入设备上将算法所需要的数据传递给指定的内存变量;输出操作则是将常量或变量的值由内存贮器传递到输出设备上。输入/输出框中填写需输入或输出的各项列表,它们可以是一项或多项,多项之间用逗号分隔。输入/输出框只能有一个入口,一个出口,其用法如图1-1(b)所示。
![]() |
处理框:算法中各种计算和赋值的操作均以处理框加以表示。处理框内填写处理说明或具体的算式。也可在一个处理框内描述多个相关的处理。但是一个处理框只能有一个入口,一个出口,其用法如图1-1(c)所示
![]() |
判断框:表示算法中的条件判断操作。判断框说明算法中产生了分支,需要根据某个关系或条件的成立与否来确定下一步的执行路线。判断框内应当填写判断条件,一般用关系比较运算或逻辑运算来表示。判断框一般均具有两个出口,但只能有一个入口,其用法如图1-1(d)所示。
注释框:表示对算法中的某一操作或某一部分操作所作的必要的备注说明。这种说明不是给计算机的,而是给作者或读者的。因为它不反映流程和操作,所以不是流程图中必要的部分。注释框没有入口和出口,框内一般是用简明扼要的文字进行填写。其用法见图1-2所示。
流程线:表示算法的走向,流程线箭头的方向就是算法执行的方向。事实上,这条简单的流程线是很灵活的,它可以到达流程的任意处,可见它灵活的另一面是很随意。程序设计的随意性是软件工程方法中要杜绝的,因为它容易使软件的可读性、可维护性降低。所以,在结构化的程序设计方法中,常用的N-S图、PAD图等适合于结构化程序设计的图形工具来表示算法,在这些图形工具中都取消了流程线。但是,对于程序设计的初学者来说,传统流程图有其显著的优点,流程线非常明确的表示了算法的执行方向,便于读者对程序控制结构的学习和理解。
连接点:表示不同地方的流程图的连接。
![]() |
2.用流程图表示算法
下面将例1-1、例1-2和例1-3的解题算法用流程图表示。
![]() |
在例1-1中,我们将黑、蓝、白三个墨水瓶分别用A、B、C三个变量表示,其算法就是用计算机进行任意两数交换的典型算法,流程图如图1-2所示。图中有开始框、结束框、输入框、输出框和流程线。其控制流程是顺序结构。
对例1-2和例1-3,我们使用与原题完全一致的变量名,图中的Y表示条件为真,N表示条件为假。图1-3中计算函数值的控制流程是选择结构,图1-4的控制流程是循环结构。在图1-4中使用了注释框,用此说明本操作完成"求余数"。
通过以上三个实际例子可以看出,算法就是将需要解决的问题用计算机可以接受的方法表示出来。例如:2+8-7可以直接表示,而求定积分解、求方程的根等问题,就必须找到数值解法,不能直接表达给计算机。所以算法设计是程序设计中非常重要的一个环节,而流程图是直观地表示算法的图形工具。作为一个程序设计者,在学习具体的程序设计语言之前,必须学会针对问题进行算法设计,并且会用流程图的方法把算法表示出来。