Алгоритмизация: управляющие конструкции
Алгоритмические конструкции: следование, ветвление, повторение. Условный оператор if/elif/else в Python. Составные и вложенные условия. Решение задач на ветвление при подготовке к ОГЭ.
Алгоритмизация: управляющие конструкции
Определение
Управляющая конструкция — фрагмент алгоритма, определяющий порядок выполнения команд. В программировании выделяют три базовые конструкции:
- Следование — команды выполняются одна за другой в порядке записи
- Ветвление — выбор одного из двух или более вариантов в зависимости от условия
- Повторение (цикл) — многократное выполнение одной и той же последовательности команд
Формула
Полная форма ветвления (if-else)
if условие:
блок_1 # выполняется, если условие истинно
else:
блок_2 # выполняется, если условие ложно
Сокращённая форма (if без else)
if условие:
блок # выполняется только если условие истинно
Множественное ветвление (if-elif-else)
if условие_1:
блок_1
elif условие_2:
блок_2
elif условие_3:
блок_3
else:
блок_иначе
Составные условия
# Логическое И — оба условия должны быть истинны
if возраст >= 18 and наличие_прав:
print("Можно водить")
# Логическое ИЛИ — хотя бы одно условие истинно
if день == "Суббота" or день == "Воскресенье":
print("Выходной")
# Логическое НЕ — инвертирует условие
if not зарегистрирован:
print("Пройдите регистрацию")
Пример
Пример 1: проверка чётности
n = int(input("Введите число: "))
if n % 2 == 0:
print(f"{n} — чётное")
else:
print(f"{n} — нечётное")
Пример 2: оценка по баллам (if-elif-else)
ball = int(input("Введите балл (0-100): "))
if ball >= 85:
print("Оценка: 5 (отлично)")
elif ball >= 65:
print("Оценка: 4 (хорошо)")
elif ball >= 40:
print("Оценка: 3 (удовлетворительно)")
else:
print("Оценка: 2 (неудовлетворительно)")
Трассировка: ball = 72 → 72 >= 85? Нет → 72 >= 65? Да → "Оценка: 4 (хорошо)"
Пример 3: вложенные условия
age = int(input("Ваш возраст: "))
if age >= 18:
print("Доступ разрешён")
else:
if age >= 14:
print("Доступ с согласия родителей")
else:
print("Доступ запрещён")
Трассировка: age = 15 → 15 >= 18? Нет → блок else → 15 >= 14? Да → "Доступ с согласия родителей"
Пример 4: определение времени года
month = int(input("Номер месяца (1-12): "))
if month == 12 or month == 1 or month == 2:
season = "Зима"
elif month == 3 or month == 4 or month == 5:
season = "Весна"
elif month == 6 or month == 7 or month == 8:
season = "Лето"
elif month == 9 or month == 10 or month == 11:
season = "Осень"
else:
season = "Ошибка: нет такого месяца"
print(season)
Обозначения
| Символ | Значение | Пример |
|---|---|---|
== | Проверка равенства | if x == 5: |
!= | Проверка неравенства | if x != 0: |
> | Больше | if x > 10: |
< | Меньше | if x < 100: |
>= | Больше или равно | if x >= 18: |
<= | Меньше или равно | if x <= 120: |
and | Логическое И | if x > 0 and x < 10: |
or | Логическое ИЛИ | if x == 0 or x == 1: |
not | Логическое НЕ | if not flag: |
Важно!
- После условия обязательно ставится двоеточие
:. Забыли двоеточие — ошибка синтаксиса. - Тело условия обязательно выделяется отступом (4 пробела). Все строки с одинаковым отступом — один блок.
elif— это сокращение отelse if. Можно использовать сколько угодноelif.- Ветвление проверяет условия по порядку. Как только найдено первое истинное — остальные пропускаются.
- Не путайте
=(присваивание) и==(проверка равенства) — частая причина багов. - Вложенные условия снижают читаемость. Если можно обойтись
elif— используйтеelif.
Примеры вопросов из тренажёра
-
Q: Какая из конструкций НЕ является базовой управляющей конструкцией?
A: верный ответ — Массив
Объяснение: Массив — это структура данных, а не управляющая конструкция. Базовые конструкции: следование, ветвление, цикл.
-
Q: Что выведет программа? x = 10 if x > 15: print('A') elif x > 5: print('B') else: print('C')
A: верный ответ — B
Объяснение: x=10, 10>15? Нет → проверяем elif: 10>5? Да → выводим 'B'. Остальные ветки не выполняются.
-
Q: Что выведет программа? a = 3 b = 7 if a > b: print(a) else: print(b)
A: верный ответ — 7
Объяснение: a=3, b=7. Условие 3>7 ложно → выполняется блок else, выводится b, то есть 7.
-
Q: Какое условие проверяет, что число x принадлежит отрезку [5, 15]?
A: верный ответ — if x >= 5 and x <= 15
Объяснение: Отрезок [5, 15] включает границы, поэтому нужны >= и <=. Вариант 4 тоже возможен в Python, но вариант 2 — явный и правильный.
-
Q: Что выведет программа? x = 0 if x: print('Да') else: print('Нет')
A: верный ответ — Нет
Объяснение: В Python 0 трактуется как False в логическом контексте. Условие ложно → выполняется else, выводится 'Нет'.