You are on page 1of 41

3 程 序式计 算机 使用

3-1 程序工 作方式 解析


—— 对比交 互方 式
人(用户) 人(用户)
程序 使用 过程 程序 开发 过程

SHELL处理层 程 序
(交互式交流方式) (程序式交流方式)

系统调用接口

操作系统功能集

硬件系统
3-2 程序的 本质

程序

程序设 计
递归思 维的理解

递归 —— 一种优 秀的 思维方 法, “大事 化小, 小事 化


了”;

 整体由 局部构 成,整 体又 是粒度 较大 的局部 ,具 有


相同的 规律, 不同的 规模 。
 因各局 部以规 模区分 ,故 有“当 前” 的概念 。
基本逻 辑控制规则 及其组合

处理 顺序 单分支 双分支 多分支

.x x x x 顺序
分支
循环
循环1 循环2 递归
递归
图 3.2 基本逻辑 控制 规则
3-3 程序构 造的基 本方 法
—— 数据组织 + 数据处

数据 组织 :组织 和提 供各种 素材 ;
数据 处理 :如何 利用 素材, 加工 处理 得到成 品。

数据 组织 :
 内存数 据组织:直 接使 用, 基本方 法有 简单
数据组 织、线性数 据组 织、 层次数 据组 织和
网状数 据组织 。
 外存数 据组织:一 般有 文件 系统和 数据 库系
统。
简单数 据组织

 适用于… …
 名字与变 量存 储地址 ……

k
x
z
y
l

图 3.4 是简单 数据组织的 示意图


线性数 据组织—— ( 1 )连续存 储
 用于同 类的批 量数 据组织 。
 线性概 念。

连续 存储— —数 组(数 列)
 同名,同 类。
 连续存储 ;
 名字与首 地址 对应;
 数据存储 位置 与编号 。
x1 x2 x3 x4 x5 x6 x7 x8 x9

x1 x2 x3 x4 x5 x6 x7 x8 x9 ……

k k+(5-1)*2

图 3.5 线性数 据组织的 连续存储


线性数 据组织—— ( 2 )非连续 存

非连 续存储 —— 链表
 非连续存 储;
 数据项记 录内 容…… 。
 头指针。

2010 15 2004 3 2000 35 2030 67 2056 2 2034 66


2000 2010 2030 2034 -1 2056

2004
3 15 35 67 66 2
H
-1

图 3.6 线性 数据组织的 非连续存 储


两种存 储方式数据 操作之比较
——数 据访问、插 入、删除

连续存储 —— 数组 非连续 存储 ——链 表


数据访

数据插

数据删

两种特 殊数据组织 、管理方式
——( 1 )栈
 先进后 出结构 ( FIL O : Fi rst In L as t O ut );
 数据的 插入和 删除;
 用途;
 “ 栈顶” 、“栈 底” 、“压 栈” ( 进栈 ) 、“出栈
”等
栈顶位置指示
出栈 栈生长方向
栈顶 栈底
压栈
两种特 殊线性数据 组织、管理 方式
——( 2 )队
 先进先 出结构 ( FI FO : Fi rst I n F ir st
Out );
 数据的 增加和 删除 ;
 用途;
 “ 入队” 、“出 队” 、清空 等。

队头位置指示 队尾位置指示

出队 入队
队列头 队列尾
层次数 据组织—— 树

 模型描 述:节 点、根 、枝 、叶、 层次



 模型的 递归描 述
 树的用 途:文 件夹与 资源 管理
z
T

T1 z z

z z z

z z
树在计 算机中的表 达

线性复合 : 树根开始 到达 每个叶 子结 点的一 条路 径上的


所有点 构成 一个线 性关系 ,整 个树 型结构 是多
个线性 关系 的叠加 。
T
T
z z

z z z z

z z z z z L2 z

z z z z
L1 L3

图 3.11 层次组织与线性 组织的关 系


二叉树 的遍历

