Условный оператор if
Во многих задачах нужно действовать по-разному в зависимости от условия:
если число положительное – написать одно, если отрицательное – другое, если ноль – третье.
Для этого в Java есть оператор if. Он проверяет логическое выражение (да/нет) и в зависимости от результата выполняет нужный блок кода.
int x = in.nextInt();
if (x > 0) {
System.out.println("Положительное");
} else if (x < 0) {
System.out.println("Отрицательное");
} else {
System.out.println("Ноль");
}
7
Положительное
Основное
Условие в Java всегда основано на значении типа boolean — true или false.
Основные формы записи:
Чаще всего условия строятся из сравнений (==, !=, <, >, <=, >=) и логических операций (&&, ||, !).
Простое условие: if
Самый простой вариант — выполнить блок кода только когда условие истинно.
int age = in.nextInt();
if (age >= 18) {
System.out.println("Взрослый");
}
System.out.println("Конец программы");
Если age >= 18 истинно, будет выведено два сообщения.
Если ложно — только "Конец программы".
Два варианта: if … else
Когда нужно выбрать между двумя вариантами, используется if … else:
int x = in.nextInt();
if (x % 2 == 0) {
System.out.println("Чётное");
} else {
System.out.println("Нечётное");
}
Здесь всегда выполняется ровно один из блоков: либо после if, либо после else.
Несколько вариантов: цепочка if … else if … else
Если вариантов больше двух, можно сделать цепочку условий:
int x = in.nextInt();
if (x > 0) {
System.out.println("Положительное");
} else if (x < 0) {
System.out.println("Отрицательное");
} else {
System.out.println("Ноль");
}
Блоки проверяются сверху вниз:
- сначала проверяется первое условие;
- если оно ложно, проверяется следующее
else if; - если все условия ложны, выполняется блок
else(если он есть).
Диапазоны и составные условия
Частая задача — проверить, попадает ли число в некоторый диапазон.
int x = in.nextInt();
if (x >= 1 && x <= 100) {
System.out.println("В диапазоне 1..100");
} else {
System.out.println("Вне диапазона");
}
Здесь используется логическое И (&&): оба условия x >= 1 и x <= 100 должны быть истинны.
Другой пример — один из нескольких вариантов:
int month = in.nextInt();
if (month == 12 || month == 1 || month == 2) {
System.out.println("Зима");
}
Здесь логическое ИЛИ (||): достаточно, чтобы истинным было хотя бы одно из сравнений.
Вложенные условия
Иногда удобно писать условия внутри условий:
int x = in.nextInt();
if (x >= 0) {
if (x % 2 == 0) {
System.out.println("Неотрицательное чётное");
} else {
System.out.println("Неотрицательное нечётное");
}
} else {
System.out.println("Отрицательное");
}
Такие конструкции нужно писать аккуратно и не усложнять без необходимости.
Часто вложенные if можно заменить на одну цепочку if … else if … else.
Типичные шаблоны
Максимум из двух чисел
int a = in.nextInt();
int b = in.nextInt();
int max;
if (a >= b) {
max = a;
} else {
max = b;
}
System.out.println(max);
Классический «знак числа»
int x = in.nextInt();
if (x > 0) {
System.out.println(1);
} else if (x < 0) {
System.out.println(-1);
} else {
System.out.println(0);
}
Проверка корректности значения
int score = in.nextInt();
if (score < 0 || score > 100) {
System.out.println("Некорректное значение");
} else {
System.out.println("ОК");
}
Блок-схемы

