计算机导论-第五章程序设计分解

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

程序设计=程序+程序设计方法学
结构化程序设计方法:
•模块化 将复杂的算法(或程序)分解 成若干个相对独立、功能单一的 模块,利用这些模块组合成全局 算法(或)程序。 •自顶向下结构设计方法 从总体出发,居高临下,逐层分 解和逐步细化。
•逐步求精结构设计方法 实质上也是一种自顶向下 的设计方法。 首先抛开细节设计出抽象 算法,然后把抽象数据和操作 逐步具体化,直到可以由计算 机具体实现为止。
p=b*b–4*a*c
Y
p≥0?
N
计算实根
输出
计算复根
5.1.2 算法的类型与结构
算法 基本 分支结构 类型 非数值算法 结构 循环结构
结构化算法的属性: 1.仅有一个入口 结构化算法只 2.仅有一个出口 3.无死块 能由三种控制 4.无死循环块 结构所构成
数值算法
顺序结构
算法的描述
算法 算法的描述 自然语言 顺 序 结 构 选 择 结 构 循 环 结 构 流 程 图 算法的描述 还有计算机 语言 伪 代 码 输 赋 入出 值 语 语 句 句 条 件 语 句 循 环 语 句
• 计算机程序设计语言的发展,经历了从机器语言、 汇编语言到高级语言的历程。
5.3 .1机器语言
• 电子计算机所使用的是由“0”和“1”组成的二进 制数,二进制是计算机的语言的基础。也就是说, 写出一串串由“0”和“1”组成的指令序列交由计 算机执行,这种语言,就是机器语言 。
• 优点:由于使用的是针对特定型号计算机的语言, 故而运算效率是所有语言中最高的; • 缺点:在一台计算机上执行的程序,要想在另一 台计算机上执行,必须另编程序,造成了重复工 作。
改进 顺 序 结 构 选 择 结 构
N-S
循 环 结 构
四种图框类型
输入、输出框
处理框 判断框
起止框
● N-S结构化流程图(1973年由美国学者I.Nassi和 B . Shneiderman 提出, N 和 S 是这两位学者英文姓名 的第一个字母)
程序基本控制结构
A B 顺序 分支
T
A
?
F
B
? T A
N 输出b
Y
问题背景与分析
例5 用二分法求方程x3 - x - 1 = 0在区间 [1,1.5] 内的一个近似解(误差不超过0.001)。 第一步 确定有解区间[a, b] 第二步 取[a, b]的中点 第三步 计算函数在中点处的函数值 第四步 判断中点处函数值是否为0 第五步 判断新的有解区间的长度是否小于 给定的误差
算法2 可以运用公式1 + 2 + … + n =n(n+1)/2 直接计算。 第一步 取n = 5; 第二步 计算n(n+1)/2 ; 第三步 输出运算结果。
循环结构
例3 求1×2×3×4×5。
算法2 S1 T←1; S2 I←2; S3 T←T × I; S4 I←I + 1. S5 如果I不大于5,重新执行 S3、S4、S5;否则算法结束.
开始 T←1 I←2
T←T×I
I←I + 1 I>5
Y N
输出T 结束
问题背景与分析
例4 求两个整数a和b的最大公约数——欧几 里得辗转相除法。
分析 求出列数:
a,b,r1,r2,…,rn – 1,rn,0.
这列数从第三项开始,每项都是前两项相
除所得的余数,余数为0的前一项rn即是a和
b 的最大公约数.这种方法称为 “ 欧几里得
• 确定性:算法的每一步执行,其顺序和内容
都必须有确切的规定,不能模棱两可
• 可执行性:即算法的所有操作都是能通过
计算机程序代码实现,即可操作性
• 0个或多个输入; • 1个或多个输出
【例1】求 解一元二次方程的算法 方程a*x*x+b*x+c=0,其中a、b和c是不 等于0的实数。具体参考步骤如下:
流程图
输入wk.baidu.com,b,c
x0←(a+b)
f(a)←a3 - a - 1 f(x0)←x03 – x0 – 1
Y
f(x0)=0
N
N
f(a)f(x0)<
0
Y
a←x0
N
b←x0
|a – b| < c Y 输出x0
5.2 简单的排序算法
⑴冒泡排序法:
⑵选择排序算法:
⑶插入排序算法:
5.3 程序设计语言简介
辗转相除法”.
求68和32的最大公约 数——欧几里得辗转 相除法。 66=23×2+20
求66和23的最大公约 数——欧几里得辗转 相除法。
68=2×32+4
32=8×4+0
23=20×1+3 20=3×6+2
3=2×1+1
2=1×2+0
流程图
输入a,b
b←r a←b r←Mod(a,b)
Mod(a,b)≠0
5.3 .2 汇编语言
• 用一些简洁的英文字母、符号串来替代一个特定 的指令的二进制串,比如,用“A D D”代表加法, “M O V”代表数据传递等等 。 • 缺点:汇编语言同样十分依赖于机器硬件,移植 性不好 ; • 优点:效率仍十分高,针对计算机特定硬件而编 制的汇编语言程序,能准确发挥计算机硬件的功 能和特长,程序精炼而质量高,所以至今仍是一 种常用而强有力的软件开发工具。
• 算法的定义:是指解题方案的准确 而完整的描述,也可以说它是解决 某一特定问题的一组有穷规则的集 合。
(计算科学)可以用计算机来解决一类问题的 程序和步骤
算法特征:
• 有穷性:合理算法应在执行有限步后结束
如:N!=1*2*3*…*(N-1)*N 而式子:sum=1+2+3+…+N+… 不能称为算法,因为它执行有限步后仍不能结束
F
A F ? T
当循环 直到型 循环
自然语言示例
例2 给出求1 + 2 +3 + 4 + 5的一个算法.
算法1 按照逐一相加的程序进行.
第一步 计算1 + 2,得到3; 第二步 将第一步中的运算结果3与3相加,得到6; 第三步 将第二步中的运算结果6与4相加,得到10; 第四步 将第三步中的运算结果10与5相加,得到15.
“编码”是对需求的 实现。在“编码” 过程中,算法很重 要,良好的算法决 定了程序的质量和 性能
软件的开发不仅需要处理大量 的关系复杂的数据,这些数据通常 都具有一定的结构性。因此,软件 设计的实质就是设计合适的数据结 构和基于这个数据结构的算法。于 是N.沃恩提出了著名公式: 程序 = 数据结构 + 算法
第五章 程序设计
本章内容
5.1 5.2 5.3 5.4 算法的定义与表示 简单的排序算法 程序设计语言简介 汇编语言
5.1算法的定义和表示
5.1.1 算法的定义 软件开发步入 工程化阶段
大型软件开发一般要经历“规划”、 “需求分析”、“设计”、“编 码”、“测试”和“运行维护”等 阶段
正确的“需求分 析”对程序设计 是至关重要的
相关文档
最新文档