4.1 程序流程图
在案例4-1中,为了把程序执行过程展现出来,将各种不同的几何图形组合起来,得到一个流程图。
在程序设计中,算法的描述方法有:用自然语言表示算法,用流程图表示算法,用N-S流程图表示算法,用伪代码表示算法。用自然语言表示的算法通俗易懂,不用使用者进行专门的训练,但存在以下问题:a.自然语言的歧义性容易导致算法执行的不确定性;b.自然语言的语句一般较长,导致描述的算法太长;c.当一个算法中循环语句和分歧较多时,就很难表达清晰。d.用自然语言表示的算法不便翻译成计算机程序设计语言。伪代码的优势:伪代码回避了程序设计语言严格、烦琐的书写格式,书写方便,同时具备格式紧凑,易于理解,便于向计算机程序设计语言过渡的优点。伪代码的不足:种类繁多,语句不容易规范,有时会产生误读。所以这里我们主要介绍常用的流程图和N-S图,下面简单学习一下算法的这两种表示方法。
1.流程图
程序流程图是一种传统的算法表示方法。程序流程图利用图形化的符号框来代表各种不同性质的操作,并用流程线来连接这些操作。流程图表示算法直观形象,易于理解。图4-2所示的流程图符号,给出了流程图的构图元素,以及其含义。
流程图是程序分析和过程描述的最基本方式,它的基本元素一共有7种,如图4-3所示。
起止框表示一个程序的开始和结束;判断框表示判断一个条件是否成立,并根据判断结果选择不同的执行路径;操作框表示对数据的处理过程;输入/输出框表示数据输入或输出结果;注释框表示对程序的解释说明;流向线以带箭头直线或曲线形式指示程序的执行路径;连接点将多个流程图连接到一起,常用于将一个较大流程图分隔为若干部分。
在当前的程序设计中,程序有3种基本结构,分别为顺序结构、分支结构和循环结构。3种基本结构都只有一个入口、一个出口。
图4-2 程序流程图符号及其含义
图4-3 程序流程图的基本元素
顺序结构是程序的基础,计算机程序可以看作一条一条顺序执行的代码,但是单一的顺序结构不可能解决所有问题,因此需要引入控制结构来更改程序的执行顺序,以满足多样的功能需求。
分支结构是程序根据条件判断结果而选择不同的路径向前执行的方式,根据分支路径上的完备性,分支结构包括单分支结构和二分支结构。
循环结构是程序根据条件判断的结果决定是否向后反复执行的一种方式。根据循环体的触发条件不同,循环结构可分为条件循环结构和遍历循环结构。
图4-4用流程图来表示3种基本结构。
2.N-S图
N-S图也被称为盒图或CHAPIN图。1973年,美国学者I.Nassi和B.Shneiderman提出了一种在流程图中完全去掉流程线,全部算法写在一个矩形阵内,在框内还可以包含其他框的流程图形式,即由一些基本的框组成一个大的框,这种流程图又称为N-S结构流程图(以两个人名字的头一个字母组成)。N-S图包括顺序、选择和循环3种基本结构,如图4-5所示。
图4-4 程序基本结构流程图
图4-5 3种基本结构流程N-S图