- 2
- 0
- 约8.75千字
- 约 40页
- 2017-06-12 发布于北京
- 举报
第六章 程序设计基本方法 主要内容: 引言--程序设计的基本原则 选择语句的设计 循环语句的设计 循环不变式的设计 界函数的设计 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 的语义以及相关定理和循环程序的验证的方法是循环程序构造的理论
您可能关注的文档
最近下载
- 2026年高考全国II卷文科综合真题试卷(新课标卷)(+答案).docx VIP
- 安路科技(688107)补国产短板,突高端应用,拓新应用与技术大市场-240717-东北证券-38页.pdf VIP
- [搞笑小品剧本]上当了小品剧本.docx VIP
- 全国初中数学联合竞赛真题及答案(初二组)2015-年.pdf VIP
- 数据中心800V直流供电技术白皮书2.0.pdf
- 上海大学2022-2023学年第1学期《高等数学(上)》期末考试试卷(B卷)附参考答案.pdf
- 上海大学2022-2023学年第1学期《高等数学(上)》期末考试试卷(A卷)附参考答案.pdf
- 中国教育行业人才流动与薪酬水平_2025年12月.docx
- 2024全国初中数学联赛初二卷 .pdf VIP
- AIAG-VDA-SPC手册-Yellow-Volume2026年2月第一版 中文.pdf VIP
原创力文档

文档评论(0)