数据结构北航软件技术基础课程ppt

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 通用性好
– 可靠性,可移植性-传统的程序 – 方法上:抽象思维,模块化
2020/9/23
第零章 程序设计方法
• 结构化程序设计方法 1968年Dijkstra提出结构化程序设计,主要思想:
– 自上而下,逐步求精-功能结构 – 分层结构与模块结构的程序设计-系统结构,先全局后局部,保证
块间不构成圈,块独立,块的层次分明 – 避免GOTO-控制结构采用三种结构 – 主程序员-组织结构
• 概要设计-Primary Design
评 审
• 详细设计-Detailed Design
• 编码调试-Coding & Debug
• 测试-Testing
• 运行与维护-Maintenance
(标准:国标,军标,DOD标准)
2020/9/23
第零章 程序设计的一些问题
• 需求分析-Requirement Analysis • 概要设计-Primary Design • 详综细述:设说计明-问D题et,ai明le确d软D件e的si功gn能,明确做什么,建立数 • 编据任码流务图:调,确试数定-据软C字件od典开in发g的&主要De任b务ug • 测功试能:-T确es定ti主ng要功能-输入/处理/输出(IPO) • 运性间行能,:数与确据维定刷护主新要时-M性间a能in,te速n度an,c响e应时间,数据转换/传输时

2020/9/23
存储结构 具有某种逻辑结构的数据在计算机存 储器中的存储方式。
存储结构是数据结构在计算机中的表示,也称之为物理结构。
2020/9/23
第零章 如何评价程序
• 正确性:让它干等于程序干的吗?,在不同的环境下的鲁棒性。
– 验证方法:枚举法,归纳法,抽象法,证明
• 时空性:时间越少,空间越小越好
– 时间和空间的定义 – 时空的矛盾 – 解决时间的关键是算法,解决空间的关键是数据结构 – 发展趋势
• 易读性-自己读,别人读,结构清晰,易读易理解,人机界面好,注释 语句
综述:设计程序的基本流程,组织结构,输入输出,接口设计及数据
• 编结码构设调计试-Coding & Debug 任务:
• 测试1概-T要e结s构tin设g计-程序结构,给出程序的分层结构 • 运行23功 程与能序维划的分控护-制-分流M程 程a序 和i与 数nt模 据e块 流n的a功nc能e
4系统间接口,与其他系统的接口 5内部接口 6算法上列举可能的求解算法 产生:概要设计说明,用户手册
2020/9/23
第零章 程序设计的一些问题
• 需求分析-Requ综 任i述 务re: :m对e模n块t进A行n过a程ly描s述is,设计模块内部细节。 • 概要设计-Primary12结 资D构 源e设 分s计 析ig: 及n模 余块 量细 -化 大, 于形20成%的程余序量单元 • 详细设计-Detaile34d参 算D数 法化 的es: 具i设 体gn计 化参数,增加软件的柔性 • 编码调试-Codi产n生g:&详D细设eb计u说g明书 • 测试-Testing • 运行与维护-Maintenance
• 程序与软件?
程序是最终达到一定目的指令序列。 例如课程表,会议程序,开学注册程序
计算机程序:计算机指令的序列,实现预期的目的。
软件 狭义:软件=程序,除了硬件都是软件 广义:软件≠程序 软件是一种抽象的、逻辑性的产品,它不仅是在 计算机上运行的程序,还包括开发、使用和维护程 序所需要的文档。 软件可以减轻劳动,提高工作效率,是计算机工 作的延伸。
• 软件开发周期长 • 软件开发费用大 • 软件的正确性差 • 软件的可靠性差
– 工程化的方法-软件工程 – 据估计,将软件生产由手工方式转变为工程化方式,软件
可靠性将提高90%,测试和维护成本大大降低。
速度:8行/天->20多行/天
2020/9/23
第零章 程序设计的一些问题
• 需求分析-Requirement Analysis
软件技术基础
• 教材:
– 数据结构教程,迟乐军等编著,北京航空航天大学出版社, 2003.4
– 软件技术基础 王人骅 唐梓荣 北京航空航天大学出版社
• 参考资料:
– 数据结构与算法分析,[美]Clifford A. Shaffer著,电 子工业出版社,2001.2
权威著作:
– The Art of Computer Programming(计算机程序设计技巧),其中 的第一卷、第三卷
– 作业:至少完成6次作业(每次 布置作业后一周后上交,两周 截止日期,过期减少分数-最 后一次除外)
• 结业方法
1. 作业:30%, 考试70%
2. 考试占100%
数据结构在程序设计中是非常实用的一门技术, 是前人程序设计的结晶,希望大家能掌握这门技术, 为研究工作奠定基础。
2020/9/23
第零章 程序设计的一些问题
数据结构 = 数据 + 结构
从三个方面研究数据结构:
逻辑结构 存储结构
算法
2020/9/23
逻辑结构 • 数据元素之间具有的逻辑关系(结构)。
线性关系(线性结构): 数据元素间为严格的一对一关系。
非 树形结构 : 线 数据元素间为严格的一对多关系。

