第3章 结构化程序设计方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(2)
(-1)i+j|A’|
Aij
(3)
计算n阶矩阵A-1
计算伴随矩阵A*
(6)
A*/|A|
A-1
计算n阶矩阵A的伴随矩阵A*
(6)
i=0, j=0
i+1 0
i<n T
F
F j+1
j<n T
Aij
A*[j,i]
(5)
完成A*计算
考虑完算法,开始考虑实现 (抽象数据类型)
• 自顶向下、逐步求精的方法不仅使用于结 构化程序设计,也适用于其它的程序设计, 比如SQL。
开始
输入n阶矩阵
A
(1)
计算|A|
(2)
T
(3)
|A|!=0 计算A-1
FHale Waihona Puke Baidu
(4)
A没有逆矩阵 测试A-1
结束
计算n阶|A|
(2)
0 0
T
n>1
F
F i+1 i<n T
(5)计算代数余子式
s
|A|
(5)
计算n阶矩阵A的代数余子式Aij 除去A的第i行,第j列, 形成n-1阶矩阵A’
计算n-1阶|A’|
程序设计方法学 ——第3章 结构化程序设计方法
徐承志 xcz911@sohu.com
3.1 结构化程序设计概述
• 结构化程序设计的内容
– 指导编写程序的一般方法 – 避免使用GOTO语句的程序设计 – 自顶向下逐步求精的程序设计 – 将任意大而复杂的流程图转变为标准形式 – 利用它组织和编写的程序容易理解和修改 – 控制程序复杂性的理论和方法 – 使得正确性的证明容易实现
– 递推技术
• 找到一个有解的方向,对问题做出有限进展,并重复 递推,使它最终到达完全解。 • 循环实现、递归实现
– 分析技术
• 对问题用“情况分析”来细化,直到可用条件语句为 止。 • If-else if-else if…,switch case
3.1 结构化程序设计概述
• 例,计算n阶矩阵的逆矩阵。
[查询目标 查询目标] 查询目标 SELECT 姓名 FROM 教师 集合1) WHERE 教师代号 IN (集合 集合 [集合 集合1] 集合 SELECT 教师代号 FROM (集合 union all 集合 union all 集合 集合2 集合3 集合4) 集合 GROUP BY 教师代号 HAVING COUNT(*)=3 [集合 在爱好篮球的老师中羽毛球水平 集合2:在爱好篮球的老师中羽毛球水平 集合 最高的老师代号] 最高的老师代号 SELECT t_i.教师代号 FROM 兴趣 i,教师_兴趣 t_i WHERE i.兴趣代号=t_i.兴趣代号 and i.兴趣名=“羽毛球” and t_i.教师代号 IN (集合 集合5) 集合 集合6) and t_i.水平>=all(集合 集合
3.1 结构化程序设计概述
• 程序设计具体步骤
– 分析问题
• 明确题目要求,列出所有已知量,找出求解范围、解的精度等
– 建立数学模型
• 比如迭代或递推公式等 • 画出流程图,结构化流程图
– 选择算法
• • • • 算法的逻辑结构尽可能简单 算法所需的存储量尽量少 避免不必要的循环,减少执行时间 在满足题目要求下,尽量减少计算量
– 编写程序
• 先全局后局部,自顶向下,层层分解,如果某些子问题的相同,可用子 程序表示
– 调试运行 – 分析结果 – 写出程序的文档
3.1 结构化程序设计概述
• 逐步求精的过程包含了三种技术
– 分割技术
• 第一步:把问题划分成不相交的一些部分,直到可用 复用语句为止。 • 第二步:依次解决划分后的每一部分问题。
[集合 爱好篮球的老师代号 集合5:爱好篮球的老师代号 集合 爱好篮球的老师代号] SELECT t_i.教师代号 FROM 兴趣 i,教师_兴趣 t_i WHERE i.兴趣代号=t_i.兴趣代号 and i.兴趣名=“篮球”
[集合 爱好篮球的老师的羽毛球水平 集合6:爱好篮球的老师的羽毛球水平 集合 爱好篮球的老师的羽毛球水平] SELECT t_i.水平 FROM 兴趣 i,教师_兴趣 t_i WHERE i.兴趣代号=t_i.兴趣代号 and i.兴趣名=“羽毛球” and t_i.教师代号 IN ( SELECT t_i.教师代号 FROM 兴趣 i,教师_兴趣 t_i WHERE i.兴趣代号=t_i.兴趣代号 and i.兴趣名=“篮球” )
[数据表定义 数据表定义] 数据表定义 教师(教师代号,姓名); 兴趣(兴趣代号,兴趣名); 教师_兴趣(教师代号,兴趣代号,水平); [数据表定义 数据表定义] 数据表定义 查找满足下面条件的老师的姓名:在爱好篮球的老师中羽 毛球水平最高,并且在爱好羽毛球的老师中乒乓球水平最 高,并且在爱好乒乓球的老师中篮球水平最高。 [查询结果 查询结果] 查询结果 徐承志
3.1 结构化程序设计概述
• 结构化程序设计的特征
– 模块化
• 将大程序划分为若干子程序,每个子程序称为一个 独立模块 • 每个模块又可继续划分为更小的子模块 • 程序具有一种层次结构
3.1 结构化程序设计概述
• 结构化程序设计的特征
– 自顶向下
• 先设计顶层,然后步步深入,逐层细分,逐步求精。 • 步骤:首先确定问题的输入和输出,然后从大的方 面把问题分解为几个问题,每个子问题形成一个模 块。 • 特点:先整体后局部,先抽象后具体。
(-1)i+j|A’|
Aij
(3)
计算n阶矩阵A-1
计算伴随矩阵A*
(6)
A*/|A|
A-1
计算n阶矩阵A的伴随矩阵A*
(6)
i=0, j=0
i+1 0
i<n T
F
F j+1
j<n T
Aij
A*[j,i]
(5)
完成A*计算
考虑完算法,开始考虑实现 (抽象数据类型)
• 自顶向下、逐步求精的方法不仅使用于结 构化程序设计,也适用于其它的程序设计, 比如SQL。
开始
输入n阶矩阵
A
(1)
计算|A|
(2)
T
(3)
|A|!=0 计算A-1
FHale Waihona Puke Baidu
(4)
A没有逆矩阵 测试A-1
结束
计算n阶|A|
(2)
0 0
T
n>1
F
F i+1 i<n T
(5)计算代数余子式
s
|A|
(5)
计算n阶矩阵A的代数余子式Aij 除去A的第i行,第j列, 形成n-1阶矩阵A’
计算n-1阶|A’|
程序设计方法学 ——第3章 结构化程序设计方法
徐承志 xcz911@sohu.com
3.1 结构化程序设计概述
• 结构化程序设计的内容
– 指导编写程序的一般方法 – 避免使用GOTO语句的程序设计 – 自顶向下逐步求精的程序设计 – 将任意大而复杂的流程图转变为标准形式 – 利用它组织和编写的程序容易理解和修改 – 控制程序复杂性的理论和方法 – 使得正确性的证明容易实现
– 递推技术
• 找到一个有解的方向,对问题做出有限进展,并重复 递推,使它最终到达完全解。 • 循环实现、递归实现
– 分析技术
• 对问题用“情况分析”来细化,直到可用条件语句为 止。 • If-else if-else if…,switch case
3.1 结构化程序设计概述
• 例,计算n阶矩阵的逆矩阵。
[查询目标 查询目标] 查询目标 SELECT 姓名 FROM 教师 集合1) WHERE 教师代号 IN (集合 集合 [集合 集合1] 集合 SELECT 教师代号 FROM (集合 union all 集合 union all 集合 集合2 集合3 集合4) 集合 GROUP BY 教师代号 HAVING COUNT(*)=3 [集合 在爱好篮球的老师中羽毛球水平 集合2:在爱好篮球的老师中羽毛球水平 集合 最高的老师代号] 最高的老师代号 SELECT t_i.教师代号 FROM 兴趣 i,教师_兴趣 t_i WHERE i.兴趣代号=t_i.兴趣代号 and i.兴趣名=“羽毛球” and t_i.教师代号 IN (集合 集合5) 集合 集合6) and t_i.水平>=all(集合 集合
3.1 结构化程序设计概述
• 程序设计具体步骤
– 分析问题
• 明确题目要求,列出所有已知量,找出求解范围、解的精度等
– 建立数学模型
• 比如迭代或递推公式等 • 画出流程图,结构化流程图
– 选择算法
• • • • 算法的逻辑结构尽可能简单 算法所需的存储量尽量少 避免不必要的循环,减少执行时间 在满足题目要求下,尽量减少计算量
– 编写程序
• 先全局后局部,自顶向下,层层分解,如果某些子问题的相同,可用子 程序表示
– 调试运行 – 分析结果 – 写出程序的文档
3.1 结构化程序设计概述
• 逐步求精的过程包含了三种技术
– 分割技术
• 第一步:把问题划分成不相交的一些部分,直到可用 复用语句为止。 • 第二步:依次解决划分后的每一部分问题。
[集合 爱好篮球的老师代号 集合5:爱好篮球的老师代号 集合 爱好篮球的老师代号] SELECT t_i.教师代号 FROM 兴趣 i,教师_兴趣 t_i WHERE i.兴趣代号=t_i.兴趣代号 and i.兴趣名=“篮球”
[集合 爱好篮球的老师的羽毛球水平 集合6:爱好篮球的老师的羽毛球水平 集合 爱好篮球的老师的羽毛球水平] SELECT t_i.水平 FROM 兴趣 i,教师_兴趣 t_i WHERE i.兴趣代号=t_i.兴趣代号 and i.兴趣名=“羽毛球” and t_i.教师代号 IN ( SELECT t_i.教师代号 FROM 兴趣 i,教师_兴趣 t_i WHERE i.兴趣代号=t_i.兴趣代号 and i.兴趣名=“篮球” )
[数据表定义 数据表定义] 数据表定义 教师(教师代号,姓名); 兴趣(兴趣代号,兴趣名); 教师_兴趣(教师代号,兴趣代号,水平); [数据表定义 数据表定义] 数据表定义 查找满足下面条件的老师的姓名:在爱好篮球的老师中羽 毛球水平最高,并且在爱好羽毛球的老师中乒乓球水平最 高,并且在爱好乒乓球的老师中篮球水平最高。 [查询结果 查询结果] 查询结果 徐承志
3.1 结构化程序设计概述
• 结构化程序设计的特征
– 模块化
• 将大程序划分为若干子程序,每个子程序称为一个 独立模块 • 每个模块又可继续划分为更小的子模块 • 程序具有一种层次结构
3.1 结构化程序设计概述
• 结构化程序设计的特征
– 自顶向下
• 先设计顶层,然后步步深入,逐层细分,逐步求精。 • 步骤:首先确定问题的输入和输出,然后从大的方 面把问题分解为几个问题,每个子问题形成一个模 块。 • 特点:先整体后局部,先抽象后具体。