Что нужно запомнить
Условие в if — это логическое выражение (boolean), которое даёт true или false.
Основные формы: одиночный if, пара if … else и цепочка if … else if … else.
Сложные условия удобно строить из сравнений и логических операций: диапазоны — через &&, варианты «или то, или это» — через ||.
Все ранее рассматриваемые программы имели линейную структуру: все инструкции выполнялись последовательно одна за одной, каждая записанная инструкция обязательно выполнялась.
Допустим, мы хотим по данному числу x определить его абсолютную величину (модуль). Программа должна напечатать значение переменной x, если x > 0, или же величину -x в противном случае. Линейная структура программы нарушается: в зависимости от справедливости условия x > 0 должна быть выведена одна или другая величина. Код программы на C++ имеет вид:
#include <iostream>
using namespace std;
int main()
{
int x;
cin >> x;
if (x < 0){
x = -x;
}
cout << x;
return 0;
}
-8
8
В этой программе используется условная инструкция if (если). После слова if указывается проверяемое логическое выражение x > 0 в круглых скобках. После этого идет блок (последовательность) инструкций, который будет выполнен, если значение логического выражения истинно. Блок выделяется фигурными скобками. В нашем примере в блоке одна операция: умножение x на -1. Если в блоке ровно одна операция, то фигурные скобки можно не ставить, но мы рекомендуем использовать фигурные скобки в любом случае.
Данную задачу можно решить другим способом с помощью инструкции else (иначе):
#include <iostream>
using namespace std;
int main()
{
int x;
cin >> x;
if (x >= 0){
cout << x;
} else{
cout << -x;
}
return 0;
}
Блок внутри инструкции else будет выполнен только в том случае, если логическое выражение внутри if вернуло false (ложь). Инструкция else всегда относится к какой-либо инструкции if.
Каскадные и вложенные условные инструкции
Задача про високосный год
Дано натуральное число. Требуется определить, является ли год с данным номером високосным.
Если год является високосным, выведите YES, иначе выведите NO.
Напомним правило григорианского календаря:
год високосный, если его номер делится на 4, но не делится на 100, или если он кратен 400.
Решение (вложенные условия):
#include <iostream>
using namespace std;
int main()
{
int year;
cin >> year;
if (year % 4 == 0){
if (year % 100 == 0){
if (year % 400 == 0){
cout << "YES" << endl;
}
else {
cout << "NO" << endl;
}
} else {
cout << "YES" << endl;
}
} else {
cout << "NO" << endl;
}
return 0;
}
Программа получилась довольно громоздкой, напишем решение проще:
#include <iostream>
using namespace std;
int main()
{
int year;
cin >> year;
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0 ){
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
return 0;
}
Задача про минимум из двух чисел
Даны два числа, выведите минимальное из них.
Решение:
#include <iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
if (b < a){
a = b;
}
cout << a;
return 0;
}
Задача про минимум из трёх чисел
Даны три числа, выведите минимальное из них.
Решение:
#include <iostream>
using namespace std;
int main()
{
int a, b, c;
cin >> a >> b >> c;
if (b < a){
a = b;
}
if (c < a){
a = c;
}
cout << a;
return 0;
}
Задача про One, Two, Three и Other
Пусть дано число x. Необходимо вывести:
One, еслиx = 1;Two, еслиx = 2;Three, еслиx = 3;Otherв любом другом случае.
Решение:
#include <iostream>
using namespace std;
int main()
{
int x;
cin >> x;
if (x == 1){
cout << "One" << endl;
}
if (x == 2){
cout << "Two" << endl;
}
if (x == 3){
cout << "Three" << endl;
}
if (x < 1 || x > 3){
cout << "Other" << endl;
}
return 0;
}
Если мы захотим добавить отдельный вывод Four для x = 4, в программу придется добавить еще одно условие и исправить условие для вывода Other.
Такой подход может привести к ошибкам. Поэтому перепишем программу с каскадом else if:
#include <iostream>
using namespace std;
int main()
{
int x;
cin >> x;
if (x == 1){
cout << "One" << endl;
} else if (x == 2){
cout << "Two" << endl;
} else if (x == 3){
cout << "Three" << endl;
} else {
cout << "Other" << endl;
}
return 0;
}
При таком способе программу легче модифицировать при добавлении других чисел.
По материалам:
М. Густокашин. Введение в программирование на языке C++. Сириус Курсы. Перейти к курсу.
В Python оператор if выбирает, какой блок кода выполнить, в зависимости от условия.
Условия обычно пишут как сравнение (x > 0, a == b) или как логическое выражение с and, or, not.
Основное
if условие: – выполнить блок, если условие истинно.
if ...: ... else: ... – выбрать один из двух вариантов.
if ...: ... elif ...: ... else: ... – выбрать один из нескольких вариантов.
В Python важно, что блоки кода задаются отступами.
Пример: знак числа
x = int(input())
if x > 0:
print("Положительное")
elif x < 0:
print("Отрицательное")
else:
print("Ноль")
-3
Отрицательное
Пример: чётное или нечётное
Пример: диапазон
Что можно писать в условии
В Java в if (...) должно быть строго boolean.
В C++ в условии можно написать и bool, и число: 0 – ложь, ненулевое – истина.
В Python можно писать True/False, сравнения, а также использовать «истинность» значений (например, 0 считается ложью). В задачах обычно удобнее писать сравнения.
Как выглядит блок кода
В Java и C++ блоки задаются фигурными скобками { ... }.
В Python блоки задаются отступами.
Ключевые слова
Java: if, else if, else.
C++: if, else if, else.
Python: if, elif, else.
Логические операции
Java и C++: &&, ||, !.
Python: and, or, not.
Частая ошибка в C++
В условии легко перепутать == (сравнение) и = (присваивание). В if нужно сравнение.