Освоение условных операторов C++: if, if...else и вложенные if...else
C++ if, if...else и вложенные if...else
В этом уроке мы изучим оператор if...else для создания программ принятия решений с помощью примеров.
В программировании мы используем оператор if...else для выполнения одного блока кода при определенных условиях и другого блока — при других.
Например, присвоение оценок (A, B, C) на основе баллов студента.
- если процент выше 90, присвоить оценку A
- если процент выше 75, присвоить оценку B
- если процент выше 65, присвоить оценку C
В C++ существует три формы операторов if...else.
ifоператорif...elseоператорif...else if...elseоператор
Оператор if в C++
Синтаксис оператора if:
if (condition) {
// тело if
}
Оператор if вычисляет condition внутри скобок ( ).
- Если
conditionистинно, выполняется код внутри телаif. - Если
conditionложно, код внутри телаifпропускается.
Примечание: Код внутри { } — это тело оператора if.

Пример 1: Оператор if в C++
// Программа для печати положительного числа, введенного пользователем
// Если пользователь вводит отрицательное число, оно игнорируется
#include <iostream>
using namespace std;
int main() {
int number;
cout << "Enter an integer: ";
cin >> number;
// проверяет, является ли число положительным
if (number > 0) {
cout << "You entered a positive integer: " << number << endl;
}
cout << "This statement is always executed.";
return 0;
}
Результат 1
Enter an integer: 5 You entered a positive number: 5 This statement is always executed.
Когда пользователь вводит 5, условие number > 0 истинно, и выполняется тело if.
Результат 2
Enter a number: -5 This statement is always executed.
Когда пользователь вводит -5, условие number > 0 ложно, и тело if не выполняется.
Оператор if...else в C++
Оператор if может иметь необязательное предложение else. Его синтаксис:
if (condition) {
// блок кода, если условие истинно
} else {
// блок кода, если условие ложно
}
Оператор if..else вычисляет condition в скобках.

Если condition истинно:
- выполняется код внутри тела
if - код внутри тела
elseпропускается
Если condition ложно:
- выполняется код внутри тела
else - код внутри тела
ifпропускается
Пример 2: Оператор if...else в C++
// Программа для проверки, является ли целое число положительным или отрицательным
// Эта программа считает 0 положительным числом
#include <iostream>
using namespace std;
int main() {
int number;
cout << "Enter an integer: ";
cin >> number;
if (number >= 0) {
cout << "You entered a positive integer: " << number << endl;
} else {
cout << "You entered a negative integer: " << number << endl;
}
cout << "This line is always printed.";
return 0;
}
Результат 1
Enter an integer: 4 You entered a positive integer: 4. This line is always printed.
В программе условие number >= 0. Если вводим число больше или равно 0, условие истинно.
Здесь вводим 4. Условие true. Выполняется тело if.
Результат 2
Enter an integer: -4 You entered a negative integer: -4. This line is always printed.
Здесь вводим -4. Условие false. Выполняется тело else.
Оператор if...else if...else в C++
Оператор if...else выбирает между двумя альтернативами. Если нужно выбрать из более чем двух альтернатив, используется if...else if...else.
Синтаксис:
if (condition1) {
// блок кода 1
} else if (condition2){
// блок кода 2
} else {
// блок кода 3
}
Здесь:
- Если
condition1истинно, выполняетсяблок кода 1. - Если
condition1ложно, вычисляетсяcondition2. - Если
condition2истинно, выполняетсяблок кода 2. - Если
condition2ложно, выполняетсяблок кода 3.

