Upload
luana
View
138
Download
0
Embed Size (px)
DESCRIPTION
C 语言程序设计 第二章程序的灵魂 -- 算法. 主要内容 2.1 算法的概念 2.2 简单算法举例 2.3 算法的特性 2.4 怎样表示一个算法 2.5 结构化算法设计方法. 2.1 算法的概念. 沃思公式: 数据结构 + 算法 =程序 具体化: 程序=算法+数据结构+程序设计方法+语言工具和环境 . 对数据的描述,要指定数据的类型、数据的组织形式. 对操作的描述,即操作步骤. 2.1 算法的概念. 做任何事都有一定的次序和步骤;如:召开会议,购物等; 算法是为解决一个问题而采取的方法和步骤; 注意: - PowerPoint PPT Presentation
Citation preview
主讲教师:李艺[email protected]
C 语言程序设计第二章 程序的灵魂 -- 算法
2-2
主要内容主要内容
2.1 2.1 算法的概念算法的概念
2.2 2.2 简单算法举例简单算法举例
2.3 2.3 算法的特性算法的特性
2.4 2.4 怎样表示一个算法怎样表示一个算法
2.5 2.5 结构化算法设计方法结构化算法设计方法
2-3
2.1 算法的概念
沃思公式: 数据结构+算法=程序
具体化:程序=算法+数据结构+程序设计方法+语言工具和环境
对数据的描述,要指定数据的类型、数据的组织形式
对操作的描述,即操作步骤
2-4
2.1 算法的概念
做任何事都有一定的次序和步骤;如:召开会议,购物等;
算法是为解决一个问题而采取的方法和步骤; 注意:
解决同一个问题可以有不同的方法和步骤,方法有优劣之分,
采用简单的和运算步骤少的方法为优!
2-5
2.1 算法的概念
算法分两大类别 数值运算算法:目的是求数值解,算法成熟; 非数值运算算法:种类繁多,要求各异,难以规范
2-6
2.2 简单算法举例
例 1 求1 × 2 × 3 × 4 × 5 手工计算方法:
通用的方法 : 设两个变量(被乘数 p, 乘数 i )第一步: 1=>p第二步: 2=>i第三步: p×i=>p第四步: i+1=>i第五步:若 i≤5 ,返回第三步;否则结束
1 × 2,得 2 ;①
6 × 4,得 24;
③2 × 3,得 6 ;
② ④24×5 =120
2-7
2.2 简单算法举例
如果题目改为求 1×3×5×7×9×11
第一步: 1=>p
第二步: 3=>i
第三步: p×i=>p
第四步: i+2=>i
第五步:若 i≤11 ,返回第三步;否则结束 用这种方法表示的算法具有通用性、灵活性
2-8
2.2 简单算法举例
例 2 有 50 个学生,要求将他们之中成绩在 80 分以上者打印出来
算法分析:用 n 表示学生学号, n1 代表第一个学生学号,ni 代表第 i 个学生的学号, g1 代表第一个学生成绩, gi
代表第 i 个学生成绩 算法
第一步 : 1=>i
第二步 : 若 gi≥80 则打印 ni 和 gi ,否则不打印 第三步 : i+1=>i
第四步 : 若 i≤50 返回第二步,否则算法结束
2-9
2.2 简单算法举例
例 3 判断 2000-2500 年中的每一年是否闰年,将结果输出。
分析:闰年的条件: 能被4整除,但不能被 100 整除的年份都是闰年,如 1996,2004 年是闰年; 能被 100 整除,又能被 400 整除的年份是闰年,如 1600,2000 年是闰年。 不符合这两个条件的年份不是闰年
y 不能被4整除
①
y 能被4整除但不能被 100整除
②
闰年
非闰年
③y 能被 100整除又能被 400 整除
闰年④ 其他
非闰年
2-10
2.2 简单算法举例
算法1. 2000=>y
2. 若 y 不能被4整除,输出 y“ 不是闰年”,然后转到第 5 步3. 若 y 能被4整除,不能被 100 整除,则输出 y“ 是闰年”,转第
6 步4. 若 y 能被 100 整除,又能被 400 整除,则输出 y“ 是闰年”,
转第 6 步,(否则顺序执行)5. 输出 y“ 不是闰年”6. y+1=>y
7. 当 y≤2500 时转第 2 步,否则算法结束
2-11
2.2 简单算法举例
例 4 求 1- 1/2 + 1/3 -1/4+ … + 1/99 - 1/100 算法:
1. sign=12. sum=13. deno=24. sign=-sign5. term=sign×(1/deno)6. sum=sum+term7. deno=deno+18. 若 deno≤100 返回第 4 步 , 否则算法结束
2-12
2.3 算法的特性
算法应具有以下特点 :
1. 有穷性2. 确定性3. 有零个或多个输入4. 有一个或多个输出5. 有效性
2-13
2.4 怎样表示一个算法
用自然语言表示算法:通俗易懂,但文字冗长,容易产生歧义。
用流程图表示算法: 直观形象,容易理解。
2-14
2.4 怎样表示一个算法
算法的三种基本结构
A
B
a
b
顺序结构
选择结构
p
A B
成立 不成立
a
b
A
p 不成立
成立
a
b
.直到型
( until)循环
当型
(while )循环
p成立
A
b
a .
不成立
2-15
2.4 怎样表示一个算法
例 1 用流程图表示算法:1 × 2 × 3 × 4 × 5 第一步: 1=>p
第二步: 2=>i
第三步: p×i=>p
第四步: i+1=>i
第五步:若 i≤5 ,返回第三步;否则结束
开始
1=>p
2=>i
p×i=>p
i+1=>i
i≤5N
结束
Y
2-16
2.4 怎样表示一个算法
例 2 有 50 个学生,要求将他们之中成绩在 80 分以上者打印出来.用流程图表示算法。 第一步 : 1=>i
第二步 : 若 gi≥80 则打印 ni 和 gi ,否则不打印
第三步 : i+1=>i
第四步 : 若 i≤50 返回第二步,否则算法结束
开始
1=>i
gi≥80Y N
打印 ni 和 gi
i+1=>i
i≤50N
结束
Y
2-17
2.4 怎样表示一个算法
例 用伪代码表示1 × 2 × 3 × 4 × 5:
开始 置 t 的初值为 1
置 i 的初值为 2
当 i≤ 5,执行下面操作 使 t = t×i
使 i = i + 1
(循环到此结束 )
打印 t 的值结束
2-18
2.4 怎样表示一个算法
也可以写成以下形式:BEGIN ( 算法开始 )
1=>t
2=>i
while i<=5
{ t×i=>t
i+1=>i
}
print t
END ( 算法结束 )
2-19
2.4 怎样表示一个算法
用计算机语言表示算法:求5!用 c 语言表示
void main( ){ int i,t; t=1; i=2; while(i<=5){
t=t*i; /* 120 */ i=i+1; } printf("%d",t); }
2-20
2.5 结构化程序设计方法
一个结构化程序就是用高级语言表示的结构化算法 用三种基本结构组成的程序必然是结构化程序 结构化程序的特点
自顶向下逐步细化模块化设计 结构化编码
2-21
本章小结
算法的概念 简单算法的设计 算法的特性 算法的表示(流程图、伪代码) 算法的 3 种结构 结构化程序设计思想