Логический тип и логические выражения
В программе логической переменной res присваивается значение логического выражения в виде конъюнкции трех отношений. Для заданных значений переменных х, у, z значение результата true с помощью метода Console. WriteLine () выводится как True. К предопределенным (еще точнее — к базовым или простым) типам значений относится тип bool, используемый для представления логических (булевых) значений… Читать ещё >
Логический тип и логические выражения (реферат, курсовая, диплом, контрольная)
К предопределенным (еще точнее — к базовым или простым) типам значений относится тип bool, используемый для представления логических (булевых) значений. Константами-литералами булева типа являются true (истина) и false (ложь).
Переменные типа bool не могут принимать значений, отличных от логических литералов. Им нельзя присваивать значений других типов, например, целочисленных. Логическое значение (типа bool) нельзя преобразовать ни в какое значение другого типа.
Объявление с инициализацией логической переменной:
bool realy = true;
Из логических переменных и констант формируются логические (булевы) выражения. Для этого в языке C# имеются логические операции:
& — конъюнкция (логическое И);
| — дизъюнкция (логическое ИЛИ);
! — логическое отрицание;
л — исключающее ИЛИ.
Семантика этих операций известна из курса математической логики. Кроме того в C# определены две условные (conditional) логические бинарные операции:
&& — условная конъюнкция (условное И);
| | — условная дизъюнкция (условное ИЛИ).
В выражении х&&у значение у не вычисляется, если х имеет значение false. В выражении х | | у значение у не вычисляется, если х равно true.
Кроме данных типа bool в логических выражениях часто используются отношения. Отношение — это два операнда, соединенные (или разделенные) знаком операции отношений:
> — больше;
> = — больше или равно;
< — меньше;
< = — меньше или равно;
= = — сравнение на равенство (равно);
≠ — сравнение на неравенство (не равно);
Отметим, что операции сравнения на равенство (== и ! =) имеют более низкий приоритет, нежели все остальные операции отношений.
Проверку принадлежности числового значения х интервалу (а, Ь), где, а < Ь, можно выполнить с помощью такого логического выражения:
х < b & а < х Последовательность вычислений можно показать с помощью скобок: (х < Ь)&(а < х) Значением выражения будет true, если х принадлежит интервалу (а, Ь). Проверку истинности высказывания «значение х находится вне интервала (а, Ь)» позволяют выполнить логические выражения:
х > b А х b | х b || х < а.
В третьем выражении использована условная дизъюнкция. Остановимся подробнее на особенностях условных логических операций.
Условные версии (| | и &&) бинарных логических операций (& и |) позволяют избежать вычисления значения второго (правого) операнда логического выражения, если значение левого операнда однозначно определяет значение всего выражения. Проверку принадлежности х числовому интервалу (а, Ь) можно записать так:
х < b && а < х Если х < b равно false, то нет необходимости вычислять значение отношения, а < х.
Обратите внимание, что знаки бинарных логических операций те же, что и знаки поразрядных операций конъюнкции (&) и дизъюнкции (|). То же самое относится и к знаку, который для целочисленных операндов обозначает операцию поразрядного исключающего ИЛИ. Как и в (уже упомянутом) случае применения знака + для обозначения операции конкатенации строк, здесь имеет место перегрузка операций. Это еще один пример полиморфизма.
Не лишним будет, в связи с перегрузкой операций, вспомнить, что символом в информатике называют знак с его смыслом. Встретив в выражениях знак &, компилятор анализирует контекст, и если обнаруживается, что справа и слева операнды типа bool, то знак & воспринимается как символ логической операции конъюнкции.
Следующая программа «проверяет» три вещественных переменных х, у, z — могут ли быть их значения длинами сторон треугольника.
// 0402.cs — отношения и логические выражения using System; class Program {.
static void MainQ.
{
double x = 19, у = 31, z = 23.8;
bool res;
res = x.
Console.WriteLine («res = «+ res);
} }
Результат выполнения программы: res = True.
В программе логической переменной res присваивается значение логического выражения в виде конъюнкции трех отношений. Для заданных значений переменных х, у, z значение результата true с помощью метода Console. WriteLine () выводится как True.
Обратите внимание на порядок вычисления использованного в программе логического выражения. С помощью круглых скобок последовательность выполнения операций можно указать явно таким образом:
Необходимости в таком применении скобок нет — в языке C# определены приоритеты (ранги) всех операций (см. табл. 3.1). В соответствии с этими приоритетами, первыми в нашем логическом выражении вычисляются значения (типа double) операндов отношений (т. е. выполняется операция сложения +). Затем последовательно слева направо вычисляются значения (типа bool) отношений, и к этим логическим значениям применяется слева направо операция & (конъюнкция).
Результат выполнения программы не изменится, если при вычислении логического выражения использовать условную конъюнкцию:
res = x.
Однако при получении значения false в любом из отношений, отношения, размещенные правее него, не вычисляются.
Применение условных логических операций особенно удобно в тех случаях, когда проверка истинности одного условия позволяет избежать аварийных ситуаций при вычислении второго условия.