Logo
Section 1 / 10

编码德摩根定律

学习在 PHP 和 Java 语言中编写德摩根定律的代码。

导入

编码德摩根定律

学习在 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

现在我们可以尝试不同的数值来观察这条定律的工作原理。无论输入什么值,只要在两个方法中保持一致,结果就会相同。

A∩B‾=A‾∪B‾\overline{A \cap B} = \overline{A} \cup \overline{B}

注意:在上述代码中,$ 用于声明变量,echo 类似于 print 语句,用于将内容输出到屏幕上。

在 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 代码中,我们已将代码与输出结果放在一起展示。

编程语言与布尔代数

逻辑表达式与短路求值