本实验为南京邮电大学离散数学课程设计,内容聚焦于运用编程实现真值表方法来计算命题逻辑公式的主析取范式与主合取范式。通过编写代码,学生能够加深对这些基本概念的理解,并掌握其实际应用技巧。
实验名称:利用真值表法求取主析取范式以及主合取范式的实现
实验目的:通过编程方式使用真值表方法来计算主析取范式与主合取范式,以加深对相关理论的理解和掌握。
实验类型:验证性实验
学时:4小时
实验环境:Windows操作系统 + VC开发工具
从屏幕输入包含三个或以下变量的公式(其中连接词按照优先级顺序列出)。使用字符数组a记录所输入的合式公式。例如,对于逻辑表达式 ¬P ∧ Q ∨ P → Q ,分别用感叹号(!)表示否定(¬),和(&)表示与(∧),竖线(|)表示或(∨),大于符号(>)表示蕴含(→)。
程序将列出所给公式的真值表。在显示的真值表中,1代表逻辑T(真),0代表F(假)。首先展示所有变量为真的情况,然后依次变为其他组合:
| P | Q |
|---|---|
| 1 | ? |
使用数组b来存储与a中的变量对应的赋值。例如:
- b[0], b[2], b[4] 或 b[6] 可设置为 -1(表示否定)。
- b[1] 和 b[5] 表示P的真或假。
- b[3] 和 b[7] 表示Q的真或假。
从左到右解析公式,并使用 switch a[i] case 语句处理运算符:
- 对于 ¬(否定),执行:b[i+1]=!b[i+1]
- 对于 ∧ (与操作),执行:b[i+1]=b[i-1] && b[i+1]
通过这种方式,程序可以计算出输入公式的主析取范式和主合取范式。