算法
数据结构:对数据的描述。
算法:对操作的描述。
沃思公式:算法 + 数据结构 = 程序
特性
- 有穷性
- 确定性
- 有零个或者多个输入
- 有一个或者多个输出
- 有效性
表示方法
- 自然语言
- 传统流程图
- 结构化流程图(N - S )
- 伪代码
传统流程图
由美国国家标准协会ANSI规定
菱形框:对一个给定的条件进行判断,根据给定的条件是否成立决定如何执行其后的操作
连接点:用相同的标志表示同一个点,将一个流程图的两个部分连接起来。
流程图包括的部分
- 表示相应操作的框
- 带箭头的流程线
- 框内外必要的文字说明
流程图的三种基本结构
顺序结构
顺序执行,是最简单的结构
选择结构
又称选取结构
或者分支结构
必须包含一个判断框
循环结构
又称重复结构(反复执行某一部分的操作)
当型(while型)
当给定条件成立时执行操作,执行之后再判断条件,继续执行
直到型(until型)
先执行操作,然后判断条件
三种结构的共同特点
- 只有一个出口
- 只有一个入口
- 结构中的每一部分都有机会被执行到
- 结构内不存在死循环
由基本结构所构成的算法属于结构化的算法
,它不存在无规律的转向,只是在本结构内才允许存在分支和向前向后的跳转。
N-S流程图(结构化流程图)
优点
比文字描述直观形象易于理解
比传统流程图紧凑易画
伪代码
用流程图来表示算法,用伪代码来设计算法
伪代码是介于自然语言和计算机语言之间的文字和符号来描述算法。
优点
不用图形符号,书写方便,格式紧凑,修改方便,易于向计算机语言过渡。
用计算机语言表示算法
完成一项工作包括设计算法
和实现算法
两个部分,写出C程序只是描述了算法,并未实现算法,只有运行程序才是实现算法。
结构化程序的设计方法
一个结构化的程序就是用计算机语言表示的结构化算法,用三种基本结构构成的算法必然是结构化的算法。
基本思路
把一个复杂问题的求解过程分段进行,每个阶段所处理的问题都在人们容易理解和处理的范围内。
设计方法
- 自顶向下
- 逐步细化
- 模块化设计
- 结构化编码
自顶向下,逐步细化的设计方法的过程就是将问题求解由抽象逐步细化的过程。这种方法便于验证算法的正确性。
模块化的设计方法比较常用,在程序比较复杂的时候更有必要。程序中的子模块在C语言中通常通过函数来实现,划分时应注意模块的独立性,即使用一个模块完成一项功能,耦合性越少越好。
结构化的程序设计方法用了解决人脑思维能力的局限性和被处理问题复杂性之间的矛盾。
在设计好结构化的算法之后要善于进行结构化编码,所谓编码就是将已经设计好的算法用计算机语言来表示,根据已经细化的算法正确的写出计算机程序。