PM–Chap6小程序设计的基本方法.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PM–Chap6小程序设计的基本方法

第六章 程序设计基本方法 主要内容: 引言--程序设计的基本原则 选择语句的设计 循环语句的设计 循环不变式的设计 界函数的设计 6.1 程序设计的基本原则 Principle 1: A program and its proof should be developed hand in hand, with the proof usually leading the way, 一个程序和它的正确性证明应同时设计,并且最好以考虑证明为先导。 Principle 2:使用理论来提供正确性的理解,而在适当的地方用常识和直观方法,但当出现困难和复杂情况时,仍然依据形式理论作保证。当然一个人只有既有常识又掌握理论才能有效地在形式化和常识之间进行协调,前者是程序员一直在使用。 6.1 程序设计的基本原则 Principle 3:要了解将用程序来处理的对象的性质。 例:假设有一袋装有黑白两色棋子。每次从袋中任取两粒子,若它们同色,则丢掉这两粒子,然后再补进一只黑子,否则丢掉黑子,放回白子。连续执行这一步骤,直至袋中只剩下一子为止。试问最后这一子是黑或白?编一程序回答此问题。 6.1 程序设计的基本原则 Principle 4:不要忽视任何看起来十分明显的原则,只有通过有意识地运用这些原则才会获得成功。 Principle 5:认识一个原则和应用一个原则是两回事。 Ideas may be simple and easy to understand, but their application may require efforts. Recognizing a principle and applying it are two different things. Principle 6:在着手编程之前,首先要弄清楚问题是要求“做什么”的,并将其抽象化为前置条件和后置条件,即给出精确的程序规范,且勿仓促编码。 6.1 程序设计的基本原则 Principle 7: 程序设计是一种面向目标的设计活动。即程序设计是围绕着目标Q进行的,这意味着Q起着比P更重要的作用。 关于证明和测试数据分析 边进行程序设计,边写下有关的测试数据。关键在于有效地选择和生成测试数据集; 从工程角度看,测试是重要的; 但从人员培训的角度看,应该训练程序员具有编制正确程序的能力; 因此,学习和研究形式证明技术是培养能力的一种有效的途径 测试只能证明程序有错,并不能证明程序是正确的。 Test 对程序员的科学训练是十分重要的,有人曾做过一个试验:一个题目由一批印度的程序员和中国的程序员来做,结果如何? 由一批印度程序员来做,其结果惊人地相似; 而由一批中国程序员来做,编出的程序五花八门。 只有规范的科学的编程,一个大项目才能得到有效地管理,其质量才有保证。创造性应该发挥在适当的地方。 6.1 程序设计的基本原则 高效的程序员不应该浪费很多的时间用于程序调试,他们一开始就不要把缺陷引入 “程序测试是表明故障的非常有效的方法,但对于证明没有故障,调试是很无能为力的” 关于小程序的设计 70年代对小程序设计有很多的研究 小程序设计是大规模程序正确性的基础。设一个大程序是由n个小程序组成,每个程序正确的概率是p,那么整个程序正确的概率P满足: Ppn. 6.2 选择语句的设计 选择语句的设计策略: 对于规范(P,Q),寻找语句s1,它执行后可能确立Q,再寻找满足P∧c1 ? wp(s1,Q)的布尔条件c1,形成带卫哨语句 c1? s1. 继续寻找这样的带哨语句 c2?s2,..., cn? sn, 直到P ?c1∨c2 ∨... ∨cn成立为止。 例1:写一程序置换y1和y2之值使得y1≤y2. 解:其规范为: P:y1=u1 ∧ y2=u2 Q: y1≤y2∧(y1=u1∧y2=u2∨y1=u2∧y2=u1) 可能有语句 ?? skip ? ? y1,y2 := y2,y1 可求得条件分别为: y1 ≤y2 和 y2 ≤ y1 6.2 选择语句的设计 (续) ∵ y1 ≤y2 ∨ y2 ≤ y1 = True ∴ P ? y1 ≤y2 ∨ y2 ≤ y1 成立 得程序如下: if y1 ≤y2 ? skip y2 ≤y1 ? y1,y2 := y2,y1 fi 6.3循环语句的设计 引言: 讨论如何从前置条件P和结果条件Q,循环不变式和界函数构造循环程序。关于DO 的语义以及相关定理和循环程序的验证的方法是循环程序构造的理论基础。 6.3循环

文档评论(0)

shaoye348 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档