- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计与分析第一章
程序设计方法学 主讲老师:陈菲 教材:《程序设计方法学》,胡正国、吴健、邓正宏编著,国防工业出版社 课程目标 设计方法学:讲述程序的性质以及程序设计的理论、方法和实现技术的一门学科。 主要介绍程序设计方法学这一新兴学科的主要内容,即结构化程序设计、程序正确性证明、结构化程序的正确性证明、递归程序及其正确性证明、程序的形式说明和推导、程序变换技术、程序综合技术、面向对象的设计方法和大型程序设计方法学基础等。 培养学生运用这些理论和方法,从认识规律出发训练各种良好的程序设计习惯,掌握到成熟的有实用价值的具有完整科学理论和与之相关的技术方法作指导的软件设计和开发技术。 主要内容 程序设计方法产生与发展 程序设计方法学的定义与意义 结构化程序设计及其讨论的主要问题 背景 程序设计的发展过程 50年代后—60年代初 程序设计方法的重点是如何尽可能多地使用一些技巧,以节省内存空间,提高运算速度。 本世纪60年代以来 程序设计主要问题是如何写出结构清晰、容易阅读、容易修改、容易验证即好结构的程序。 手工艺式的设计方法?工程化的设计方法 软件危机 对成本、进度的估算难以准确 用户对已完成的软件系统常常不满意 软件产品质量不可靠 软件常常难以维护 软件成本的上升 缺少文档资料 软件生产速度跟不上实际需要 程序设计方法学的产生和发展 七十年代——现在: 结构化程序设计——程序正确性证明的研究 1972年,Mills进一步提出程序应该只有一个入口和出口,补充了结构程序的规则。 1974年,D.E.Knuth 对GOTO争论进行了总结:“有些情形,主张废除;另一些情况,主张引进”。 1980年,Gries综合了以谓词演算为基础的证明系统,称为“程序设计科学”。首次把程序设计从经验、技术上升为“科学”。 内容线索 程序设计方法产生与发展 程序设计方法学的定义与意义 结构化程序设计及其讨论的主要问题 程序设计方法学定义 讨论程序的性质以及程序设计的理论和方法的一门学科。 包括: 结构程序设计 数据抽象与模块化程序设计 程序正确性证明 程序变换 程序的形式证明与推导 程序综合技术 面向对象的程序设计等等 程序设计的一般途径 内容线索 程序设计方法产生与发展 程序设计方法学的定义与意义 结构化程序设计及其讨论的主要问题 结构化程序设计及其讨论的主要问题 什么是结构程序设计 结构程序设计是避免用GOTO语句的一种程序设计 结构程序设计是自顶向下的程序设计 结构程序设计是一种组织和编制程序的方法,利用它编制的程序是容易理解和容易修改的 程序结构化的一个主要功能是使得正确性的证明容易实现 结构程序设计允许在设计过程中的每一步验证其正确性,即自动导致自我说明与自我捍卫的程序风格 结构程序设计讨论了如何将任何大规模的和复杂的流程图转换成一种标准的形式,使得它们能够用几种标准的控制结构(通常是顺序、分支和重复)通过重复和嵌套来表示 结构程序设计 结构程序设计是一种进行程序设计的原则和方法,按照这种原则和方法设计出的程序的特点是 结构清晰 容易阅读 容易修改 容易验证 按照结构程序设计的要求设计出的程序设计语言称为结构程序设计语言 利用程序设计语言或者说按照结构程序设计的思想编制出的程序称为结构化程序,或者好结构的程序 结构化程序 顺序、分支和循环三种基本控制结构和程序块只有“一个入口和一个出口”的原则 结构化程序设计讨论的主要问题 (1) goto语句?? (2)程序的结构?? (3)逐步求精程序设计???? (4)自顶向下的设计、编码和调试 (5)主程序员组的组织形式 关于GOTO语句… 1、用“允许使用GOTO语句”的高级语言设计程序尽量避免使用GOTO语句 2、语言提供了多种控制结构,为避免使用GOTO语句创造条件 3、消除GOTO 语句的通常方法有 增加辅助变量 改变程序执行顺序 …关于GOTO语句… 例1 …关于GOTO语句… 例2:查表程序 在一个表中有m个不同的数A[1], A[2],…, A[m],在该表中查找数x,若找到则打印,否则将该数添加到表中 …关于GOTO语句… 例2 程序的结构…? 好结构 结构清晰、易于读写、易于验证、可靠性好、可维护性高的程序 结构程序 只包含三种基本控制结构,且程序块均只有一个入口和一个出口 序列结构(开型结构) …程序的结构…? 选择结构(开型结构) …程序的结构? 循环结构(闭型结构) 逐步求精的程序设计方法简介 Wirth 抽象程序对抽象的数据进行某些特定的运算,并用某些合适的记号(可能是自然语言)来表示 对抽象程序作进一步的分解,并进入下一层的抽象 这样,精细化过程一直进行下去,直到程序能被计算机接受为止。此时的程序可能是用某种高级语言或及其指令书写
文档评论(0)