程序的灵魂-算法
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.3算法的特性
一个算法应具有以下特点: 1.有穷性 2.确定性 3.有零个或多个输入 4.有一个或多个输出 5.有效性 程序设计人员设计算法,并根据算法编写程序
2.4 怎样表示一个算法 1.用自然语言表示算法
通俗易懂,但文字冗长,容易产生歧义。
2.用流程图表示算法
直观形象,容易理解。
例1 用流程图表示算法:1×2×3×4×5
② 2×3,得6;
③ 6×4,得24;
24×5=120 ④ 通用的方法: 设两个变量(被乘数p,乘数i)
S1: 1=>p S2: 2=>i S3: p ×i=>p
S4: i+1=>i S5: 若i≤5,返回 S3;否则结束
如果题目改为求1×3×5×7×9×11
S1: 1=>p S2: 3=>i S3: p ×i=>p S4: i+2=>i S5: 若i≤11,返回 S3;否则结束
S5: 输出y“不是闰年”
S6: y+1=>y S7: 当y≤2500时转 S2,否则算法结束
例4 求 1- ? + 1/3 + … + 1/99 - 1/100
?算法: ?S1: sign=1 ?S2: sum=1 ?S3: deno=2 ?S4: sign=-sign ?S5: term=sign×(1/deno) ?S6: sum=sum+term ?S7: deno=deno+1 ?S8: 若deno≤100返回S4,否则算法结束
?结构化程序的特点:
(1) 自顶向下 (2) 逐步细化 (3) 模块化设计 (4) 结构化编码
本章小结
?算法的概念 ?简单算法的设计 ?算法的特性 ?算法的表示(流程图、伪代码) ?算法的3种结构 ?结构化程序设计思想
第二章
程序的灵魂——算法
什么是程序?
沃思公式: 数据结构+算法=程序
:对数据的描述, 要指定数据的类型、 数据的组织形式
:对操作的描述, 即操作步骤。
具体化: 程序=算法+数据结构+程序设计方法+
语言工具和环境
2.1 算法的概念
?做任何事都有一定的次序和步骤 如:召开会议,报考大学,购物等
? 从广义的角度 ——算法是为解决一个问题而采取的方
开始 1=>p 2=>i
p ×i=>p i+1=>i Y
i≤5 N
结束
S1: 1=>p
循 环
S4: i+1=>i
体
S5: 若i≤5, 返回
S3; 否则结束
例2 有50个学生,要求将他们之中成绩在 80分以上者 打印出来.用流程图表示算法。
开始
S1: 1=>i
1=>i
? 用这种方法表示的算法具有通用性、灵活性
例2 有50个学生,要求将他们之中成绩在80分 以上者打印出来.
用n表示学生学号,n1代表第一个学生学号,ni代表第i 个学生的学号,g代表学生成绩,gi代表第i个学生成绩。
算法如下:
S1: 1=>i S2: 若gi≥80则打印 ni和gi,否则不打印 S3: i+1=>i S4: 若i≤50返回 S2,否则算法结束
Y
gi≥80
N
打印ni 和gi
i+1=>i
Y
i≤50
N
结束
S2: 若gi≥80则 打印ni和gi,否 则不打印
S3: i+1=>i
S4: 若i≤50返回 S2,否则算法结 束
a.
顺
序
A
结
构
B
.
b
算法的三种基本结构
a.
选
择
成立 p
结
构A
不成立 B
.
b
a.
当
型
(while )
循
p
环
.
b
A 成立
直 到 型 (until ) 循 环
t×i=>t i+1=>i } print t END ( 算法结束)
用计算机语言表示算法
求5!用c语言表示.
main( ) {int i,t; t=1; i=2; while(i<=5){
t=t*i; i=i+1;} printf(%d,t); }
/* 120 */
2.5 结构化程序设计方法
一个结构化程序就是用高级语言表示的结 构化算法 ? 用三种基本结构组成的程序必然是结构 化程序
打印 -x
中英文混用: IF x 为正
print x ELSE
print -x
例 用伪代码表示1×2×3×4×5
开始 置t的初值为1 置i的初值为2 当i≤5,执行下面操作 使t=t×i 使i=i+1 (循环到此结束) 打印t的值
结束
也可以写成以下形式: BEGIN (算法开始)
1=>t 2=>i while i<=5 {
②y能被 4整除 但不能 被100 整除
闰年 ④其他 闰年
非闰年
不符合这两个条件的年份不是闰年。
算法如下: 设y为被测的年份
S1: 2000=>y S2: 若y不能被4整除,输出 y“不是闰年”,然后转到 S5
S3: 若y能被4整除,不能被 100 整除,则输出 y “是闰年”,转 S6
S4: 若y能被100 整除,又能被 400 整除,则输出 y “是闰年”, 转S6,(否则顺序执行)
a.
A p 不成立
b .成立
用N-S流程图表示算法
顺 序
A
结
构B
选 择 成立 结
构A
P
不成立
B
当 型 (while ) 结 构
当P 成立 A
直 到 型 (until ) 结 构
A 直到P 成立
例 用N-S图表示1×2×3×4×5
1=>p 2=>i p ×i=>p i+1=>i 直到i>5
直到型循环
法和步骤。
? 注意: 解决同一个问题可以有不同的方法和步骤, 方法有优劣之分, 采用简单的和运算步骤少的方法为优!
计算机算法分两大类别 1 、数值运算算法
目的是求数值解,算法成熟 2 、非数值运算算法
种类繁多,要求各异,难以规范
2.2 简单算法举例
例1 求1×2×3×4×5
手工计算方法:
① 1×2,得2;
?例3 判断2000-2500年中的每一年是否闰年, 将结果输出。
闰年的条件: ①能被4整除,但不能被 100 整除的年份都是闰年, 如1996,2004 年是闰年; ②能被100 整除,又能被 400 整除的年份是闰年, 如1600,2000 年是闰年。
①
y不能被4 整除 非闰年
③y能被 100整 除又能 被400 整除
1=>p 2=>i 当i ≤ 5
p ×i=>p i+1=>i
当型循环
用伪代码表示算法
伪代码是用介于自然语言和计算机语言之的文 字和符号来描述算法。
例如,“打印x 的绝对值”.
IF x is positive THEN print x
ELSE print -x
中文伪代码: 若 x 为正
打印 x 否则