应用部分程序正确性证明讲稿.ppt





《应用部分程序正确性证明讲稿.ppt》由会员分享,可在线阅读,更多相关《应用部分程序正确性证明讲稿.ppt(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、应用部分程序正确性证明第一页,讲稿共四十二页哦2.数理逻辑的理论和方法在计算机理论中有如下几方 面应用。1)准确的理解程序 2)容易的构造程序 3)证明程序的正确性 4)测试系统的可靠性 5)检测程序中的错误 6)提高程序的运行效率 例如:信息奇偶检测法就是数理逻辑学中完成的。3.编译程序中,语法上的正确及语义上的正确,但不能保证程序的完全正确。主要原因是逻辑 上的错误,而逻辑错误用调试的方法是不能解 决的。第二页,讲稿共四十二页哦 例如:百鸡百钱问题 为代码流程 FOR X=0 到 19 FOR Y=0 到 33 判别 5X+3Y+Z=100 若满足判别条件则打印一组X、Y、Z然后继续循环
2、若不满足判别条件则不打印该组X、Y、Z然后继续 循环第三页,讲稿共四十二页哦 程序如下:程序如下:Main()()Int x,y,z;For(x=0;x=19;x+)For(y=0;y=33;y+)Z=100-x-y;If(5*x)+(3*y)+(*z)=100 Printf(“%d%d%d“,x,y,z););结果为结果为 公公 母母 小小 0 25 75 4 18 78 8 11 81 12 4 84分析程序在语法语义均为正确而分析程序在语法语义均为正确而0、25、75显然不对显然不对分析原因是逻辑错误分析原因是逻辑错误第四页,讲稿共四十二页哦解决此问题方法1 将该语句If(5*x)+(3
3、*y)+(*z)=100移到 For(y=0;y=33;y+)之前解决此问题方法2 在Printf(“%d%d%d“,x,y,z);语句前加 If(x*y*z)=0 语句 若满足判别条件则不打印继 续循环解决此问题方法3 将For(x=0;x=19;x+)语句 x=0改为x=1,x=19改为x=20For(y=0;y=33;y+)语句y=0改为 y=1,y=33改为y=33第五页,讲稿共四十二页哦4.现在也有一些实验程序的验证系统,有许多问题还 没有解决,有待于研究。例如:计算机的自然语言翻译系统等。5.1)程序的正确性是指:给定任何的合法输入程 序最终要停止并要输出结果正确。2)前者称为终止
4、性问题,后者称为程序的部分正 确性问题。我们只讨论程序的正确性(部分)第六页,讲稿共四十二页哦6.我们知道任何一个程序都是对一组数据的加工I/O (入/出)7.定义:设P是一个程序:1)x1xn(记为x)是程序输入数据 2)y1yn (记为y)是程序输出数据 3)BODY是该程序的程序行 则可以表示为:Program P:程序整体的描述(开始)Read(x);数据输入部分 BODY P;程序体(数据加工部分)Write(y);数据输出部分 End P;程序整体的结束第七页,讲稿共四十二页哦8.定义:输入数据必须满足的条件称为程序的输入条 件。即:输入断言(记为INAP(x)9.定义:同理数据必
5、须满足的条件称为程序的输出条 件。即:输出断言 (记为OUAP(X,Y,Z)其中z是程序 的中间数据,中间数据不是最终结果。例:计算1+2+3+100就有最终结果,与中间 结果。(三角数)第八页,讲稿共四十二页哦 根据定义程序可以描述如下:Program p;:程序整体描述 Read(x);:数据输入部分 INAP(x);:程序P的输入断言(非执行语句)BODY P;:程序体 OUTAP(x,y,z):程序P的输出断言 Write():程序结果输出部分(非执行语句)End p :程序P的整体结束第九页,讲稿共四十二页哦 NOTE:在数理逻辑中应当理解断言部分。即:INAP(x);与OUTAP(
6、x,y,z)目的是验证I/0数据是否正确,即用来证明程序的 正确性,为了区别我们用花括号括起来。第十页,讲稿共四十二页哦10.程序的部分正确性证明问题可以描述为:INAP(x);BODY P OUTAP(x,y,z)11.注意:用数理逻辑描述,对于任何x,任何y和任 何z,如果执行BODY P(程序体)前INAP (x)真,且BODY P执行一定终止,则执行 BODY P后OUTAP(x,y,z)真。12.我们把程序的第三行与第五行为验证公式(程序 段 )第十一页,讲稿共四十二页哦13.设P是程序,A与B是两个断言语句,则公式可表示为:APB 其它略 含义为:如果A执行P前A真且P的执行一定终
7、止执行P则 执行P后B真。14.举例:计算两个非负且不同时为零的整数x1和x2的最大公 约数Y的程序 Program GCD 整体程序 Read(x1,X2);读入X1,X2(Z1,Z2):=(X1,X2);赋值Z1,Z2 Write Z10 do Z1不等于零做 If Z2Z1 then Z1=Z2-Z1 else(Z1,Z2):=(Z2,Z1)od 其它 Y:=Z2;Write(y)end GCD 结束第十二页,讲稿共四十二页哦NOTE:(Z1,Z2):=(X1,X2);表示将X1,X2同时赋给Z1,Z2 (Z1,Z2):=(X2,X1);表示交换Z1和 Z2NOTE:X10X20(X10
8、X20)题意要 求 NOTE:程序中y应当是X1与X2的最大公约数NOTE:e1e2表示e1除尽e2NOTE:MA X u a(u)表示使得a(u)成立的一切u 中的最大者根据上述约定有:第十三页,讲稿共四十二页哦Y=MAX u(uX1,uX2)推出:输入输出断言的该程序是:Program GCP;Read (X1,X2)A点 X10X20(X10X20)输入断言 (Z1,Z2):=(X1,X2)B点 While Z10 do Do 其它 C点 Y:=Z2;y=Y=MAX u(uX1uX2)输出断言Write(y)End GCD NOTE:红笔部分为该程序I/O断言 NOTE:程序流程如下:第
9、十四页,讲稿共四十二页哦 A点 A、B之间为第一段 B点 开 始Read(X1,X2)(Z1,Z2):=(X1,X2);第十五页,讲稿共四十二页哦 C点 判别Z10吗 C、C1之间为第二段 C1点 If Z2Z1 then Z2:=Z2 Z1 Else(Z1,Z2):=(Z2,Z1)第十六页,讲稿共四十二页哦 D点 Y:=Z2 D、E之间为第三段 E点 Write(y)结束 该图为最大公约数的流程图第十七页,讲稿共四十二页哦下面分三段证明 分析:1)控制达到A点时 输入断言成立 2)控制达到E点时 输出断言成立 3)问题如下:(更进一步分析)控制达到B点、C点、D点时成立否?(1)当控制由A点
10、达到B点时Z1,Z2最大公约 数也是X1,X2的最大公约数且Z1,Z2也 不同时为零的非负数(根据题义)B点应 有如下断言:Z10Z2 0(Z10 Z20)MAX u(uZ1,uZ2)=MAX u(uX1,uX2)第十八页,讲稿共四十二页哦 (2)C点:1.可由B点到达C点 2.可由C点经过C1点(可循环多次)在循环的过 程中Z1,Z2的值不断变化但控制达到C点时 Z1,Z2的最大公约数一直不变且正好是X1,X2的最大公约数也是Z1,Z2仍然不同时为零 的非负整数C点和B点处的断言为:Z10Z 2 0(Z10 Z20)MAX u(uZ1uZ2)=MAX u(uX1uX2)第十九页,讲稿共四十二
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 应用 部分 程序 正确性 证明 讲稿

限制150内