李玲玲C课件最终版-第二章
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
– 算法简练通用
如果改成求1 如果改成求1×2×3×...×1000,只需将步骤5中对i的 ...×1000,只需将步骤5中对i 判断改成1000既可。 判断改成1000既可。
7
2.2 简单算法举例
如果改成1 如果改成1×3×5×7×9×11×13,算法如下: 11×13,算法如下: 1. 令p=1 2. 令i=3 3. 使p×i,并将乘积放入p中,表示为p=p×i ,并将乘积放入p中,表示为p=p× 4. 使 i 的值加2,表示为 i=i+2 的值加2 5. 如果i不大于13,返回到步骤3继续向下执行;否则算法 如果i不大于13,返回到步骤3 结束,p 结束,p中的值即最后结果。
•
由基本结构构成的算法属于“结构化”的算法, 由基本结构构成的算法属于“结构化”的算法, 不存在无规律的转向。 不存在无规律的转向。
•
只要符合上述的四个特点的结构,都称为基本 只要符合上述的四个特点的结构,都称为基本 结构。 结构。
返回
22
四、用N-S流程图表示算法
• •
1973年 Nassi和Shneiderman提出 也称盒图。 1973年,Nassi和Shneiderman提出,也称盒图。 提出, 完全取消了流程线,全部算法写在一个矩形框内。 完全取消了流程线,全部算法写在一个矩形框内。
返回
24
五、用伪代码表示算法
•
流程图和N 图画起来都比较费事,在算法设计 流程图和N-S图画起来都比较费事,在算法设计 不宜使用。 过程不宜使用 过程不宜使用。
•
伪代码是用介于自然语言和计算机语言之间的文 伪代码是用介于自然语言和计算机语言之间的文 字和符号来描述算法。 字和符号来描述算法。
•
书写方便,格式紧凑,易懂, 书写方便,格式紧凑,易懂,便于向计算机语言 过渡。 过渡。
– 炒肉片 买肉(20)→切肉(1)→切葱(0.5)→热锅(2)→炒肉(3) 买肉(20)→切肉(1)→切葱(0.5)→热锅(2)→炒肉(3) 耗时26.5 耗时26.5
买肉(20)→热锅(2) 买肉(20)→热锅(2)
→炒肉(3) 炒肉(3) 耗时25 耗时25
→切肉(1)→切葱(0.5) → 切肉(1)→切葱(0.5) – 在12 23 25 33 45 57 80这列数中定位到57 80这列数中定位到 这列数中定位到57 12→23→25→33→45→57 12→23→25→33→45→57 33→57 33→57
33
返回
算法的例子
•
求100以内的自然数的累加和 100以内的自然数的累加和
8
2.2 简单算法举例
•
例2 有50个学生,要求将他们之中成绩在80分以上者打 50个学生,要求将他们之中成绩在80分以上者打 印出来。
– 用i表示序号,ni表示第i个学生的学号,gi表示该学生的成绩。 表示序号,ni表示第i个学生的学号,gi表示该学生的成绩。 算法: 1. 令i=1 2. 如果gi≥80,打印ni和gi。 如果gi≥80,打印ni和gi。 3. i=i+1 4. 如果i不大于50,返回到步骤2继续向下执行;否则算法结束。 如果i不大于50,返回到步骤2
6步 2步
4
2.1 算法的概念
•
算法的分类
– 数值运算算法:
* 求数值解
– 非数值运算算法:
* 事物管理领域
返回
5
2.2 简单算法举例
•
例1 求1×2×3×4×5
– 最原始的方法:
1. 求1×2, 得结果2。 得结果2 2. 将第1步得到的结果再乘以3, 得结果6。 将第1步得到的结果再乘以3, 得结果6 3. 将第2步得到的结果再乘以4, 得结果24。 将第2步得到的结果再乘以4, 得结果24。 4. 将第3步得到的结果再乘以5, 得120。即最后结果。 将第3步得到的结果再乘以5, 120。即最后结果。
– 自然语言 – 传统流程图 – 结构化流程图 – N-S流程图 – 伪代码 – 计算机语言
返回
11
一、用自然语言表示
•
自然语言指人们日常使用的语言,如汉语、英语等 自然语言指人们日常使用的语言,如汉语、
– 2.2节中介绍的算法是用自然语言写的 2.2节中介绍的算法是用自然语言写的
•
用自然语言表示算法通俗易懂,但不严谨,容易产 用自然语言表示算法通俗易懂,但不严谨, 生歧义
2.
三种基本结构
– 顺序结构 – 选择结构 – 循环结构
17
三、三种基本结构和改进的流程图
•
顺序结构
A
B
18
三、三种基本结构和改进的流程图
•
选择结构
真 A P 假 真 A P 假 B
单选择
k k=k1 A1 k=k2 A2 ...
二分支选择
k=kn k=ki Ai ... An
多分支选择
19
三、三种基本结构和改进的流程图
•
除非问题很简单,一般不用自然语言描述算法 除非问题很简单,
返回
12
二、用流程图表示
• • •
流程图是用一些图框表示各种操作。 流程图是用一些图框表示各种操作。 是用一些图框表示各种操作 用流程图表示算法直观形象,易于理解。 用流程图表示算法直观形象,易于理解。 美国国家标准化协会ANSI规定了一些常用的流程 美国国家标准化协会ANSI规定了一些常用的流程 图符号。 图符号。
起止框 输入输出框 判断框 处理框
或
流程线
连接点
注释框
13
二、用流程图表示
例1:输入a、b的值,输出较大者。
开始 输入a,b的值 真 假
a≥b
输出a的值
输出b的值
结束
14
二、用流程图表示
例2:计算1x3x5x...x13的值
开始 p=1 i=1 p=p×i i=i+2 真 i≤13 假 输出p的值 结束
–
算法正确,但过于繁琐
如果问题改成求1 如果问题改成求1×2×3×...×1000,需要999步才行。 ...×1000,需要999步才行。
6
2.2 简单算法举例
– 改进的方法:
先设两个变量p 先设两个变量p和i,p代表被乘数,i代表乘数;将每一步 代表被乘数,i 乘积直接放入被乘数变量p 乘积直接放入被乘数变量p中;用循环算法求结果。 1. 令p=1 2. 令i=2 3. 使p×i,并将乘积放入p中,表示为p=p×i ,并将乘积放入p中,表示为p=p× 4. 使 i 的值加1,表示为i= i+1 的值加1,表示为i= 5. 如果i不大于5,返回到步骤3继续向下执行;否则算 如果i不大于5,返回到步骤3 法结束,p 法结束,p中的值即最后结果。
A B
p
成立 否则
当p成立 A A 直到p成立
A
B
23
四、用N-S流程图表示算法
•
N-S图表示算法的优点: 图表示算法的优点:
–比文字描述直观、形象、易于理解 比文字描述直观、形象、 –比传统流程图紧凑易画 –废除了流程线 * 整个算法结构是由各个基本结构按顺序组成的, 整个算法结构是由各个基本结构按顺序组成的, N--S流程图中的上下顺序就是执行时的顺序。 --S流程图中的上下顺序就是执行时的顺序。 用N--S图表示的算法都是结构化的算法 --S
29
•
•
2.5 结构化程序设计方法
结构化程序设计方法
自顶向下 逐步细化 模块化设计 结构化编码
30
2.5 结构化程序设计方法
自顶向下,逐步细化
直接将各小段表达为文字语句为止
31
2.5 结构化程序设计方法
•
自顶向下,逐步细化方法的优点: 自顶向下,逐步细化方法的优点 – 考虑周全,结构清晰,层次分明,作者容易写, 读者容易看。 – 如果发现某一部分中有一段内容不妥,需要修改, 只需找出该部分修改有关段落即可,与其它部分无 关。我们提倡用这种方法设计程序。这就是用工程 关。我们提倡用这种方法设计程序。这就是用工程 的方法设计程序。 的方法设计程序。
•
循环结构
P 真 A 假
当型(while型)循环
直到型(until型)循环
A 假 P 真
20
三、三种基本结构和改进的流程图
3. 三种基本结构的共同点
只有一个入口 一个出口 结构内每一部分都有机会被执行 结构内不存在“死循环” 结构内不存在“死循环”
21
三、三种基本结构和改进的流程图
•
已经证明, 已经证明,用上述三种基本结构顺序组成的算 解决任何复杂的问题。 法结构,可以解决任何复杂的问题 法结构,可以解决任何复杂的问题。
•
教学重点与难点
– 算法的特征与算法的表示 – 结构化程序设计的三种基本结构
2
提纲
• • • • •
2.1 算法的概念 2.2 简单算法举例 2.3 算法的特性 2.4 算法的表示 2.5 结构化程序设计方法
3
2.1 算法的概念
• •
算法就是解决一个问题所采取的步骤 算法的好坏决定了解决问题的效率
当i <=5
i <=5 y P*i p i+1 i
结束
练习:求S= ∑N,写出其算法 返回
N= 1
100
28
2.5 结构化程序设计方法
•
结构化程序: 结构化程序:使用三种基本结构设计的程序叫结构 化程序 基本思想:把一个复杂问题的求解过程分阶段进行, 基本思想:把一个复杂问题的求解过程分阶段进行, 分阶段进行 每个阶段处理的问题都控制在人们容易理解和处理 的范围内 优点:结构清晰,易读,提高程序设计质量和效率, 优点:结构清晰,易读,提高程序设计质量和效率, 强调程序设计风格和程序结构的规范化 程序设计风格和程序结构的规范化, 强调程序设计风格和程序结构的规范化,提倡清晰 的结构
15
二、用流程图表示
•
Hale Waihona Puke 小结: 小结: 一个流程图包括以下几个部分: 一个流程图包括以下几个部分:
– 表示相应操作的框 表示相应操作的框 – 带箭头的流程线 带箭头的流程线 – 框内必要的文字说明 框内必要的文字说明
返回
16
三、三种基本结构和改进的流程图
1.
传统流程图的弊端
– 流程线的大量使用造成阅读困难,修改困难 流程线的大量使用造成阅读困难,
返回
9
2.3 算法特性
•
有穷性
– 有限的操作步骤
•
确定性
– 每一个步骤都是确定的
•
有零个或多个输入
– 输入:在执行算法时从外界取得的信息
•
有一个或多个输出
– 算法的目的是为了求解,得到结果
•
有效性
– 每个步骤都能有效执行,并得到确定的结果
返回
10
2.4 算法的表示
•
常用的算法表示方法: 常用的算法表示方法:
第二章 算 法
程序设计方法+ 程序=算法+ 程序=算法+数据结构 +程序设计方法+语言工具和环境
灵魂 加工对象 方法 工具
•
教学目与要求
– 理解算法的含义 – 掌握算法的特性和怎样表示一个算法 – 掌握结构化程序设计的三种基本结构及设计方法
•
教学内容
– 算法的概念 – 算法的特性和怎样表示一个算法 – 结构化程序设计的三种基本结构
32
2.5 结构化程序设计方法
•
模块设计的方法 模块设计的方法 – 基本思想:“分而治之”的思想,把一个大任务分 基本思想:“分而治之” 为若干个子任务,每一个子任务就相对简单了。 – 子模块一般不超过50行。 子模块一般不超过50行。 – 划分子模块时应注意模块的独立性,即:使一个模 划分子模块时应注意模块的独立性,即:使一个模 块完成一项功能,耦合性愈少愈好。 块完成一项功能,耦合性愈少愈好。
•
例 求5!。 #include <stdio.h> void main() { int i,t; t=1;i=2; while(i<=5) { t=t*i; i=i+1; } printf("%d\n",t); }
27
几种算法表示方法比较: 几种算法表示方法比较:
例:求5!
自然语言 S1: 1 p S2: 2 i S3: p*i p S4: i+1 i S5: 若i<=5, 返回s3 返回 S6: 结束 流程图 开始 1 2 n p i N-S图 图 1 2 P*i i+1 p i p i 伪代码 C语言 BEGIN main() 1=>p {int i,p; 2=>i p=1; while i<=5 i=2; {p*i=>i while(i<=5) i+1=>i {p=p*i; } i=i+1; print i } END printf(“%d”,t); }
25
•
例:打印x的绝对值伪码表示的算法 打印x if x is positive then print x else print -x
若x为正 输出 x 否则 输出 –x
返回
26
六、用计算机语言表示
•
只有用计算机语言描述 的算法才能被计算机的 编译环境识别,并被处 编译环境识别, 执行。 理、执行。 用计算机语言表示算法 必须严格遵守 遵守所用语言 必须严格遵守所用语言 语法规则。 的语法规则。