Логические операторы в Си-шарп

Логические операторы в Си-шарп служат для работы с логическим типом данных (bool), который может принимать только два значения – true или false. Их можно разделить на две категории: простые логические операторы и операторы сравнения.

В Си-шарп есть следующие логические операторы:
! – оператор «НЕ» является унарным и возвращает противоположное значение операнда.

static void Main(string[] args)
{
bool a, b = true, c = false;
a = !b; // a = false
a = !c; // a = true
}

|| - оператор «ИЛИ» является бинарным и возвращает false только тогда, когда оба операнда равны false, в остальных случаях результат будет true;

static void Main(string[] args)
{
bool a, bTrue = true, bFalse = false;
a = bFalse || bFalse; // a = false
a = bFalse || bTrue; // a = true
a = bTrue || bFalse; // a = true
a = bTrue || bTrue; // a = true
}

&& - оператор «И» является бинарным и возвращает true только тогда, когда оба операнда равны true, в остальных случаях результат будет false;

static void Main(string[] args)
{
bool a, bTrue = true, bFalse = false;
a = bFalse && bFalse; // a = false
a = bFalse && bTrue; // a = false
a = bTrue && bFalse; // a = false
a = bTrue && bTrue; // a = true
}

К операторам сравнения относятся:

Оператор Название
> больше
< меньше
>= больше или равно
<= меньше или равно
== равно
!= неравно

static void Main(string[] args)
{
bool a;
int b = 2, c = 3, d = 2;
a = b > c; // a = false
a = b < c; // a = true
a = b >= c; // a = false
a = b >= d; // a = true
a = b == c; // a = false
a = b == d; // a = true
a = b != c; // a = true
}

Логические операторы в первую очередь используются в условных операторах,

Условные операторы в Си-шарп. Тернарный оператор

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

В Си-шарп есть три условных оператора: «if-else», «switch» и «?:» - тернарный оператор.

Оператор «if-else»

Данный оператор имеет следующую структуру:

if ([условное выражение])
{
Блок кода, который нужно выполнить при удовлетворении условия, [условное выражение] = true (истина)
}
else
{
Блок кода, который нужно выполнить при неудовлетворении условия, [условное выражение] = false (ложь)
}

Часть else не является обязательной и может отсутствовать.

Если после if или else необходимо выполнить лишь одну команду, фигурные скобки можно опускать:

if ([условное выражение])
[команда1] // команда1 выполнится лишь если условное выражение истинно
[команда2]// команда2 выполнится в любом случае
Пример. Проверить вводимое число на чётность:

static void Main(string[] args)
{
int a;
Console.WriteLine("Введите число:");
a = Convert.ToInt32(Console.ReadLine()); // вводим данные с клавиатуры*
if (a % 2 == 0) //проверяем число на чётность путем нахождения остатка от деления числа на 2
{
Console.WriteLine("Число " + a + " - чётное");
}
else
{
Console.WriteLine("Число " + a + " - нечётное");
}
Console.ReadKey();
}

Функция Console.ReadLine() позволяет ввести данные с клавиатуры. Данные вводятся как строка, а так как нужно число, мы преобразовываем ее в числовой тип. Для преобразования мы используем функцию Convert.ToInt32().

Оператор if может иметь несколько условий:

if ([логическое выражение1])
{блок1}
else if ([логическое выражение2])
{блок2}
else
{блок3}

Пример программы, которая определяет, какое из двух введенных чисел больше:

static void Main(string[] args)
{
int a, b;
Console.WriteLine("Введите первое число:");
a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите второе число:");
b = Convert.ToInt32(Console.ReadLine());
if (a > b)
Console.WriteLine("Первое число больше второго");
else if (a < b)
Console.WriteLine("Второе число больше первого");
else
Console.WriteLine("Числа равны");
Console.ReadKey();
}

Для сложных логических выражений используются логические операторы «!», «||» и «&&».
Пример программы которая дает совет, что делать, в зависимости от температуры на дворе:

static void Main(string[] args)
{
int t;
Console.WriteLine("Введите температуру во дворе");
t = Convert.ToInt32(Console.ReadLine());
if (t < -20 || t > 40) //если температура меньше -20 или больше 40
Console.WriteLine("Вам лучше посидеть дома!");
else
Console.WriteLine("Можете идти гулять");
Console.ReadKey();
}

Тернарный оператор «?:»

Этот оператор используется для сокращения объема кода. Им можно заменять простые по сложности операторы if-else. Тернарный оператор имеет такую структуру:

логическое выражение ? выражение1 : выражение2

Сначала вычисляется логическое выражение. Если оно истинно, то вычисляется выражение1, в противном случае - вычисляется выражение2.

Пример использования тернарного оператора «?:» в той же программе для проверки числа на чётность:

static void Main(string[] args)
{
int a;
Console.WriteLine("Введите число:");
a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine( a % 2 == 0 ? "Число чётное" : "Число нечётное" );
Console.ReadKey();
}

«?:» также можно использовать для присваивания значений. Пример программы, которая находит большее число из двух вводимых:

static void Main(string[] args)
{
int a, b, max;
Console.WriteLine("Введите первое число:");
a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите второе число:");
b = Convert.ToInt32(Console.ReadLine());
max = a > b ? a : b;
}

Оператор switch

В некоторых случаях удобно использовать оператор выбора «switch» вместо «if-else». Он имеет следующую структуру:

switch (выражение)
{
case значение1:
блок1;
break;
case значение2:
блок2;
break;
...
case значениеN:
блокN;
break;
default:
блокN+1;
break;
}

Выражение сравнивается последовательно со значениями. Если выражение равно значению – выполняется соответственный блок кода и при достижении ключевого слова break оператор switch заканчивает работу. Если выражение не будет соответствовать ни одному значению, тогда выполнится блок после default.

Пример. Вывести на экран название дня недели соответственно вводимому порядковому номер дня:

static void Main(string[] args)
{
int a;
Console.WriteLine("Введите порядковый номер дня недели:");
a = Convert.ToInt32(Console.ReadLine());
switch (a)
{
case 1:
Console.WriteLine("Понедельник");
break;
case 2:
Console.WriteLine("Вторник");
break;
case 3:
Console.WriteLine("Среда");
break;
case 4:
Console.WriteLine("Четверг");
break;
case 5:
Console.WriteLine("Пятница");
break;
case 6:
Console.WriteLine("Суббота");
break;
case 7:
Console.WriteLine("Воскресенье");
break;
default :
Console.WriteLine("Ошибка");
break;
}
Console.ReadKey();
}

Наши рекомендации