选修1《程序设计的基本方法》ppt课件2 高中信息技术 教科版.ppt.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《选修1《程序设计的基本方法》ppt课件2 高中信息技术 教科版.ppt.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计的基本方法 选修1程序设计的基本方法ppt课件2 高中信息技术 教科版.ppt 选修 程序设计 基本 方法 ppt 课件 高中 信息技术 教科版
- 资源描述:
-
1、第三课 程序设计方法学基本理论 程序正确性证明 什么样的程序才是正确的? 如何来保证程序是正确的?程序正确性概述关于程序正确性的认识 根据问题的特性和软件所要实现的 功能,选择一些具有代表性的数据,设计测试用例。通过用例程序执行,去发现被测试程序的错误。 什么样的程序才是正确的? “测试测试”或或“调试调试”方法方法 采用“测试”方法可以发现程序中的错误,但却不能证明程序中没有错误! 因此,为保证程序的正确性,必须从理论上研究有关“程序正确性证明”的方法。程序正确性证明发展历程 20世纪50年代 Turing开始研究 1967年,Floyd和Naur提出不变式断言法 1969年,Hoare提出
2、公理化方法 1975年,Dijkstra提出最弱前置谓词和程序推导方法,解决了断言构造难的问题,可从程序规约推导出正确程序,使正确性证明变得实用。 程序正确性理论是十分活跃的课题,不仅可程序正确性理论是十分活跃的课题,不仅可以证明顺序程序的正确性,而且还可以证明非确以证明顺序程序的正确性,而且还可以证明非确定性程序,以及并行程序的正确性。定性程序,以及并行程序的正确性。程序正确性理论 程序设计的一般过程 程序正确性理论 程序功能的精确描述 1、程序规约:对程序所实现功能的精确描述, 由程序的前置断言和后置断言两部分组成。2、前置断言:程序执行前的输入应满足的条件, 又称为输入断言。3、后置断言
3、:程序执行后的输出应满足的条件, 又称为输出断言。 程序设计过程:问题 程序规约 程序程序规约的基本分类 非形式化程序规约 非形式化程序规约采用自然语言描述程序功能,简单、方便,但存在二义性,因此,不利于程序的正确性证明。 形式化程序规约 采用数学化的语言描述程序功能,描述精确,无二义性,便于程序的正确性证明。 程序规约的实例(1/2) 在书写程序规约时,使用Q表示前置断言,R表示后置断言,S表示问题求解的实现程序。在前置断言Q之前,还必须给出Q和R中所出现的标识符的必要说明。 例1:求数组b0 : n-1中所有元素的最大值。 in n:integer; in b0:n-1:array of
4、integer; out y:integer Q: n 1 S R:y MAX(i: 0 i n; bi)例2:求两个非负整数的最大公约数。 in a,b :integer; out y:integer Q: a 0 b 0 S R:y MAX(i: 1 i min(a,b) (a mod i 0) (b mod i 0): i)程序规约的实例(2/2)程序正确性定义(1/3) 衡量一个程序的正确性,主要看程序是否实现了问题所要求的功能。若程序实现了问题所要求的功能,则称它为正确的,否则是不正确的。 程序设计过程:问题 程序规约 程序 对程序的正确性理解,可以分为两个层次: 从广义来说,一个程
5、序的正确性取决于该程序满足问题实际需求的程度。 从狭义而言,如果一个程序满足了它的程序规约就是正确的。 程序规约QSR 是一个逻辑表达式,其取值为真或假,其中取值为真的含义是指:给定一段程序S,若程序开始执行之前Q为真,S的执行将终止,且终止时R为真,则称为 “程序S,关于前置断言Q和后置断言R是完全正确的”。程序正确性定义(2/3) 部分正确部分正确:若对于每个使得Q(i)为真,并且程序S计算终止的输入信息i,R(i,S(i)都为真,则称程序S关于Q和R是部分正确的。 程序终止程序终止:若对于每个使得Q(i)为真的输入i,程序S的计算都终止,则称程序S关于Q是终止的。 完全正确完全正确:若对
6、于每个使得Q(i)为真,并且程序S的计算都将终止的输入信息i,R(i,S(i)都为真,则称程序S关于Q和R是完全正确的。 一个程序的完全正确,等价于该程序是部分正确,同时又是终止的。程序正确性定义(3/3)(1)证明部分正确性的方法 A. Floyd的不变式断言法 B. Manna的子目标断言法 C. Hoare的公理化方法(2)终止性证明的方法 A. Floyd的良序集方法 B. Knuth的计数器方法 C.Manna等人的不动点方法(3)完全正确性的方法 A. Hoare公理化方法的推广 B. Burstall的间发断言法 C. Dijkstra的弱谓词变换方法以及强验证方法程序正确性的证
7、明方法分类循环不变式断言 把反映循环变量的变化规律,且在每次循环体的执行前后均为真的逻辑表达式称为该循环的不变式断言不变式断言。 例 带余整数除法问题:设x为非负整数,y为正整数,求x除以y的商q,以及余数r。 程序: q0;rx; while( r y) /该循环不变式断言: /(xyqr ) r 0 r ry; q q1; 不变式断言法 证明步骤: 1、建立断言:建立程序的输入、输出断言,如果程序中有循环出现的话,在循环中选取一个断点,在断点处建立一个循环不变式断言 2、建立检验条件,将程序分解为不同的通路,为每一个通路建立一个检验条件,该检验条件为如下形式: I R = O,其中I为输入
8、断言,R为进入通路的条件,O为输出断言 3、证明检验条件:运用数学工具证明步骤2得到的所有检验条件,如果每一条通路检验条件都为真,则该程序为部分正确的。不变式断言法实例例:设x,y为正整数,求x,y的最大公约数z的程序,即z=gcd(x,y)。Function gcd(x1,x2:integer);var y1,y2,z : Integer;Beginy1:=x1;y2:=x1;while y1y2 do if y1y2 then y1:=y1-y2 else y2:=y2-y1 end; z:=y1; write(z); End.START(x1,x2)-(y1,y2)y1y2y1y2y1:
展开阅读全文