
2.6. Логические операции
До этого момента мы использовали логические выражения, состоящие лишь из простых условий с одной операцией сравнения. Во многих случаях требуется объединить несколько простых условий (логических подвыражений) в одно логическое выражение. Именно для этого и предназначены логические операции.
Язык С# содержит три логических операции, семантически эквивалентных словам "и", "или" и "не" обычного языка.
Следует отметить, что любая фраза может быть частью обычного языка и ее значение интуитивно ясно. Эквивалентами слов "и", "или" и "не" разговорного языка являются логические операции И, ИЛИ и НЕ. Логическое И в С# обозначается как && (два последовательных символа амперсанда), логическое ИЛИ - || (две вертикальных черты), логическое НЕ - ! (восклицательный знак).
Логические операции (&&, ||, !) применимы только к выражениям типа bool и возвращают значение этого же типа. Логическую операцию часто называют булевой.
Краткий обзор этих трех операций приведен в таблице. Следует также отметить, что операции И, ИЛИ и НЕ в научной литературе называют конъюнкцией, дизъюнкцией и отрицанием.
Таблица 2.1.
Логические операции
Логическая операция |
Термин-синоним |
Обозначение |
Число операндов |
И |
Конъюнкция |
&& |
2 (бинарные) |
ИЛИ |
Дизъюнкция |
| | |
2 (бинарные) |
НЕ |
Отрицание |
! |
1 (унарный) |
Далее рассмотрим отдельно каждую операцию.
Операция «И» && представляет собой логическое выражение, которое объединяет в себе два логических подвыражения.
Например, если число больше нуля и меньше 10, то оно находится в пределах от 0 до 10.
Синтаксический блок операции «И»имеет вид.
Большое_логическое_выражение ::=
<Логическое_подвыражение1>&&<Логическое_подвыражение2>
Объединив два возможных значения (true и false) выражения <Логическое_подвыражение1> с двумя возможными значениями <Логическое_подвыражение2>, можно создать таблицу истинности содержащую четыре возможных комбинации (2x2).
Таблица истинности содержит все возможные значения логических выражений и соответствующие им результаты.
Таблица 2.2.
Таблица истинности логической операции «И»
Значение логического подвыражения 1 |
Значение Логического подвыражения 2 |
Значение большого логического выражения |
false |
false |
false |
false |
true |
false |
true |
false |
false |
true |
true |
true |
Следует обратить внимание, что только если оба исходных выражения в равны true, результирующее выражение равно true. В иных случаях оно имеет значение false.
Пример 2.6. Написать программу, которая выводит сообщение «Число в пределах интервала», если введенное с клавиатуры число принадлежит интервалу от 0 до 10. В противном случае вывести сообщение «Число за пределами интервала».
Для решения задачи используем два логических подвыражения, объединенных в большое логическое выражения при помощи логического «И». Первое подвыражение x>0, второе логическое подвыражение x<10. Объединив их при помощи &&, получим большое логическое выражение: x>0 && x<10.
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите число");
int x = Int32.Parse(Console.ReadLine());
if (x > 0 && x < 10)
Console.WriteLine("Число в интервале!");
else
Console.WriteLine("Число за пределами интервала!");
Console.ReadLine();
}
}
Результат работы программы представлен на рис. 2.11-2.12.
Рис.2.11. Результат работы программы из примера 2.6., если число находится в интервале от 1 до 10
Рис.2.12. Результат работы программы из примера 2.6., если число находится вне интервала от 1 до 10
Следующей рассмотрим операцию логического «ИЛИ». Операция логического ИЛИ, обозначаемая двумя вертикальными чертами ||, представляет собой бинарную операцию, синтаксический блок которой имеет вид.
Большое_логическое_выражение :: =
<Логическое_подвыражение 1> ||
<Логическое_подвыражение 2>
Таблица истинности операции логического ИЛИ показывает, что только если оба подвыражения равны false (первая строка), общее выражение равно false, иначе оно равно true. Это совпадает с повседневным значением слова "или". Например, в следующем предложении: «Если сегодня суббота или воскресенье, то сегодня выходной».
Таблица истинности для логической операции «ИЛИ» представлена в таблице 2.3.
Таблица 2.3.
Таблица истинности логическая операция «ИЛИ»
Значение логического подвыражения 1 |
Значение логического подвыражения 2 |
Значение большого логического выражения |
false |
false |
false |
false |
true |
true |
true |
false |
true |
true |
true |
true |
Пример 2.7. С клавиатуры вводится число от 1 до 7 символизирующее дни недели. Если число 6 или 7, то вывести сообщение «Выходной!», в противном случае «Рабочий день!»
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите номер дня недели");
int a = Int16.Parse(Console.ReadLine());
if (a == 6 || a == 7)
Console.WriteLine("Выходной!");
else
Console.WriteLine("Рабочий день!");
Console.ReadLine();
}
}
Результат работы программы представлен на рис. 2.12 – 2.13.
Рис. 2.12. Результат работы программы из примера 2.7. в случае ели введен номер рабочего дня
Рис. 2.13. Результат работы программы из примера 2.7. в случае ели введен номер выходного дня
Последней логической операцией является операция «НЕ». Операция логического НЕ (!) в противоположность бинарным «И» и «ИЛИ» является унарной. Так же, как унарный минус обращает знак числового выражения, операция логического «НЕ» инвертирует истинность логического.
Синтаксический блок операции «НЕ» имеет вид.
Логическое_выражение ::= !<Логическое_подвыражение>
Таблица истинности логической операции «НЕ» представлена в таблице 2.4.
Таблица 2.4.
Таблица истинности логической операции «НЕ»
Значение логическое подвыражение |
Значение !логическое подвыражение |
false |
true |
true |
false |
Логические выглядят более понятными, если в них не используются отрицания. К счастью, в большинстве случаев без операции отрицания можно обойтись, внеся изменения в операнды и выбрав операции сравнения в логическом выражении. В таблице 2.4. представлены логические выражения аналогичные «НЕ», но без отрицания.
Таблица 2.4.
Эквивалентное выражение без логического «НЕ»
Логическое выражение с операцией ! |
Эквивалентное выражение без ! |
!(х == 10) |
(х != 10) |
!(х > 10) |
(х <= 10) |
!(х <= 10) |
(х > 10) |