计算机导论csi-6-本要点
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例:在输入的任 意三个数中挑出 最大者
在分支路径上出现 新的两路分支结构
开始
输入:A,B,C
≤
>
A:B
≤
>
B:C
≤
A:C
>
输出:C
输出:B
输出:C
输出:A
根据问题的若干种 采取相应处理动作。 结束
不同情况,
25
改进:“打擂台”算 法
开始
输入:A,B,C
A→MAX B:MAX
≤
> B→MAX
C:MAX ≤
13
三类典型的重复结构(1)
当型
假
控制条件B
真 S
While <B> S
14
三类典型的重复结构(2)
S
真
控制条件B
假
S While <B>
直到型
15
三类典型的重复结构(3)
初值→i I : 终值 超过
未超过
S i+步长→i
初值→i
当i未超过终值
S i+步长→i
步长型
16
6.3.2、结构化定理 1.结构化定理
18
2、结构化思想方法
• 原则:“先全局后局部、先整体后细节、 先抽象后具体”
– 复杂的任务分解成简单的任务 – 模块(model)化
19
3、递归过程
• 所谓递归过程,是指在程序模块的算法 流程中,出现对这个模块本身的调用操 作。这种调用叫做递归调用,即“自己 调用自己”。
20
6.4 算法示例
• 在算法层次上会有5个方面的工作
– 设计算法 – 表示算法 – 确认算法 – 分析算法 – 验证算法
3
6.2
1、流程图符号
基本符号: 起/始
算法表示手段
表示意义:
算法的起点和终点
数据/动作
数据/数据的输入输出动作
动作
处理动作
条件
循环条件 循环条件
(逻辑)判断
流线、(动作)控制流方向
循环、上/下界
采用三种基本结构的复合(S可以是任一种 基本结构或基本操作),可以表达任何程序。 “结构化” : 顺序、分支、循环来构造程序的 算法流程
17
6.3.2、结构化定理
1.结构化定理
采用三种基本结构的复合(S可以是任一种 基本结构或基本操作),可以表达任何程序。
而在算法设计时遵循结构化思想,用逐步 求精的分解方法来解决复杂问题,较易向结构 化程序设计转换。
10
6.3 结构化设计
6.3.1 三种流程结构 程序/算法中的三类基本控制结构
1)顺序结构
S1
操作步骤依次执行
S2
11
2)分支结构 (选择结构)
真
判断
假
S1
S2
按判断结果选择执行某一分支上的操作步; 算法的一次执行中,S1和S2不可能同时执行
12
3)重复结构 反复地执行一组操作若干次
判断
假
真
S
开始
例1. 求解Ax²+ Bx + C=0
输入: A,B,C
由判断的取
值,决定执行
B*B -4*A*C→W
两个处理序
<
列中的一个。
W:0
≥
SQRT( ) 是个函数
输出:“无实根”
SQRT(W)→W
(-B+W)/(2*A)→x1 (-B -W)/(2*A)→x2
输出: x1,x2
结束
24
多路分支结构: (1)两路分支的嵌套
4
一、流程图符号(续)
基本符号:
表示意义:
特定处理:另外再详细表示的操作
准备(动作)
符
(流程的接点)连接符
注解
5
1、流程图符号(续)
起始 动作1
动作2
动作3
动作4
结束
并行符号和并行动作示例
6
1、流程图符号(续)
.....
.....
省略符号使用示例
7
2、操作表示
Βιβλιοθήκη Baidu
原则:具体或笼统的程度和算法的描述目标相一致
> C→MAX
输出: MAX
结束
26
(2)多路分支
例:菜单选择控制 输入: I
I=?
I=1 I=2 I=3 I=4
S1
S2 S3
S4
一般来说,用嵌套的二路分支来实现多路
分支结构最灵活。
27
3、重复结构
开始
1→i
输入:X X→MAX 当i<500 输入:X
i+1→i
X:MAX
≤
1.单重循环结构
i是个计数器
开始
2* 3.14 * 2 →L 3.14 * 2*2→S
算法2 计算任意圆 开始
输入:R
2*3.14*R → L 3.14 * R*R→S
输出:L,S 结束
输出:“周长=”,L “面积=”,S
结束
22
例2. 通讯录查找
开始
输出:“请输入姓名”
输入: 姓名
打开通讯录文件
读出指定记录
输出:“姓名:”姓名 “电话号码:”电话号
4)判断
真 逻辑表达式
假
> 表达式:表达式 < =
操作涉及的数据表示方式:常量、变量、函数、表达式, 描述格式是不严格的。
9
3.类程序设计语言的伪代码
• 一种结构类似、但又不那么严格、不那 么形式化的算法表示手段,这就是伪代 码(pseudo code)
– 数据的赋值、输入、输出 – 顺序执行 – 选择执行 IF – 重复执行 WHILE – 伪代码的书写版式
例1: 在500个输入数 中挑选最大者。
>
X → MAX
输出:MAX
28
结束
开始 输入:X X→MAX 当x<>0
X:MAX
≤
输入:X
例2: 任意个非0数 挑选最大者
>
X → MAX
MAX:0 =
≠ 输出:MAX
输出:“无输入数”
例:1.把S中的元素按升序排列 (很笼统)
2.交换变量a和b的值
(较具体)
面向高级程序设计的操作表示建议:
1) 输入/输出操作 (不指向介质和设备)
输入:变量(名)
输出:<表达式>
2)赋值操作(处理)
<表达式> 变量(名)
或 变量(名) <表达式>
8
3)对文本的操作(处理) 打开/关闭文件 读,写,重写,删除一个记录
码 关闭通讯录文件
结束
设: 通讯录文件
组织:索引文件
记录:姓名,
提示信息
地址,
姓名是变量名 (记录的域)
电话号码, 工作单位
请输入姓名 李四
文件
姓名:李四 张三 A 123 X
电话号码: 李四 B 456 Y
456
……
李四 B 456 Y
文件的内存缓冲区 Bu2f3fer
2、分支结构的算法设计
二路分支结构:
1、顺序结构的算法设计
要点:
(1)把处理过程转化为一个依次逐步执行的操
作序列
(2)操作步之间的先后关系
一般:输入——变换处理——输出
(3)算法操作序列和计算机执行序列一致,注
意对数据对象的修改序列,保证结果正确。
如: T+B→T T+1→A
不等同
T+1→A T+B→T
21
例1.计算圆的周长和面积 算法1 只能计算一个圆(R=2)
第六章 数据加工表示方法
6.1 数据加工表达层次 6.2 算法表示手段 6. 3 结构化设计 6. 4 算法示例 6. 5 工程化开发方法
1
6.1 数据加工表达层次
问题描述 ( 非过程化 ) 算法
程序设计 ( 高级语言 )
现实世界 计算机世界
机器语言程序
机器指令
0/1 记号
2
6.2 算法表示手段
在分支路径上出现 新的两路分支结构
开始
输入:A,B,C
≤
>
A:B
≤
>
B:C
≤
A:C
>
输出:C
输出:B
输出:C
输出:A
根据问题的若干种 采取相应处理动作。 结束
不同情况,
25
改进:“打擂台”算 法
开始
输入:A,B,C
A→MAX B:MAX
≤
> B→MAX
C:MAX ≤
13
三类典型的重复结构(1)
当型
假
控制条件B
真 S
While <B> S
14
三类典型的重复结构(2)
S
真
控制条件B
假
S While <B>
直到型
15
三类典型的重复结构(3)
初值→i I : 终值 超过
未超过
S i+步长→i
初值→i
当i未超过终值
S i+步长→i
步长型
16
6.3.2、结构化定理 1.结构化定理
18
2、结构化思想方法
• 原则:“先全局后局部、先整体后细节、 先抽象后具体”
– 复杂的任务分解成简单的任务 – 模块(model)化
19
3、递归过程
• 所谓递归过程,是指在程序模块的算法 流程中,出现对这个模块本身的调用操 作。这种调用叫做递归调用,即“自己 调用自己”。
20
6.4 算法示例
• 在算法层次上会有5个方面的工作
– 设计算法 – 表示算法 – 确认算法 – 分析算法 – 验证算法
3
6.2
1、流程图符号
基本符号: 起/始
算法表示手段
表示意义:
算法的起点和终点
数据/动作
数据/数据的输入输出动作
动作
处理动作
条件
循环条件 循环条件
(逻辑)判断
流线、(动作)控制流方向
循环、上/下界
采用三种基本结构的复合(S可以是任一种 基本结构或基本操作),可以表达任何程序。 “结构化” : 顺序、分支、循环来构造程序的 算法流程
17
6.3.2、结构化定理
1.结构化定理
采用三种基本结构的复合(S可以是任一种 基本结构或基本操作),可以表达任何程序。
而在算法设计时遵循结构化思想,用逐步 求精的分解方法来解决复杂问题,较易向结构 化程序设计转换。
10
6.3 结构化设计
6.3.1 三种流程结构 程序/算法中的三类基本控制结构
1)顺序结构
S1
操作步骤依次执行
S2
11
2)分支结构 (选择结构)
真
判断
假
S1
S2
按判断结果选择执行某一分支上的操作步; 算法的一次执行中,S1和S2不可能同时执行
12
3)重复结构 反复地执行一组操作若干次
判断
假
真
S
开始
例1. 求解Ax²+ Bx + C=0
输入: A,B,C
由判断的取
值,决定执行
B*B -4*A*C→W
两个处理序
<
列中的一个。
W:0
≥
SQRT( ) 是个函数
输出:“无实根”
SQRT(W)→W
(-B+W)/(2*A)→x1 (-B -W)/(2*A)→x2
输出: x1,x2
结束
24
多路分支结构: (1)两路分支的嵌套
4
一、流程图符号(续)
基本符号:
表示意义:
特定处理:另外再详细表示的操作
准备(动作)
符
(流程的接点)连接符
注解
5
1、流程图符号(续)
起始 动作1
动作2
动作3
动作4
结束
并行符号和并行动作示例
6
1、流程图符号(续)
.....
.....
省略符号使用示例
7
2、操作表示
Βιβλιοθήκη Baidu
原则:具体或笼统的程度和算法的描述目标相一致
> C→MAX
输出: MAX
结束
26
(2)多路分支
例:菜单选择控制 输入: I
I=?
I=1 I=2 I=3 I=4
S1
S2 S3
S4
一般来说,用嵌套的二路分支来实现多路
分支结构最灵活。
27
3、重复结构
开始
1→i
输入:X X→MAX 当i<500 输入:X
i+1→i
X:MAX
≤
1.单重循环结构
i是个计数器
开始
2* 3.14 * 2 →L 3.14 * 2*2→S
算法2 计算任意圆 开始
输入:R
2*3.14*R → L 3.14 * R*R→S
输出:L,S 结束
输出:“周长=”,L “面积=”,S
结束
22
例2. 通讯录查找
开始
输出:“请输入姓名”
输入: 姓名
打开通讯录文件
读出指定记录
输出:“姓名:”姓名 “电话号码:”电话号
4)判断
真 逻辑表达式
假
> 表达式:表达式 < =
操作涉及的数据表示方式:常量、变量、函数、表达式, 描述格式是不严格的。
9
3.类程序设计语言的伪代码
• 一种结构类似、但又不那么严格、不那 么形式化的算法表示手段,这就是伪代 码(pseudo code)
– 数据的赋值、输入、输出 – 顺序执行 – 选择执行 IF – 重复执行 WHILE – 伪代码的书写版式
例1: 在500个输入数 中挑选最大者。
>
X → MAX
输出:MAX
28
结束
开始 输入:X X→MAX 当x<>0
X:MAX
≤
输入:X
例2: 任意个非0数 挑选最大者
>
X → MAX
MAX:0 =
≠ 输出:MAX
输出:“无输入数”
例:1.把S中的元素按升序排列 (很笼统)
2.交换变量a和b的值
(较具体)
面向高级程序设计的操作表示建议:
1) 输入/输出操作 (不指向介质和设备)
输入:变量(名)
输出:<表达式>
2)赋值操作(处理)
<表达式> 变量(名)
或 变量(名) <表达式>
8
3)对文本的操作(处理) 打开/关闭文件 读,写,重写,删除一个记录
码 关闭通讯录文件
结束
设: 通讯录文件
组织:索引文件
记录:姓名,
提示信息
地址,
姓名是变量名 (记录的域)
电话号码, 工作单位
请输入姓名 李四
文件
姓名:李四 张三 A 123 X
电话号码: 李四 B 456 Y
456
……
李四 B 456 Y
文件的内存缓冲区 Bu2f3fer
2、分支结构的算法设计
二路分支结构:
1、顺序结构的算法设计
要点:
(1)把处理过程转化为一个依次逐步执行的操
作序列
(2)操作步之间的先后关系
一般:输入——变换处理——输出
(3)算法操作序列和计算机执行序列一致,注
意对数据对象的修改序列,保证结果正确。
如: T+B→T T+1→A
不等同
T+1→A T+B→T
21
例1.计算圆的周长和面积 算法1 只能计算一个圆(R=2)
第六章 数据加工表示方法
6.1 数据加工表达层次 6.2 算法表示手段 6. 3 结构化设计 6. 4 算法示例 6. 5 工程化开发方法
1
6.1 数据加工表达层次
问题描述 ( 非过程化 ) 算法
程序设计 ( 高级语言 )
现实世界 计算机世界
机器语言程序
机器指令
0/1 记号
2
6.2 算法表示手段