if (i==0)    p    =    true;

if (i==l)    p    =    false;

if (j==0)    q    =    true;

if(j==l) q = false;

Console.WriteLine('p равно ' + p + ', q равно ' + q);

if ( !p I q)

Console.WriteLine('Результат импликации ' + p +

' и ' + q + ' равен ' + true);

Console.WriteLine ();

}

}

}

}

Результат выполнения этой программы выглядит так.

р равно True, q равно True

Результат импликации True и True равен True р равно True, q равно False р равно False, q равно False

Результат импликации False и True равен True р равно False, q равно False

Результат импликации False и False равен True

Укороченные логические операторы

В C# предусмотрены также специальные, укороченные, варианты логических операторов И и ИЛИ, предназначенные для получения более эффективного кода. Поясним это на следующих примерах логических операций. Если первый операнд логической операции И имеет ложное значение (false), то ее результат будет иметь ложное значение независимо от значения второго операнда. Если же первый операнд логической операции ИЛИ имеет истинное значение (true), то ее результат будет иметь истинное значение независимо от значения второго операнда. Благодаря тому что значение второго операнда в этих операциях вычислять не нужно, экономится время и повышается эффективность кода.

Укороченная логическая операция И выполняется с помощью оператора &&, а укороченная логическая операция ИЛИ — с помощью оператора | |. Этим укороченным логическим операторам соответствуют обычные логические операторы & и |. Единственное отличие укороченного логического оператора от обычного заключается в том, что второй его операнд вычисляется только по мере необходимости. -

В приведенном ниже примере программы демонстрируется применение укороченного логического оператора И. В этой программе с помощью операции деления по модулю определяется следующее: делится ли значение переменной 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);

}

}

Для исключения ошибки из-за деления на нуль в операторе i f сначала проверяется условие: равно ли нулю значение переменной d. Если оно равно нулю, то на этом выполнение укороченного логического оператора И завершается, а последующая операция деления по модулю не выполняется. Так, при первой проверке значение переменной d оказывается равным 2, поэтому выполняется операция деления по модулю. А при второй проверке это значение оказывается равным нулю, следовательно, операция деления по модулю пропускается, чтобы исключить деление на нуль. И наконец, выполняется обычный логический оператор И, когда вычисляются оба операнда. Если при этом происходит деление на

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату