Условный оператор if, then, else и составной оператор
Урок учит программу принимать решения с помощью условного оператора if/then/else и группировать команды составным оператором.
Условный оператор if выполняет одни команды, если условие истинно, и другие — если ложно.
Зачем программе принимать решения
Пока наши программы шли строго по прямой: команда за командой, всегда одинаково. Но жизнь полна развилок. «Если на улице дождь — возьми зонт, иначе надень кепку». «Если оценка ниже 3 — пересдача, иначе зачёт». Программа тоже должна уметь выбирать путь в зависимости от данных. Эта способность называется ветвлением, и без неё невозможна ни одна интересная программа.
В Паскале за ветвление отвечает условный оператор — конструкция if ... then ... else. По-английски это буквально «если ... то ... иначе», так что читается она почти как обычное предложение.
Простое if без else
Самая короткая форма — сделать что-то только при выполнении условия:
var
age: integer;
begin
age := 20;
if age >= 18 then
writeln('Вы совершеннолетний');
end.
Читается так: «если age больше или равно 18, то напечатать сообщение». Если условие age >= 18 истинно — команда после then выполнится. Если ложно — она будет пропущена, и программа пойдёт дальше. Обратите внимание: перед then точку с запятой не ставят — это одна цельная конструкция.
Для сравнения Паскаль использует знакомые знаки: = (равно), <> (не равно), <, >, <=, >=. Запомните: сравнение на равенство — это одинарное =, не путайте с присваиванием :=.
Полная форма if-then-else
Чаще нужно выбрать одно из двух действий. Тогда добавляют ветку else («иначе»):
var
n: integer;
begin
n := 7;
if n mod 2 = 0 then
writeln('Число чётное')
else
writeln('Число нечётное');
end.
Если условие истинно — выполнится ветка после then, иначе — ветка после else. Выполнится ровно одна из двух, никогда обе сразу. Очень важная деталь синтаксиса: перед else точку с запятой не ставят! Это самая частая ошибка новичков. Конструкция if-then-else — единое целое, и точка с запятой перед else разрывает её. Запустите аналог на Python:
n = 7
if n % 2 == 0:
print('Число чётное')
else:
print('Число нечётное')
Вывод:
Число нечётное
Составной оператор: begin и end
А что, если при выполнении условия нужно сделать несколько команд, а не одну? После then можно поставить только одну команду. Решение — объединить несколько команд в одну группу с помощью begin и end. Такая группа называется составным оператором и для Паскаля считается единой командой:
var
temp: integer;
begin
temp := -5;
if temp < 0 then
begin
writeln('На улице мороз!');
writeln('Надень шапку и перчатки');
writeln('Температура: ', temp);
end
else
writeln('Тепло, можно гулять');
end.
Здесь при temp < 0 выполнятся все три команды внутри begin...end. Обратите внимание: после закрывающего end перед else точки с запятой снова нет. Составной оператор — ваш главный инструмент: он позволяет «упаковать» сколько угодно команд туда, где синтаксис ждёт одну.
temp = -5
if temp < 0:
print('На улице мороз!')
print('Надень шапку и перчатки')
print('Температура:', temp)
else:
print('Тепло, можно гулять')
Вывод:
На улице мороз! Надень шапку и перчатки Температура: -5
Вложенные условия и else if
Иногда вариантов больше двух. Например, перевести числовой балл в словесную оценку. Тогда условия вкладывают друг в друга через else if:
var
score: integer;
begin
score := 75;
if score >= 90 then
writeln('Отлично')
else if score >= 70 then
writeln('Хорошо')
else if score >= 50 then
writeln('Удовлетворительно')
else
writeln('Нужно подтянуть');
end.
Программа проверяет условия сверху вниз и выполняет ветку первого истинного условия, остальные пропускает. Порядок важен: проверки идут от самого строгого к самому мягкому. Запустите аналог:
score = 75
if score >= 90:
print('Отлично')
elif score >= 70:
print('Хорошо')
elif score >= 50:
print('Удовлетворительно')
else:
print('Нужно подтянуть')
Вывод:
Хорошо
Попробуй сам
Напишите программу, которая по введённому числу определяет его знак: положительное, отрицательное или ноль. Понадобятся три ветки через if-else if-else. Проверьте логику на Python (число 0 для примера):
n = 0
if n > 0:
print('Положительное')
elif n < 0:
print('Отрицательное')
else:
print('Ноль')
Вывод:
Ноль
Частые ошибки
- Точка с запятой перед else. Запись
writeln('...');прямо передelseразрывает оператор — среда выдаст ошибку «else без if». Передelseточки с запятой быть не должно. - Забыли begin/end для нескольких команд. Без них после
thenк условию относится только первая команда, остальные выполнятся всегда. Группируйте составным оператором. - Сравнение через := вместо =. В условии равенство проверяется одинарным
=:if x = 5 then.:=здесь ошибка. - then после условия. Не забывайте слово
then— без него условие не работает.
Итоги
- Условный оператор
if условие then ... else ...выбирает путь выполнения в зависимости от истинности условия. - Перед
thenи передelseточку с запятой не ставят — это единая конструкция. - Несколько команд в ветке объединяют в составной оператор
begin ... end. - Для более чем двух вариантов используют цепочку
else if; выполняется ветка первого истинного условия. - Сравнение на равенство — одинарное
=, не путать с присваиванием:=.