第二章 算法 (Algorithm)
算法的概念
简单算法举例
算法的特性
算法的表示
结构化程序设计方法
C语言程序设计 - 第 1章 C语言的程序结构 2
2.1 算法的概念
算法
解决问题的方法,是程序的灵魂
程序 (Program)
对算法的具体实现
程序的效率不可能超过算法的限制
Nikiklaus Wirth
程序 = 数据结构 + 算法 + 程序设计方法 + 语言工具
C语言程序设计 - 第 1章 C语言的程序结构 3
2.2 简单算法举例
求 1× 2× 3× 4× 5
S1:使 p被赋值为 1,表示为,1→p”
S2:使 i被赋值为 2,表示为,2→i”
S3:使 p*i,乘积放入 p中,表示为,p*i→p”
S4:使 i+1,和放入 i中,表示为,i+1→i”
S5:若 i小于等于 5,转到 S3继续顺序执行;否则 S6
S6:输出 p的值,算法结束。
C语言程序设计 - 第 1章 C语言的程序结构 4
2.3 算法的特性
有穷性:在合理范围之内结束
确定性:含义唯一,不存在歧义
有零个或多个输入
有一个或多个输出
有效性:能有效执行,并得到确定的结果
C语言程序设计 - 第 1章 C语言的程序结构 5
2.4 算法的表示
自然语言
传统流程图
N-S图
伪代码
计算机语言
C语言程序设计 - 第 1章 C语言的程序结构 6
三种基本算法结构
顺序结构
选择结构(分支结构)
循环结构(重复结构)
当型循环( While型循环)
直到型循环( Until型循环)
C语言程序设计 - 第 1章 C语言的程序结构 7
顺序结构
A
B
a
b
C语言程序设计 - 第 1章 C语言的程序结构 8
选择结构
A B
a
b
pY N
当 p为“真” 当 p为“假”
C语言程序设计 - 第 1章 C语言的程序结构 9
循环结构
A
a
b
p1 Y
While型循环
N 当 p1为“真”当 p1为“假”
A
a
b
p2 N
Until型循环
Y当 p2为“真” 当 p2为“假”
C语言程序设计 - 第 1章 C语言的程序结构 10
A
a
b
p Y
N
两种循环结构的比较
While型循环 Until型循环
A
a
b
!p N
Y
两个循环结构的判断条件相反
A一次也没有执行
A执行了一次当首次判断 p即为“假” (!p为“真” )当执行一次 A后,判断 p为“假” (!p为“真” )
执行了一次
C语言程序设计 - 第 1章 C语言的程序结构 11
三种基本结构的 N-S图表示
C语言程序设计 - 第 1章 C语言的程序结构 12
三种基本算法结构的共同特点
只有一个入口
只有一个出口
结构内每一部分都有机会被执行到
结构内不存在“死循环” A
a
b
BA
B
a
C语言程序设计 - 第 1章 C语言的程序结构 13
2.5 结构化程序设计方法
结构化算法
由基本结构顺序组成的算法结构
结构化程序设计方法
自顶向下
逐步细化
模块化设计
结构化编码