Примечание: Может быть несколько else if, но только один if и один else.
Пример 3: C++ if...else...else if
// Программа для проверки, является ли целое число положительным, отрицательным или нулем
#include <iostream>
using namespace std;
int main() {
int number;
cout << "Enter an integer: ";
cin >> number;
if (number > 0) {
cout << "You entered a positive integer: " << number << endl;
} else if (number < 0) {
cout << "You entered a negative integer: " << number << endl;
} else {
cout << "You entered 0." << endl;
}
cout << "This line is always printed.";
return 0;
}
Результат 1
Enter an integer: 1 You entered a positive integer: 1. This line is always printed.
Результат 2
Enter an integer: -2 You entered a negative integer: -2. This line is always printed.
Результат 3
Enter an integer: 0 You entered 0. This line is always printed.
В программе мы принимаем число от пользователя. Затем используем лестницу if...else if...else для проверки: положительное, отрицательное или ноль.
Если число больше 0, выполняется блок if. Если меньше 0 — блок else if. Иначе — блок else.
Вложенные if...else в C++
Иногда нужно использовать оператор if внутри другого if. Это называется вложенным оператором if.
Представьте это как многослойные операторы if. Есть внешний if, а внутри — внутренний. Синтаксис:
// внешний if
if (condition1) {
// операторы
// внутренний if
if (condition2) {
// операторы
}
}
Примечания:
- К внутреннему
ifможно добавитьelseиelse ifпо необходимости. - Внутренний
ifтакже может быть вставлен внутрь внешнегоelseилиelse if(если они существуют). - Можно вкладывать несколько слоев
if.
Пример 4: Вложенные if в C++
// Программа для определения, является ли целое число положительным, отрицательным или нулем
// с использованием вложенных if
#include <iostream>
using namespace std;
int main() {
int num;
cout << "Enter an integer: ";
cin >> num;
// внешнее условие if
if (num != 0) {
// внутреннее условие if
if (num > 0) {
cout << "The number is positive." << endl;
}
// внутреннее условие else
else {
cout << "The number is negative." << endl;
}
}
// внешнее условие else
else {
cout << "The number is 0 and it is neither positive nor negative." << endl;
}
cout << "This line is always printed." << endl;
return 0;
}
Результат 1
Enter an integer: 35 The number is positive. This line is always printed.
Результат 2
Enter an integer: -35 The number is negative. This line is always printed.
Результат 3
Enter an integer: 0 The number is 0 and it is neither positive nor negative. This line is always printed.
В примере:
- Принимаем целое число от пользователя и сохраняем в num.
- Используем
if...elseдля проверки, не равно ли num0.- Если
true, выполняется внутреннийif...else. - Если
false, выполняется код внешнегоelse, выводящий"The number is 0...".
- Если
- Внутренний
if...elseпроверяет, положительно ли число (num > 0).- Если
true, печатаем, что число положительное. - Если
false, печатаем, что число отрицательное.
- Если
Примечание: Как видите, вложенные if...else усложняют логику. По возможности всегда старайтесь избегать вложенных if...else.
Тело if...else с единственным оператором
Если тело if...else содержит только один оператор, можно опустить { }. Например, можно заменить
int number = 5;
if (number > 0) {
cout << "The number is positive." << endl;
} else {
cout << "The number is negative." << endl;
}
на
int number = 5;
if (number > 0) cout << "The number is positive." << endl;
else cout << "The number is negative." << endl;
Результат обеих программ будет одинаковым.
Примечание: Хотя { } не обязательны для единственного оператора, их использование делает код более читаемым.
Дополнительно о принятии решений
В некоторых ситуациях тернарный оператор может заменить if...else. Подробнее — в уроке C++ Ternary Operator.
Если нужно выбрать между несколькими альтернативами на основе условия, можно использовать switch. Подробнее — в уроке C++ switch.
Посмотрите эти примеры для дополнительного изучения:
C++ Программа проверки четности числа
C++ Программа проверки, является ли символ гласной или согласной
C++ Программа поиска наибольшего из трех чисел
Язык C
- Условная логика в C#: if, if-else, if-else-if и вложенные if
- Классы и объекты в C++: практическое руководство по объектно-ориентированному программированию
- Управление памятью в C++: экспертное использование new и delete
- Публичное, защищённое и приватное наследование в C++: подробный разбор
- Дружественные функции и классы в C++: мастерство контроля доступа
- Операторы, отступы и комментарии в Python: понятное руководство
- Вложенные и внутренние классы в Java: типы, примеры и лучшие практики
- Полное руководство по дате и времени в C++
- Перегрузка в C++: функции и операторы — подробное руководство
- Ввод-вывод в файлы в C++: чтение и запись с fstream