遍历 :依 某种顺 序关 系依次 访问 树中的 所有 结点的 过程


称为遍 历。

二叉 树遍 历方式 :
(Lef t, Ro ot, Ri gh t)
 前序— — Ro -L- Ri
 后序— — L- Ri- Ro
 中序— — L- Ro- Ri
网状数 据组织—— 图

任两个数 据间 都可能 存在关 系

线性结构
A B C D E
A 0 1 0 1 1

线性结构
A E B 1 0 0 0 0
D C 0 0 0 1 0
B C D 1 0 1 0 1
图 3.12 网状 数据组织
E 1 0 0 1 0
外存组 织方式—— ( 1 )文件

文件 ( file ) : 是……
文件 系统 ( file system ): 用于管理文件的软件系统。
基本 操作 步骤: 创建 、打开 、保 存、关 闭等 。

…… 记录1
…… 记录2 ……
字符1 字符2
…… 流式文件
…… 记录n
数据项
记录式文件

图 3.15 文件的基本结 构
数据处 理方法—— 算法

算法 概念 ——运 算步 骤。

算法 特点 :
 有 0 个或 多个 输入 。
 有一个 或多 个输出 。
 确定性 。
 有穷性 。
 健壮性 。
算法评 价

 含义— —数 据量趋 于无穷 大时 算法 执行所 耗


费时间 和空 间的变 化趋势 。
 一般只 给出 量级关 系。
 算法的 量级 有
O ( 1 )、 O ( n )、 O ( log2n )、 O
( nlog2n )、 O ( n2 )、 O ( n3 )等。
算法描 述方法
自然语言

语言方式 类计算机语言

计算机语言
流程图
算法的描述: 图形方式 N-S 图

PAD 图

表格方式

【例 3-2 】输 入 10 个整数 ,求它 们的 和。


【例 3- 3 】给 定一 个正整 数 N ,判断 它是 否是素 数。
常用基 本算法

 线性数 据查 找(检 索)
 线性数 据排 序—— 选择 排序 、冒泡 排序等
 二叉树 的遍 历(查 找) —— 静态、 动态查 找( 带插
入)
 递归
 回溯
线性数 据查找(检 索)

顺序 查找

二分 查找 ——针 对已 排序数 据
线性数 据排序—— 选择排序
原始数
(6)
据集 15 18 5 9 23 10 13 7 16 5 7 9 10 13 15 23 18 16

(1) 15 (7)
18 5 9 23 10 13 7 16 5 7 9 10 13 15 23 18 16

(8)
(2) 18 15 23 13 16 5 7 9 10 13 15 16 18 23
5 9 10 7

(9)
5 7 9 10 13 15 16 18 23
(3) 5 7 15 9 23 10 13 18 16

(10)
5 7 9 10 13 15 16 18 23
(4) 5 7 9 15 23 10 13 18 16

在未排序数据集 目前应该选择
(5) 5 23 15 18 16
中选择到的数据 的数据的位置
7 9 10 13

两个数据交换
线性数 据排序—— 冒泡排序
原始数
5 9 23 10 13 7 16 15 18 5 9 7 23 10 13 16 (5)
据集 15 18
(1) 15 18 5 9 23 10 13 7 16 7 9
15 18 5 7 9 23 10 13 16 (6)
(2) 15 18 5 9 23 10 13 7 16
15 18 5 7 9 23 10 13 16 (7)
7 13
5 18
(3) 15 18 5 9 23 10 7 13 16
15 5 18 7 9 23 10 13 16 (8)
7 10
5 15
(4) 15 18 5 9 23 7 10 13 16
5 15 18 7 9 23 10 13 16 (9)
7 23

当前需要冒泡的位置 冒泡过程中两数交换 冒泡过程中两数不交换


二叉树 查找——针 对二叉排序 树
静态查找
45 45 45
32 70 32 70 32 70

18 35 65 80 18 35 65 80 18 35 65 80

7 26 7 26 7 26 动态查找
查找数据元素65

