从键盘输入两个命题变元P和Q的真值求它们的合取析取蕴含和等价的真值.docx
《从键盘输入两个命题变元P和Q的真值求它们的合取析取蕴含和等价的真值.docx》由会员分享,可在线阅读,更多相关《从键盘输入两个命题变元P和Q的真值求它们的合取析取蕴含和等价的真值.docx(9页珍藏版)》请在冰豆网上搜索。
从键盘输入两个命题变元P和Q的真值求它们的合取析取蕴含和等价的真值
长治学院
《离散数学》实验报告
专业:
计算机科学与技术
班级:
计科1202班
学号:
********
******
组别:
1
*******
2013.11.30~2013.12.21
一、实验目的··································3
二、算法思想··································3
三、流程图····································4
四、实验结果(截图)···························5
五、程序代码··································7
六、总结·····································10
一、实验目的
本实验课程是信息专业学生的一门专业基础课程,通过实验,帮助学生更好地掌握计算机科学技术常用的离散数学中的概念、性质和运算;通过实验提高学生编写实验报告、总结实验结果的能力;使学生具备程序设计的思想,能够独立完成简单的算法设计和分析。
熟悉掌握合取、析取、蕴涵和等价,进一步能用它们来解决实际问题。
二、算法思想
1.从键盘输入两个命题变元P和Q的真值,求它们的合取、析取、蕴含和等价的真值。
(1)合取:
二元命题联结词。
将两个命题P、Q联结起来,构成一个新的命题P∧Q,读作P、Q的合取,也可读作P与Q。
这个新命题的真值与构成它的命题P、Q的真值间的关系为只有当两个命题变项P=T,Q=T时方可P∧Q=T,而P、Q只要有一为F则P∧Q=F。
这样看来,P∧Q可用来表示日常用语P与Q,或P并且Q。
(2)析取:
二元命题联结词。
将两个命题P、Q联结起来,构成一个新的命题P∨Q,读作P、Q的析取,也可读作P或Q。
这个新命题的真值与构成它的命题P、Q的真值间的关系为只有当两个命题变项P=F,Q=F时方可P∨Q=F,而P、Q只要有一为T则P∨Q=T。
这样看来,P∨Q可用来表示日常用语P或者Q。
(3)蕴含:
二元命题联结词。
将两个命题P、Q联结起来,构成一个新的命题P→Q,读作P条件Q,也可读作如果P,那么Q。
这个新命题的真值与构成它的命题P、Q的真值间的关系为只有当两个命题变项P=T,Q=F时方可P→Q=F,其余均为T。
(4)等价:
二元命题联结词。
将两个命题P、Q联结起来,构成一个新的命题P←→Q,读作P双条件于Q。
这个新命题的真值与构成它的命题P、Q的真值间的关系为当两个命题变项P=T,Q=T时方可P←→Q=T,其余均为F
三、流程图:
求合取、析取、蕴含件和等价的真值流程图
四、实验结果(截图)
进入界面
正确运算结果
错误控制和输入正确后
退出
五、程序代码
#include
inta,b;
charc;
voidmenu();
voidshuru();
voidyunsuan();
intmain()
{
menu();
yunsuan();
return0;
}
voidshuru()
{
printf("请输入P的值(0或1),以回车结束:
");
scanf("%d",&a);
printf("请输入Q的值(0或1),以回车结束:
");
scanf("%d",&b);
}
voidmenu()
{
printf("************************************************\n");
printf("****\n");
printf("**欢迎来到逻辑运算软件**\n");
printf("****\n");
printf("************************************************\n");
printf("\n");
}
voidyunsuan()
{
shuru();
while((a!
=1||a!
=0)&&(b!
=1||b!
=0))
{
if((a==1||a==0)&&(b==1||b==0))
break;
printf("输入错误,重新输入\n");
shuru();
}
if(a==0&&b==0)
{
printf("合取:
\n");
printf("P∧Q=0\n");
printf("析取:
\n");
printf("P∨Q=0\n");
printf("蕴含:
\n");
printf("P->Q=1\n");
printf("等价:
\n");
printf("P<->Q=1\n");
}
if(a==0&&b==1)
{printf("合取:
\n");
printf("P∧Q=0\n");
printf("析取:
\n");
printf("P∨Q=1\n");
printf("蕴含:
\n");
printf("P->Q=1\n");
printf("等价:
\n");
printf("P<->Q=0\n");
}
if(a==1&&b==0)
{
printf("合取:
\n");
printf("P∧Q=0\n");
printf("析取:
\n");
printf("P∨Q=1\n");
printf("蕴含:
\n");
printf("P->Q=0\n");
printf("等价:
\n");
printf("P<->Q=0\n");
}
if(a==1&&b==1)
{
printf("合取:
\n");
printf("P∧Q=1\n");
printf("析取:
\n");
printf("P∨Q=1\n");
printf("蕴含:
\n");
printf("P->Q=1\n");
printf("等价:
\n");
printf("P<->Q=1\n");
}
printf("是否继续运算?
(y/n)\n");
scanf("%c",&c);
if(c=='y')
yunsuan();
else
return;
}
六、总结
用连词∧把几个公式连接起来而构成的公式叫做合取,而此合取式的每个组成部分叫做合取项。
一些合适公式所构成的任一合取也是一个合取公式。
形式为“p并且q”的复合命题,其中p和q都是命题并且叫做合取支。
在命题演算中,合取式被符号化为“p•q”,“pΛq”或者“p&q”。
若把它当做真值函项,“p并且q”为真当且仅当p和q中每一个都真;如果有一个合取支为假,或两个合取支都假,则该合取式为假。
我们可以从前提p和前提q推出结论“p并且q”,这叫做“合取规则”或“合取引入”。
我们也可以从前提“p并且q”推出结论p或者推出结论q,这叫做“合取消除”。
合取式还可以把多于两个的陈述组合在一起,如果能够断定所有这些陈述的话。
用连词∨把几个公式连接起来所构成的公式叫做析取,而此析取式的每一组成部分叫做析取项。
由一些合适公式所构成的任一析取也是一个合适公式。
在逻辑中,蕴涵(imply)是用在更弱的定义下。
说复合命题A=>B为真可简单地断言:
若A为真,那么B也为真。
换句话说,A=>B只是说不会同时有A真与B假,而不是说在通常意义下的A“引起”B。
特别的,若A为假,那么对任何B,A=>B均为真。
该命题容易使人误解,因为不存在任何途径使得命题A可能对命题B产生任何结果。
对于两个命题A,B,如果A⇒B且B⇒A,则称命题A,B等价.记作A⇔B.若关系R在集合A中是自反、对称和传递的,则称R为A上的等价关系。
所谓关系R就是笛卡尔积 A×A中的一个子集。
通过这次实验,我学到了很多知识,离散数学、数据结构等。
经过一个学期的学习,我对离散数学这门课程有了很大的了解。
这次的实验让我对自己的专业也有了更进一步的了解,也使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的。
只有把所学的理论知识与实践相结合起来,从理论中得出结论,从实践中验证理论,从而提高自己的实际动手和独立思考的能力才是成功之道。
指导教师评语:
指导教师签名:
年月日
成绩评定
项目
权重
成绩
1、设计过程中出勤、学习态度等方面
0.1
2、设计技术水平
0.4
3、编程风格
0.2
4、设计报告书写及图纸规范程度
0.3
总成绩