算法及算法的描述方法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

循环结构

当型循环结构(while型循环)如图循环结构1所示 直到型循环结构(Until型循环) 如图循环结构2所示 a
不成立
a A
p
成立
A b
循环结构1
成立
p
不成立
b
循环结构2
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
2004秋季计算机学院本科课程
C程序设计 (Programming in C )
西安电子科技大学计算机学院 张淑平
School of Computer Science & Engineering, Xidian University, China
上次课程的内容提要



C语言是一种得到广泛应用的高级程序设计语言 用高级程序语言编写的程序需要进行翻译才能被计算 机执行,对于C语言程序,该翻译过程由C编译器完成 明确本课程的学习目标:初步掌握程序设计基本知识 和良好的程序设计风格 用计算机解决问题的首要步骤是分析问题并设计算法 算法描述了给定问题的解题步骤 流程图是一种算法描述方法
伪代码算法中基本符号的使用

运算符号(a ← 5;b ← 3)



简单算术运算符号: +、-、×、/、 mod(整除取余) » 例如:a+b、a-b、a×b、a/b、a mod b 关系运算符号: >、≥、<、≤、=、≠ » 成立:true(Yes、Y) » 不成立:false(No、N) 括号: (、)
20
用N-S盒图描述算法

流程图符号
a A B

N-S盒图的基本符号
A B
顺序结构
b
顺序结构
a
成立 不成立
p
A B
成立
p
不成立
A
选择结构
B
b
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
16
求最大公约数流程图
开始
A B C
输入正整数m和n
r←m被n除的余数
N
r不等于0?
A
B C D
a
不成立 成立
Y m ← n; n ← r
r←m被n除的余数
b
D
输出n的值 结束
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China


如何判定给定正整数n是否为素数呢?根据定义。
从2开始找n的因子,若能找到一个介于2和n-1之间的 n的因子,说明n不是素数;否则,n是素数。
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China

例如,判断闰年的条件(给定一个年号k)

能被4整除,但是不能被100整除的年份是闰年

(k mod 4 = 0) and (k mod 100 ≠ 0) (k mod 100 = 0) and (k mod 400 = 0)
19
其他算法描述方法

用N-S盒图表示算法 用伪代码描述算法 用PAD图描述算法(略) 用计算机语言描述算法(程序) ...
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
2
素性判别

素性判别就是给定一个正整数,判定其是否为素数
素数的定义:一个大于1的整数,如果它的正因数只有1和它 本身,就叫做素数,否则就叫合数。
循环结构2
22
求最大公约数流程图
开始
输入正整数m和n
r←m被n除的余数
输入正整数m和n N
r←m被n除的余数
当rFra Baidu bibliotek等于0
r不等于0?
Y m ← n; n ← r
r←m被n除的余数
m ← n; n ← r
r←m被n除的余数
输出n的值
输出n的值 结束
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
24
用伪代码表示算法
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
25
规定一些基本符号

运算符号

简单算术运算符号: +、-、×、/、 mod(整除取余) 关系运算符号: >、≥、<、≤、=、≠ 逻辑运算符号: and 、or、not 括号: (、) 以英文字母开头的字母、数字符号串 例如:sum, price, i, m, k, n, a1, a2 赋值: ← ,例如 i ← 1 如果p成立则A否则B: if p then A else B
14
判断闰年的流程图
开始 a 结构不好!
输入一个年份值k
A B
N
A B b
k能被4整除?
N
Y
k能被100整除?
Y
k能被400整除?
无法划分基 本单元! N
Y
输出k是闰年 输出k不是闰年
结束
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
设有两个正整数m和n,如何求其最大公约数? 有多种方法,例如 求解速度最快的方法是辗转相除法。
辗转相除法(欧几里得算法): 给定两个正整数m和n,求它们的最大公约数(公因子)。 步骤1:【求余数】以n除m并令r为所得余数(0≤r<n) 步骤2:【余数为0?】若r=0,算法结束;n即为答案 步骤3:【互换】置m←n, n←r,转向步骤1。
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
5
求最大公约数流程图
开始 输入正整数m和n
结构不好!
n←r m←n Y
r←m被n除的余数
r不等于0?
N
输出n的值
结束
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
开始
输入一个年份值k k能被4整除?
N
Y
N
k能被100整除?
输出k不是闰年
Y
输出k是闰年 k能被400整除?
N
Y
输出k是闰年 输出k不是闰年
结束
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
11
计算1+2+…+100的流程图
开始
A
I ← I+1
I←1 S←0
A
B
B
S← S+I
Y I<=100? N
C
C
输出S的值
结束
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
12
判断闰年的流程图
选择结构
21
用N-S盒图描述算法

流程图符号
a
不成立

N-S盒图的基本符号
当p成立
p
成立
A b
循环结构1
A
当型循环结构
a
A
成立
A
直到p成立
p
不成立
直到型循环结构
b
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
10
基本结构小结

只有一个入口 只有一个出口 结构中的每一部分都存在一条从入口到出口的路径 结构内不存在“死循环”
a
成立 不成立
a A B
p A b
B
死循环
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
18
流程图的优缺点

优点

直观形象,比较清楚地表现了各个框图的逻辑关系 占用篇幅较多 对流程线的使用没有限制,允许随意转向可能造成流程混乱,理解 困难

缺点

西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
3
素性判别
开始 输入n的值 K← 2
K ← K+1
Y
K不能整除n?
N
K等于n?
N
Y
输出n是素数 输出n不是素数
结束
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
4
求最大公约数

17
求最大公约数流程图
开始
A
B
输入正整数m和n
r←m被n除的余数
m ← n; n ← r
N
r不等于0?
A B C
成立 不成立
Y
C
输出m的值
结束
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China

顺序结构和选择结构的流程图如下图所示
a a
成立 不成立 成立
a
不成立
A
B b
顺序结构
p
A B A
p
b
选择结构1
b
选择结构2
9
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
三种基本结构
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
8
三种基本结构

1966年,Bohra和Jacopini提出了以下三种基本结构, 作为构造算法的基本单元

顺序结构 选择结构 循环结构
13
判断闰年的流程图
开始
a
A B
输出k是闰年 N
输入一个年份值k N
k能被4整除? Y k能被100整除? Y k能被400整除? Y 输出k是闰年 N
C
输出k不是闰年
b
A
输出k不是闰年 成立 不成立
p
结束
B
C
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China

用于表示某种对象名字的符号



其他(处理、语句)


当p成立时,则A:
» »
while p do A do A while p

输入和输出(打印) :input、print


基本块起、止符号: {、 }
算法开始和结束:BEGIN、END
26
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
15
求最大公约数流程图
开始 a
不成立
输入正整数m和n
p
成立
A n←r m←n Y r不等于0? N 输出n的值 r←m被n除的余数 b
循环结构1
a A
成立
结构不好!
结束
p
不成立
b
循环结构2
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
6
这次课的主要内容

结构化方法的基本结构:顺序结构、选择结构、循环 结构 其他算法描述方法

N-S盒图方法 伪代码方法
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
7
三种基本结构
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
27
伪代码算法中基本符号的使用

逻辑运算



逻辑运算符号: and 、or、not 并且:and 或者:or 非(不是):not
23
N-S盒图表示法小结

与流程图相比,N-S盒图



保留了流程图方式直观、形象和易于理解的优点 去掉了流程线,形式上更紧凑 避免了流程的随意跳转,确保了结构化技术
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
相关文档
最新文档