45 45 45 45
32 70 32 70 32 70 32 70

18 35 65 80 18 35 65 80 18 35 65 80 18 35 65 80

7 26 7 26 7 26 7 26 75
查找数据元素75 x 当前用于查找比较的数据元素 查找路径 x 未找到,插入
递归

递归算法 是递 归思想 的直 接应用 ,递 归的基


本思想是 ,针 对某个 概念 ,通过 概念 本身定 义这
个概念。 也就 是用自 己说 明自己 。例 如阶乘 。
对递归与 普通 循环不 同点 的理解 :普 通循环
是循环体 的串 型执行 ,而 递归则 是循 环体的 嵌套
执行。
递归两个 显著 特征: 递归 终止条 件和 递归策
略。递归 策略 往往是 向递 归终止 条件 靠拢。
递归

单递归 : 是指在递 归策 略中只 存在 一个递 归; 阶乘



多递归 : 是指在递 归策 略中往 往存 在两个 或两 个以
上的递归 。斐波 那契 数列( Fibnacci );
嵌套递归 : 是指在递 归策 略中, 某个 递归的 数据 部
分还包含 一个递 归。 Ackerman 函数 。
N+ 1 当 M= 0 时

Ak m ( M , N ) = Akm ( M-1 , 1 ) 当
M≠0 , N= 0 时;
Akm ( M- 1 , Ak m ( M , N- 1 )) 当 M
≠0 , N≠0 时。
3-4 程序设 计的 三个要 素

 环境 ——程序作用 的范 围,不
同的环 境对程 序的 构造有 不同
的要求 。
 应用 ——具 体问题 的解 决方法 环境 应用
,应用 与环境 是分 不开的 ,环
境是应 用赖以 存在 的基础 。
 语言 ——是一种粘 合剂 ,将应 语言
用和环 境连接 起来 。
1 程序设 计语言

文 章 程序

描 写 类、包
函 数
段 落
语 句
句 子
表达式
短 语
常量、变量
词 汇 保留字、运算符等
基本符号 基本符号

自然 语言 程序设计 语言
数据类 型

程序 设计 中 , 所使用 的数据 必须先 行定 义 , 其意义 在


于:
 明确数 据存储 方式
整型
 明确数 据范围 算术类型 单精度
实型
 明确数 据的合 法运 算 基本类型 字符类型 双精度

枚举类型
数据类型
数组类型

复合类型 指针类型
……
用户自定义类型

图 3.3 2 数据类 型分

表达式

表达 式— —运算 符和 操作数 连接 而成的 能


取得一定 值的 式子。

计算 机环 境下的 表达 式分为
 算术表达 式
 关系表达 式
 逻辑表达 式
类型转 换 —— 不同类型 数据混

自动转换
 隐式
 计算机自 动进行
 基本规则 : 根据存储 空间 大小, 由小 到大转 换

强制转换
 显式表达
 通常是将 大数据 截去 一部分 ,存 放到小 的空 间
中。
语句 —— 程序组成的 基本单位

注释语句
运算赋值 语句
输入 / 输出语 句
流程控制 语句
函数

 某种 处理 逻辑的 抽象
 成为 一个 独立于 具体 数据对 象的单 元
 通过 调用 为具体 的数 据对象 服务
 实现 机制 :形参 、实 参、算 法
语言种 类及其实现

面向数值计算程序
设计的高级语言
 机器语言 —— 直接执 行 面向系统程
(FORTRAN)

序设计的高 面向人工智
能程序设计
 汇编语言 —— 汇编 为机器 语 级语言(C)
汇编语言 的高级语言
言再执行 面向结构化程 机器
(FORTRAN)

序设计的高级 语言
 高级语言 —— 编译 或解释 为 语言(ALGOL、
面向网络化环
境的对象程序
PASCAL)
机器语言 再执 行 设计的高级语
言(Java)
……
面向对象的程
序设计高级语
言(C++)
2 程序 设计环境

