C# 4.0: полное руководство | страница 65



>

>    bool b1, b2;


>    i = 10;

>    j = 11;

>    if(i < j) Console.WriteLine("i < j");

>    if(i <= j) Console.WriteLine("i <= j");

>    if (i != j) Console.WriteLine("i != j");

>    if(i == j) Console.WriteLine("Нельзя выполнить");

>    if(i >= j) Console.WriteLine("Нельзя выполнить");

>    if(i > j) Console.WriteLine("Нельзя выполнить");

>    b1 = true;

>    b2 = false;

>    if(b1 & b2) Console.WriteLine("Нельзя выполнить");

>    if(!(b1 & b2)) Console.WriteLine("!(b1 & b2) — true");

>    if(b1 | b2) Console.WriteLine("bl I b2 - true");

>    if(b1 >^ b2) Console.WriteLine("bl >^ b2 — true");

>  }

>}


Выполнение этой программы дает следующий результат.


>i < j

>i <= j

>i != j

>!(b1 & b2) — true 

>b1 | b2 — true

>b1 >A b2 - true


Логические операторы в C# выполняют наиболее распространенные логические операции. Тем не менее существует ряд операций, выполняемых по правилам формальной логики. Эти логические операции могут быть построены с помощью логических операторов, поддерживаемых в С#. Следовательно, в С# предусмотрен такой набор логических операторов, которого достаточно для построения практически любой логической операции, в том числе импликации. Импликация — это двоичная операция, результатом которой является ложное значение только в том случае, если левый ее операнд имеет истинное значение, а правый — ложное. (Операция импликации отражает следующий принцип: истина не может подразумевать ложь.) Ниже приведена таблица истинности для операции импликации.


>p       >q       >Результат импликации p и q


>true    >true    >true

>true    >false   >false

>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) = 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