Логические операции и условные операторы C#
При разработке программ часто возникает необходимость сделать своеобразную развилку. То есть в зависимости от выполнения или не выполнения какого-либо условия дальнейшие операции, выполняемые приложением могут отличаться. В простейшем случае достаточно проговорить про себя: «Если, то, иначе». В основном, логические операции опираются на тип данных bool, который принимает значения true (истина) или false (ложь).
Условный оператор if
Для проверки простого условия может использоваться оператор if. В общем случае он имеет следующий вид:
if(<Условие>)
{
<Действие 1>
}
else
{
<Действие 2>
}
Если условие истинно, то выполняется действие 1, если же условие было ложным — выполняется действие 2. Следует заметить, что ветка else не является обязательной.В операторе if могут быть использованы следующие операторы сравнения:
- > — больше
- < — меньше
- >= — больше или равно
- <= — меньше или равно
- == — равно
- != — не равно
Предположим, нам необходимо вычислить значение некоторой функции. Пусть это будет y(x) = 100 / (x — 12). (Функция взята рандомно) Как вы видите, при попытке вычисления функции при x = 12, мы получим ошибку: «Деление на ноль». Следовательно, необходимо обеспечить обработку некорректного вычисления. Для этого, позволим ввести пользователю переменную х, после постараемся вычислить у(x). Код будет выглядеть следующим образом:
double x = Convert.ToDouble(Console.ReadLine());
if(x == 12)
{
Console.WriteLine("Эй, гражданина...");
}
else
{
Console.WriteLine("y = " + 100 / (x - 12));
}
Также возможно использование условного оператора if без указания явного условия. Кажется абракадаброй, но тем не менее, true (истина) — это любое значение отличное от нуля, false — ноль. Можем использовать это свойство. Вернемся к задаче вычисления значения некоторой функции. y(x) = 1 / x. В данном случае, если x равен нулю — мы снова получаем ошибку. В итоге имеем следующий код:
int x = Convert.ToInt32(Console.ReadLine());
if(x)
{
Console.WriteLine("Эй, гражданина...");
}
else
{
Console.WriteLine("y = " + 100 / x);
}
Также любое логическое выражение можно инвертировать, то есть из истины сделать ложь, а из ложного значения истинное. Например !(1 > 10) — истина, а !(1 < 10) — ложь.
Условный оператор switch
Если мы имеем дело с сложным условием, когда в зависимости от значения переменной возможно больше, чем две ситуации, следует использовать оператор switch (переключатель). Выглядит он так:
switch(i)
{
case <Значение 1>:
<Действия 1>
break;
...
case <Значение n>:
<Действия n>
break;
default:
<Действия по умолчанию>
break;
}
Как вы можете видеть, в зависимости от значения i, выполняются те или иные действия. Например, выбираем город для житья:
switch(city)
{
case "Москва":
Console.WriteLine("А денег хватит?");
break;
case "Санкт-Петербург":
Console.WriteLine("Точно не хватит!");
break;
case "Сан-Диего":
Console.WriteLine("Мечтать не вредно...");
break;
default:
Console.WriteLine("А нам и дома хорошо.");
break;
}
Удобство использования switch-case очевидно при необходимости сравнения переменной с несколькими возможными значениями.
Сокращенная проверка
Своеобразная вишенка на пироге: чтобы использовать if совсем не обязательно писать всю громоздкую конструкцию. Сокращенный вариант выглядит следующим образом:
<Условие> ? <Действие 1> : <Действие 2>
Например условие из первого примера примет вид:
Console.WriteLine(x == 12 ? "Эй, гражданина..." : "y = " + 100 / (x - 12));
Вот и основные логические операции языка c#. Удачных экспериментов, коллеги.
Источник: CODE BLOG