图状结构(或网状结构):

数据元素间为多对多关系
2020/9/23
软件技术基础
• 要求的基础:
– 学习并掌握了一门高级语言,最好完成过一定数量的程 序
• 目标:
– 提高程序设计的分析能与实际动手能力,掌握一定的数 据处理方法
– 理解软件设计与开发的基本概念
• 联系方法:
姓名:高连生 电话:82317246,13466367678
QQ:525573325
– 错误:60%发生在设计阶段,36%发生在编码阶段 – 纠正错误的费用:编制程序的费用为1,则说明阶段的费用为0.5
,测试阶段的费用为2-5,运行阶段的费用为10
• 组织结构:七人小组 • 软件生命周期的概念
2020/9/23
第零章 程序设计的一些问题
• 讨论 – 软件工程强调开始定型,以后不变,这在实际 工作中会有问题吗? – 快速原型法Prototyping – 软件工程还是快速原型?
2020/9/23
数据元素
• 数据元素是数据的基本单位。 • 它也可以再由不可分割的数据项组成
2020/9/23
数据对象 性质相同的数据元素的集合 。
例:一个班级的成绩表可以看作一个数据对象。 一个图片、声音…..
数据对象是性质相同的数据元素集合。
2020/9/23
数据结构
• 数据元素集合(也可称数据对象) • 各元素之间的关系,即结构。
2020/9/23
第零章 程序设计的思维方法
• 程序设计的本质是实现算法,而算法是计算机解决问题精 确描述,有如下特征:
– 入口
– 出口
– 有穷次结束
– 序列化
– 后继唯一
• 抽象法:变量的应用,树的处理
反对教条化
• 枚举法:
• 归纳法:例如求自然数的和公式
• 回朔法:走迷宫
• 子问题法:Hanio塔问题,二叉树的遍历
2020/9/23
第一章 绪 论
• 1.1 什么是数据结构?
21
煤气管道铺设问题
A
16
B8 D
40
32
12 20
C E
50
数据结构是一门研究非数值计算的程序设计问题 中,计算机的操作对象以及它们之间的关系和操作的学 科。
2020/9/23
第一章 绪 论
• 1.2 基本概念与术语
数据
例1:学生成绩
2020/9/23
第零章 程序设计的一些问题
• 软件和属性
– 计算机运行中不可缺少的 – 预先编好,能为他人使用 – 商品
• 盘和软件
– 盘是软件的载体
• 软件的分类
– 应用软件 – 系统软件
2020/9/23
第零章 程序设计的一些问题
• 程序设计的几个阶段(软件工程简介)
– 六、七十年代出现了软件危机
2020/9/23
第零章 程序设计的一些问题
• 需求分析-Requ综 调i述 试re:m根e据n详t细A设n计a说ly明s书is,编程实现,并进行 • 概要设计-Prim编 语a程 言ry标 -D准 结e: 构s化i,gn编程格式-缩进等,控制结构- • 详细设计-Deta三 口ile种 入d控 ,制 出D口结e出构s,,ig出插n/入入或口复结制构程-序唯时一要,完禁整止-自从修入改, • 编码调试-Codi程 的n序g长单&≤元6D的0行规eb,模u≤注g2意00转行移,,程重序定中位平能均力单,元命 • 测试-Testing 名统一,数值约定一致,有效数字,注释 • 运行与维护-Ma行调i试n≥t后2e0要n%进a行nc单e元测试,先逐步审查代码,后测
• 编码调试-Coding测&试模:D块e测b试u:g单元问题
• 测试-Testing
联合测试:接口问题 系统测试:系统问题
• 运行与维护-Main正 执te确 行n的 一a依 次n据 ,ce: 每每 个条 功语 能句 正执确行一次,每个通道
2020/9/23
Biblioteka Baidu
第零章 程序设计的一些问题
• 需求分析-Requirement Analysis • 概要设计-Primary Design • 详细设计-Detailed Design • 编码调试-Coding & Debug • 测试-Testing • 运行与维护-Maintenance
学号 6201001 6201002 6201003 6201004 ...
姓名 语文 数学 C语言 张三 85 54 92 李四 92 84 64 王五 87 74 73
2020/9/23
例2:声音、图象
数据是信息的载体,是对客观事物的符号表示,它被计算机 所识别、存储和加工,构成计算机程序的加工原料。
综述:记录运行状况,为下一版本升级奠定基础
2020/9/23
第零章 程序设计的一些问题
• 问题的解决
– 周期:需求3-6%,设计5%,编码与调试7%,测试15%,运行 维护67%工作量
– 费用:需求5%,设计10%,编码调试8%,测试12%,运行维护 65%费用
– 可靠性与正确性:步步为营,测试
• 统计数据
接口:与外设,与软件,与人的界面
产生:需求规格说明书,数据流程图,数据字典
202(0/9/2标3 准:国标,军标,DOD标准)
第零章 程序设计的一些问题
• 需求分析-Requirement Analysis
• 概要设计-Primary Design
• 详细设计-Detailed Design
• 编码调试-Coding &设D计e:b如ug何解决问题,可能的解
• 第四章 串和数组
• 第九章 文 件
(1) 适 合 于 软 件 的 开 发 与 设 计 程 序 包括:程序,软件开发的步骤-软件工程,程
序设计的思维方法,结构化程序设计, O-O程序设计 (2) 数据结构 包括:线性表,链表,栈,队列,树,图等
2020/9/23
软件技术基础
• 学习方法
– 讲练结合
• 测试-Testing
决方案,数据的处理方式,存贮 方式,模块的划分、调用关系
• 运行与维护-Mainte参na考n:c与e 系统相关的资料,需求
规格说明书,程序设计手册,设
备技术手册,支持软件文档
2020/9/23
第零章 程序设计的一些问题
• 需求分析-Requirement Analysis • 概要设计-Primary Design • 详细设计-Detailed Design
• GOTO语句的讨论
– 1966年证明三种结构可以表达所需要的程序结构。 – 使用GOTO出现的问题- 程序结构复杂化,阅读时的静态与运行中
的动态不统一,无结构形式
• 讨论 *运算是不是一种GOTO?
2020/9/23
第零章 程序设计方法
• 自顶向下,逐步求精
– 写作文的方式 – 在以后的学习中大量用到
eMail:gaoliansheng@buaa.edu.cn
2020/9/23
liansheng_gao@sohu.com
软件技术基础
• 第零章 编程的一些问题 • 第五章 二叉树和树
• 第一章 绪 论
• 第六章 图和广义表
• 第二章 线 性 表
• 第七章 排 序
• 第三章 栈和队列
• 第八章 查 找
试,通过测试用例保证每条源代码至少执行一次
2020/9/23
第零章 程序设计的一些问题
• 需求分析-Requ综 结i述 果re: :m由 测e专 试n门 报t的 告A测n试a人ly员s对is软件进行测试
• 概要设计-Prim12ary测 测试 试D计e划sign
• 详细设计-Detaile条 wda件lDkt:her编osu译gihg、n链接成功,完成单元测试,
相关文档
最新文档