false
false
true
false
true
true
Операция импликации может быть построена на основе комбинации логических операторов ! и |, как в приведенной ниже строке кода.
! р I q
В следующем примере программы демонстрируется подобная реализация операции импликации.
// Построение операции импликации в С#.
using System;
class Implication {
static void Main() {
bool p=false, q=false;
int i, j;
for(i =0; i < 2; i++) {
for(j = 0; j < 2; j++) {
if(i==0) p = true;
if(i==1) p = false;
if(j==0) q = true;
if(j==1) q = false;
Console.WriteLine("p равно " + p + ", q равно " + q);
if ( !p | q)
Console.WriteLine("Результат импликации " + p +
" и " + q + " равен " + true);
Console.WriteLine();
}
}
}
}
Результат выполнения этой программы выглядит так.
p равно True, q равно True
Результат импликации True и True равен True
p равно True, q равно False
p равно False, q равно True
Результат импликации False и True равен True
p равно False, q равно False
Результат импликации False и False равен True
В C# предусмотрены также специальные,
Укороченная логическая операция И выполняется с помощью оператора &&, а укороченная логическая операция ИЛИ — с помощью оператора | |. Этим укороченным логическим операторам соответствуют обычные логические операторы & и |. Единственное отличие укороченного логического оператора от обычного заключается в том, что второй его операнд вычисляется только по мере необходимости. -
В приведенном ниже примере программы демонстрируется применение укороченного логического оператора И. В этой программе с помощью операции деления по модулю определяется следующее: делится ли значение переменной d на значение переменной п нацело. Если остаток от деления n/d равен нулю, то п делится на d нацело.
Но поскольку данная операция подразумевает деление, то для проверки условия деления на нуль служит укороченный логический оператор И.
// Продемонстрировать применение укороченных логических операторов.
using System;
class SCops {
static void Main() {
int n, d;
n = 10;
d = 2;
if(d != 0 && (n % d) == 0)
Console.WriteLine(n + " делится нацело на " + d);
d = 0; // задать нулевое значение переменной d
// d равно нулю, поэтому второй операнд не вычисляется
if(d != 0 && (n % d) == 0)
Console.WriteLine(n + " делится нацело на " + d);
// Если теперь попытаться сделать то же самое без укороченного
// логического оператора, то возникнет ошибка из-за деления на нуль,
if(d != 0 & (n % d) == 0)
Console.WriteLine(n + " делится нацело на " + d);
}
}