1. Оператор if else
От программ было бы мало толку, если бы они делали одно и то же, независимо от того, как меняются внешние обстоятельства. Программе нужно уметь подстраиваться под разные ситуации и делать одни действия в одних случаях, другие — в других.
В C# это реализовано с помощью условного оператора — специального ключевого слова, которое позволяет выполнять разные блоки команд в зависимости от правдивости условия.
Условный оператор состоит из трех частей: условия, команды 1 и команды 2. Если условие верно (истинно), выполняется команда 1, иначе выполняется команда 2. Команды никогда не выполняются одновременно. Общий вид этого оператора таков:
if (условие)
команда1;
else
команда2;
if-else
if переводится как «если», а else как «иначе». Человеческим языком это можно записать так:
Если условие истинно, то
выполнить команда1;
иначе
выполнить команда2;
if-else человеческим языком
Примеры:
//На экран будет выведена надпись: Вы еще ребенок
int age = 17;
if (age < 18)
Console.WriteLine("Вы еще ребенок");
else
Console.WriteLine("Вы уже взрослый");
//На экран будет выведена надпись: Тепло
int temperature = 5;
if (temperature < 0)
Console.WriteLine("На улице мороз");
else
Console.WriteLine("Тепло");
//На экран будет выведена надпись: Можно сдавать на права
int age = 18;
if (age == 18)
Console.WriteLine("Можно сдавать на права");
else
Console.WriteLine("Можно копить на машину");
2. Блок команд
Если при выполнении (или невыполнении) условия вы хотите, чтобы ваша программа исполнила несколько команд, их можно объединить в блок команд.
Чтобы объединить команды в блок, нужно «завернуть» их в фигурные скобки. Вот как это выглядит в общем случае:
{
команда1;
команда2;
команда3;
}
Команд в блоке может быть сколько угодно. И даже ноль.
Примеры сочетания оператора if-else и блока команд:
//На экран будет выведена надпись: Ты еще ребенок. Не спорь со взрослыми
int age = 17;
if (age < 18)
{
Console.WriteLine("Ты еще ребенок");
Console.WriteLine("Не спорь со взрослыми");
}
else
{
Console.WriteLine("Вы уже взрослый");
Console.WriteLine("Ну и молодежь пошла");
}
//На экран будет выведена надпись: Тепло
int temperature = 5;
if (temperature < 0)
{
Console.WriteLine("На улице мороз");
Console.WriteLine("Шапку надень");
}
else
Console.WriteLine("Тепло");
//Будет выполнен пустой блок команд. На экран ничего не выведется.
int age = 21;
if (age == 18)
Console.WriteLine("Явитесь в военкомат");
else
{
}
3. Сокращенный синтаксис оператора if
Если код в блоке else отсутствует, то его можно опустить. Тогда оператор if примет вид:
if (условие)
команда1;
if
Пример:
int age = 19;
if (age >= 18)
{
Console.WriteLine("Вы совершеннолетний!");
}
Как это работает?
Если условие истинно, то выполняется блок кода. Если ложно, то ничего не происходит — программа идет дальше.
Блок else в программе есть, но он пустой (между фигурными скобками нет никаких команд). Его можно просто убрать: в программе от этого ничего не поменяется.
4. Комбинирование условий: else if
Иногда нужно проверить не просто "да/нет", а выбрать из нескольких вариантов. Тут на помощь приходит связка else if:
if (условие1)
{
// Выполняется, если условие1 истинно
}
else if (условие2)
{
// Выполняется, если условие2 истинно, а условие1 — ложно
}
else
{
// Выполняется, если ни одно из условий выше не подошло
}
Пример:
int hour = 13;
if (hour < 12)
{
Console.WriteLine("Доброе утро!");
}
else if (hour < 18)
{
Console.WriteLine("Добрый день!");
}
else
{
Console.WriteLine("Добрый вечер!");
}
Что здесь происходит?
- Если время до 12 — утро.
- Если от 12 до 18 — день.
- Если больше — вечер.
- Программа выбирает только ОДИН из вариантов! Как только подходит условие — остальные даже не проверяются.
5. Схематическая иллюстрация: блок-схема ветвления
Вот как это выглядит в виде блок-схемы:
А если несколько условий:
Это очень напоминает развилки в настольных ролевых играх: идёшь налево — одно, направо — другое, прямо — еще что-то!
6. Какие условия можно проверять?
Внутри круглых скобок после if должно быть ЛОГИЧЕСКОЕ выражение — результат которого true или false.
Основные операторы сравнения:
| Оператор | Значение | Пример |
|---|---|---|
| == | Равно | x == 5 |
| != | Не равно | x != 10 |
| > | Больше | x > 0 |
| < | Меньше | age < 18 |
| >= | Больше или равно | score >= 100 |
| <= | Меньше или равно | count <= 50 |
Примеры условий:
if (number == 10)
if (age != 18)
if (temperature > 36)
if (balance <= 0)
Заметьте: = (один знак) — это присвоение. == (два знака) — сравнение. Это одна из самых популярных ошибок среди новичков! Если вы нечаянно напишете:
if (x = 5) // ОШИБКА!
— компилятор вас отругает, и очень правильно сделает.
7. Работа со строками в условиях
Можно сравнивать не только числа, но и строки:
string password = Console.ReadLine();
if (password == "qwerty")
{
Console.WriteLine("Вы вошли!");
}
Внимание: сравнение строк с помощью == в C# работает корректно для обычных случаев, поскольку сравнивает содержимое строк (а не только ссылки на объекты). Подробнее о тонкостях сравнения строк мы еще поговорим ближе к строковым методам и особенностям локализации.
8. Особенности и нюансы:
Фигурные скобки: нужны или нет?
Если после if или else только одна команда, фигурные скобки можно опустить:
if (age > 18)
Console.WriteLine("Вам больше 18!");
// Но безопаснее ВСЕГДА их писать:
if (age > 18)
{
Console.WriteLine("Вам больше 18!");
}
Совет: пишите всегда со скобками. Это защитит от кучи ошибок, особенно при расширении кода.
Логические ошибки: внимательнее с условиями!
Если напишете так:
if (age > 18)
Console.WriteLine("Вам больше 18!");
Console.WriteLine("Добро пожаловать!");
То компилятор будет читать этот код так:
if (age > 18)
{
Console.WriteLine("Вам больше 18!");
}
Console.WriteLine("Добро пожаловать!");
Вторая строка всегда будет выполняться — скобки нужны, чтобы обе строки были внутри "ветки".
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