ЕГЭ · Информатика

Управляющие конструкции: полный разбор для ЕГЭ по информатике

Управляющие конструкции — основа любого алгоритма. На ЕГЭ по информатике задания на ветвления и циклы встречаются в номерах 6, 12, 20, 21, 22, 25 и других. Без чёткого понимания if, while, for, break и continue невозможно решить задачи на программирование и анализ алгоритмов.

В этой статье мы разберём каждую конструкцию на примерах реальных задач ЕГЭ, покажем типичные ловушки и дадим алгоритм решения. Материал ориентирован на учеников 10-11 классов, которые готовятся к экзамену или хотят систематизировать знания.

Код темы по ФИПИ: inf.prog.control. Рекомендуем изучать разделы последовательно, так как конструкции часто комбинируются.

🧑‍🏫
Разберём эту тему вместе

Без карты, без кредитки. Выбери персонажа — учи голосом, побеждай в баттлах.

Условный оператор if/elif/else

Условный оператор позволяет выполнять разные действия в зависимости от истинности условия. В Python синтаксис лаконичен: if условие: блок кода. Для нескольких ветвей используют elif, для альтернативы — else.

На ЕГЭ условный оператор встречается в задачах, где нужно определить, какое значение примет переменная после выполнения фрагмента кода, или написать программу, проверяющую свойства числа (чётность, делимость, принадлежность диапазону).

Важно помнить: условия могут быть составными с использованием логических операторов and, or, not. Порядок проверки ветвей важен — первое истинное условие запускает свой блок, остальные игнорируются.

Пример 1
Условие.

Определите значение переменной s после выполнения фрагмента программы:
x = 15
if x % 2 == 0:
s = 'четное'
elif x % 3 == 0:
s = 'делится на 3'
else:
s = 'другое'

Решение.

Шаг 1: Проверяем условие x % 2 == 0. 15 % 2 = 1, условие ложно.
Шаг 2: Переходим к elif x % 3 == 0. 15 % 3 = 0, условие истинно.
Шаг 3: Выполняется блок s = 'делится на 3'. Дальнейшие ветви не проверяются.
Ответ: s = 'делится на 3'.

Пример 2
Условие.

Напишите программу, которая вводит целое число и выводит 'YES', если оно положительное и чётное, и 'NO' в противном случае.

Решение.

Шаг 1: Считываем число: n = int(input()).
Шаг 2: Проверяем условие: if n > 0 and n % 2 == 0: print('YES') else: print('NO').
Пояснение: логическое 'and' требует одновременного выполнения обоих условий.

Цикл с предусловием while

Цикл while повторяет блок кода, пока условие истинно. Условие проверяется перед каждой итерацией. Если условие сразу ложно, тело не выполняется ни разу.

В задачах ЕГЭ while часто используется, когда число итераций заранее неизвестно. Типичные примеры: обработка цифр числа (пока число > 0), алгоритмы Евклида, поиск наибольшего общего делителя, разложение на множители.

Опасность: бесконечный цикл, если условие никогда не станет ложным. Всегда проверяйте, что переменные, влияющие на условие, изменяются внутри цикла.

Пример 1
Условие.

Определите, сколько раз выполнится тело цикла и какое значение примет переменная a:
a = 10
while a > 0:
a = a - 3

Решение.

Шаг 1: Начальное a=10.
Шаг 2: Проверка a>0? 10>0 — да. Выполняем a=10-3=7.
Шаг 3: Проверка a>0? 7>0 — да. a=7-3=4.
Шаг 4: Проверка a>0? 4>0 — да. a=4-3=1.
Шаг 5: Проверка a>0? 1>0 — да. a=1-3=-2.
Шаг 6: Проверка a>0? -2>0 — нет. Цикл завершён.
Итого: 4 итерации, a = -2.

Пример 2
Условие.

Напишите программу, которая считает сумму цифр введённого натурального числа (например, 12345 -> 15).

Решение.

Шаг 1: Ввод числа n = int(input()).
Шаг 2: Инициализация суммы s = 0.
Шаг 3: Цикл while n > 0: s += n % 10; n //= 10.
Шаг 4: Вывод s.
Пояснение: n % 10 даёт последнюю цифру, n //= 10 отбрасывает её.

Цикл со счётчиком for

Цикл for в Python итерируется по последовательности (список, строка, диапазон range). Для ЕГЭ наиболее важен range(start, stop, step).

for применяется, когда количество повторений известно или нужно перебрать элементы. В задачах ЕГЭ for встречается в обработке массивов, поиске минимума/максимума, подсчёте количества элементов по условию, а также в комбинации с условным оператором.

Важно: range(stop) — от 0 до stop-1; range(start, stop) — от start до stop-1; range(start, stop, step) — с шагом step. Шаг может быть отрицательным.

Пример 1
Условие.

Сколько раз выполнится тело цикла и что будет выведено?
for i in range(1, 10, 2):
print(i, end=' ')

Решение.

Шаг 1: range(1,10,2) генерирует числа: 1,3,5,7,9.
Шаг 2: Для каждого числа выполняется print.
Вывод: 1 3 5 7 9. Всего 5 итераций.

Пример 2
Условие.

Дан массив из 10 целых чисел. Напишите программу, которая находит сумму элементов, кратных 3.

Решение.

Шаг 1: Создаём массив: a = list(map(int, input().split())).
Шаг 2: Инициализация s = 0.
Шаг 3: Цикл for i in range(len(a)): if a[i] % 3 == 0: s += a[i].
Шаг 4: Вывод s.
Альтернатива: for x in a: if x % 3 == 0: s += x.