运行 支撑 环境 ——指 程序最 终运 行的计 算机环 境, 一般


指操作系 统。

程序 开发 环境 ——指 用于支 持程 序构造 的写作 环境 ,一


般指各种 开发 工具。 涉及编 辑、编译、
连接、调 试、 执行等 基本阶 段。 目 前
多为集成 开发 环境( Integrated
Development Envivonmen, IDE )
程序执 行的基本模 型

主动 式模 型—— 程序 本身控制 自己的输 入和输 出。 程


序基本 结构 是一体 式的 。
被动 式模 型—— 事件 驱动模型 。由运行 支撑环 境控 制
输入和 输出 ,以消 息方 式通 知程序 。
程序基 本结 构是分 离式 的, 一个程 序
分为 初始化 和消息处理 两部 分。 调整界面
调整界面 程序 程序
程序 程序

… 得到反馈
得到反馈 界面 消息处理 界面 消息处理
主动读 主动读
发送消息
操作 操作 使用者 操作系统
使用者 系统 系统 操作 消息队列
操作
消息
3 模式 概念 及其建 构实例解 析  
模式 ——对 重复 出现的 问题 及该 问题的 解决 方案的 核心 描
述。 即模 式是对 特征 、规律 和经 验的一 种描 述,
该特 征、 规律和 经验 可反复 用于 类似的 问题 解决

模式模板 定义 如下:
名称    模式的 名称
语境    模式可 以适 用的情 形
问题    模式解 决的 问题
解决 方案   基于该 模式 的基本 解决 方案 原

特征     模式的 特征 抽象
样例     模式应 用的 一个样 例说 明
实现 说明   使用该 模式 时注意 的事 项
参见    相关的模 式名 称
模式实 例解析—— 循环模式  
名称 循 环三步
语境 用 于重复 处理
问题 处 理方法 的重 用
解决 方案 通 过循环 语句 实现
特征 三 步曲( 初始 条件、 入
口条件 、修正 条件 )
样例 求 P=1 +2 +3+… … sum 0;i 1 初始条件 i 1
+10 0 i<=100 入口条件 i<=100

实现 说明  该模 式重 点是三 个条 件 sum sum + i


,在特 殊语言 中, 三个 i i + 1 修正条件 i i + 1
部分的 具体表 达形 式可 输出:sum
能不同 。如 C/ C+ + 语言
,去掉 修正条 件, 入口
条件改 为 i+ +<= 100 ;
模式实 例解析—— 累加、累乘 模式
 
名称 累乘
语境 用 于阶乘 类应 用
问题 实 现某个 量的 迭乘
输入:n
解决 方案 通 过循环 实现
特征 循 环体内 出现 P = p 1; i 1 累乘量初始化 p 1

P*… 的形式 i<=n


样例 求 P=1 *2 ……* n 。 一个循环
p p * i
累乘 p p * i
实现 说明  该模 式重 点是 P= P*… 形 i i + 1
式中的 …部分 及 P 的初值 。 输出:p
初值不 一定为 1 。特殊语
言中, 累加累 乘表 达可能
有所改 变,如 C/C ++ 中,
P*= …… 。但 都表 示一个
变量的 自身的 叠加 。
参见 循 环三步 ,累 加
3- 5 软件和 软件工 程

大规 模软 件开发 的效 率、成 本问 题。

程序 设计 与软件 开发 ——人 员管 理、项 目管理 、文 档管


理等

软件 工程 ——计 算机 科学中 将以 程序设 计和构 造为 生产


力的活 动称为 软件 开发, 以便 与计 算机硬 件
生产相 对应。 同时 ,借鉴 其他 工程 学科的 方
法,引 入工程 化的 管理思 想, 以工 程化管 理
的方法 管理软 件的 开发活 动。

软件 工程 方法— —软 件生命 期, 需求分 析、设 计、 编码


、测试 、维护 。

软件 概念 ——程 序及 软件生 命期 各个阶 段形成 的文 档。

You might also like