导入
编码德摩根定律
学习在 PHP 和 Java 语言中编写德摩根定律的代码。
德摩根定律简介
在本课程中,我们将学习基于布尔代数和逻辑表达式的德摩根定律。
奥古斯都·德摩根是与乔治·布尔同时代的数学家。尽管这些定律并非由他命名,但因其提出而被归功于他。
德摩根定律基于布尔代数,在每种编程语言中都被广泛使用且同样有效。
该规则指出,对于两个布尔值 a 和 b(true 或 false),我们可以按如下方式重写表达式:
1not (a and b) 等价于 (not a) or (not b) 2not (a or b) 等价于 (not a) and (not b)
下面我们用 PHP 和 Java 实现德摩根定律。
在 PHP 中实现德摩根定律的第一条
我们来在 PHP 中应用这条定律。先看代码:
1//DeMorganOne.php 2<?php 3// not (a and b) 等价于 (not a) or (not b) 4 5class DeMorganOne{ 6 public $numOne; 7 public $numTwo; 8 9 public function notAandB($paramOne, $paramTwo) { 10 $this->numOne = $paramOne; 11 $this->numTwo = $paramTwo; 12 $additionOfTwoNumbers = $this->numOne + $this->numTwo; 13 14 // not(paramOne and paramTwo) 15 if(!($this->numOne >= 10 && $this->numTwo <= 15)){ 16 echo "两数之和: $additionOfTwoNumbers"; 17 } else { 18 echo "第一个数大于等于10,且第二个数小于等于15。"; 19 } 20 } 21 22 public function notAORnotB($paramOne, $paramTwo) { 23 $this->numOne = $paramOne; 24 $this->numTwo = $paramTwo; 25 $additionOfTwoNumbers = $this->numOne + $this->numTwo; 26 27 // (not paramOne) or (not paramTwo) 28 if(!($this->numOne >= 10) || !($this->numTwo <= 15)){ 29 echo "两数之和: $additionOfTwoNumbers"; 30 } else { 31 echo "第一个数大于等于10,且第二个数小于等于15。"; 32 } 33 } 34} 35 36$firstCase = new DeMorganOne(); 37$secondCase = new DeMorganOne(); 38$firstCase->notAandB(11,14); 39echo "\n"; 40$firstCase->notAandB(1,140); 41echo "\n"; 42$secondCase->notAORnotB(11,14); 43echo "\n"; 44$secondCase->notAORnotB(1,140);
我们通过将相同值传递给两个类变量和方法成功验证了第一条定律,并得到了一致的结果:
1//DeMorganOne.php 2第一个数大于等于10,且第二个数小于等于15。 3两数之和: 141 4第一个数大于等于10,且第二个数小于等于15。 5两数之和: 141
现在我们可以尝试不同的数值来观察这条定律的工作原理。无论输入什么值,只要在两个方法中保持一致,结果就会相同。
注意:在上述代码中,
$用于声明变量,echo类似于
在 PHP 中实现德摩根定律的第二条
接下来,我们编写德摩根第二条定律的代码。其余部分与第一条定律相同,仅逻辑表达式不同。
1//DeMorganTwo.php 2<?php 3// not(a or b) 等价于 (not a) and (not b) 4 5class DeMorganOne{ 6 public $numOne; 7 public $numTwo; 8 9 public function notAORB($paramOne, $paramTwo) { 10 $this->numOne = $paramOne; 11 $this->numTwo = $paramTwo; 12 $additionOfTwoNumbers = $this->numOne + $this->numTwo; 13 14 // not(paramOne OR paramTwo) 15 if(!($this->numOne >= 10 || $this->numTwo <= 15)){ 16 echo "两数之和: $additionOfTwoNumbers"; 17 } else { 18 echo "第一个数大于等于10,或第二个数小于等于15。"; 19 } 20 } 21 22 public function notAandnotB($paramOne, $paramTwo) { 23 $this->numOne = $paramOne; 24 $this->numTwo = $paramTwo; 25 $additionOfTwoNumbers = $this->numOne + $this->numTwo; 26 27 // (not paramOne) AND (not paramTwo) 28 if(!($this->numOne >= 10) && !($this->numTwo <= 15)){ 29 echo "两数之和: $additionOfTwoNumbers"; 30 } else { 31 echo "第一个数大于等于10,或第二个数小于等于15。"; 32 } 33 } 34} 35 36$firstCase = new DeMorganOne(); 37$secondCase = new DeMorganOne(); 38 39$firstCase->notAORB(11,14); 40echo "\n"; 41$firstCase->notAORB(1,140); 42echo "\n"; 43$secondCase->notAandnotB(11,14); 44echo "\n"; 45$secondCase->notAandnotB(1,140);
我们通过将相同值传递给类变量和方法成功验证了第二条定律。观察输出,发现两种不同方式给出了相同的结论:
1//DeMorganTwo.php 2第一个数大于等于10,或第二个数小于等于15。 3两数之和: 141 4第一个数大于等于10,或第二个数小于等于15。 5两数之和: 141
在上述 PHP 代码中:
notAORB()和notAandnotB()是演示德摩根第二条定律的两个函数。\n用于换行。if语句中的数字10和15仅为示例,可随意更改并尝试不同数值。
在 Java 中演示德摩根定律
我们可以在 Java 中应用相同的逻辑来验证这些定律是否成立。以下是演示德摩根第一条定律的 Java 代码:
我们运行上述代码后得到以下输出:
- 输出 1:
1输入一个正数: 211 3输入另一个正数: 414 5第一个数大于等于10,且第二个数小于等于15。 6第一个数大于等于10,且第二个数小于等于15。 - 输出 2:
1输入一个正数: 21 3输入另一个正数: 4140 5两数之和为: 141 6两数之和为: 141
以下是演示德摩根第二条定律的 Java 代码:
我们运行上述代码后得到以下输出:
- 输出 1:
1输入一个正数: 211 3输入另一个正数: 414 5第一个数大于等于10,或第二个数小于等于15。 6第一个数大于等于10,或第二个数小于等于15。 - 输出 2:
1输入一个正数: 21 3输入另一个正数: 4140 5两数之和为: 141 6两数之和为: 141
在 Java 代码中,我们已将代码与输出结果放在一起展示。