Операторы break и continue

break завершает выполнение цикла немедленно, continue пропускает текущую итерацию и переходит к следующей. Оба оператора работают внутри while и for.

На ЕГЭ break и continue встречаются в задачах на анализ кода, где нужно определить, сколько раз выполнится тело цикла или какое значение примет переменная. Часто эти операторы используются совместно с условными конструкциями.

Важно: break выходит только из самого внутреннего цикла, если циклы вложенные. continue переходит к проверке условия (для while) или к следующему элементу (для for).

Пример 1
Условие.

Сколько раз выполнится тело цикла и чему равно s после выполнения?
s = 0
for i in range(1, 6):
if i == 3:
break
s += i

Решение.

Шаг 1: i=1, условие i==3 ложно, s=0+1=1.
Шаг 2: i=2, условие ложно, s=1+2=3.
Шаг 3: i=3, условие истинно, выполняется break — цикл завершён.
Итого: 2 итерации, s=3.

Пример 2
Условие.

Сколько раз выполнится тело цикла и что выведется?
for i in range(1, 6):
if i % 2 == 0:
continue
print(i, end=' ')

Решение.

Шаг 1: i=1, 1%2=1, условие ложно, выводим 1.
Шаг 2: i=2, 2%2=0, условие истинно, continue — пропускаем вывод, переходим к i=3.
Шаг 3: i=3, условие ложно, выводим 3.
Шаг 4: i=4, условие истинно, пропуск.
Шаг 5: i=5, условие ложно, выводим 5.
Вывод: 1 3 5. Выполнено 5 итераций, но вывод только на 3 из них.

Комбинирование конструкций в задачах ЕГЭ

В реальных заданиях ЕГЭ управляющие конструкции редко встречаются по отдельности. Типична комбинация: внешний цикл (for или while), внутри — условные операторы и вложенные циклы. Например, задача 25 (обработка чисел) требует перебора диапазона чисел (for), проверки делителей (if), подсчёта количества (счётчик).

Разберём пример из демоверсии ЕГЭ: найти все числа в диапазоне [100000; 999999], у которых ровно три чётных делителя (не считая 1 и самого числа). Алгоритм: для каждого числа n перебираем делители от 2 до n-1 (цикл for), проверяем, является ли делитель чётным (if), подсчитываем количество. Если после цикла count==3, выводим n.

Важно оптимизировать: перебор до sqrt(n) и учёт пар делителей. Но для понимания конструкций достаточно базового подхода.

Если чувствуете, что тема даётся тяжело, попробуйте разобрать её с AI-репетитором. Например, Наставник AI (nastavnik-ai.ru) может объяснить каждую конструкцию в интерактивном режиме, задавать наводящие вопросы и подсказывать, не давая готового ответа.

Пример 1
Условие.

Напишите программу, которая выводит все числа от 1 до 100, которые делятся на 3, но не делятся на 5. Используйте for и if.

Решение.

Шаг 1: for i in range(1, 101):
Шаг 2: if i % 3 == 0 and i % 5 != 0: print(i)
Пояснение: условие проверяет делимость на 3 и неделимость на 5.

Пример 2
Условие.

Определите значение переменной s после выполнения:
s = 0
for i in range(1, 10):
if i % 2 == 0:
continue
s += i
if s > 10:
break

Решение.

Шаг 1: i=1, условие i%2==0 ложно, s=0+1=1, s>10? нет.
Шаг 2: i=2, условие истинно, continue — переходим к i=3.
Шаг 3: i=3, условие ложно, s=1+3=4, s>10? нет.
Шаг 4: i=4, continue.
Шаг 5: i=5, s=4+5=9, s>10? нет.
Шаг 6: i=6, continue.
Шаг 7: i=7, s=9+7=16, s>10? да, break.
Итого: s=16.

Частые вопросы

Как отличить, когда использовать while, а когда for?
for используйте, когда известно количество повторений или нужно перебрать элементы последовательности. while — когда количество итераций заранее неизвестно и зависит от условия (например, пока число не станет нулём).
Может ли быть несколько elif в одном условном операторе?
Да, количество elif не ограничено. Проверка идёт сверху вниз, выполняется первый истинный блок. Если ни одно условие не истинно, выполняется else (если он есть).
Что будет, если в цикле while условие всегда истинно?
Возникнет бесконечный цикл. Программа зависнет или превысит лимит времени. Чтобы избежать, убедитесь, что внутри цикла изменяется переменная, влияющая на условие.
Как break и continue работают во вложенных циклах?
break прерывает только тот цикл, в котором он находится. continue также относится к текущему циклу. Чтобы выйти из внешнего цикла, нужен флаг или использование break с метками (в Python меток нет, но можно вынести логику в функцию).
Нужно ли знать синтаксис else для циклов (for-else, while-else)?
В ЕГЭ это не требуется, но может быть полезно. Блок else после цикла выполняется, если цикл завершился без break. В задачах ЕГЭ такие конструкции крайне редки, можно не углубляться.
Как подготовиться к задачам на управляющие конструкции?
Решайте задачи из открытого банка ФИПИ и демоверсий. Начните с простых, затем переходите к комбинированным. Если возникают сложности, попробуйте объяснить код вслух или обратитесь к AI-репетитору, например, Наставник AI (nastavnik-ai.ru) — он поможет разобрать каждую конструкцию шаг за шагом.
🧑‍🏫
Разберём эту тему вместе

Без карты, без кредитки. Выбери персонажа — учи голосом, побеждай в баттлах.

Управляющие конструкции в Python для ЕГЭ: if, while, for, break, continue