Управляющие конструкции: полный разбор для ЕГЭ по информатике
Управляющие конструкции — основа любого алгоритма. На ЕГЭ по информатике задания на ветвления и циклы встречаются в номерах 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. Порядок проверки ветвей важен — первое истинное условие запускает свой блок, остальные игнорируются.
Определите значение переменной 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'.
Напишите программу, которая вводит целое число и выводит 'YES', если оно положительное и чётное, и 'NO' в противном случае.
Шаг 1: Считываем число: n = int(input()).
Шаг 2: Проверяем условие: if n > 0 and n % 2 == 0: print('YES') else: print('NO').
Пояснение: логическое 'and' требует одновременного выполнения обоих условий.
Цикл с предусловием while
Цикл while повторяет блок кода, пока условие истинно. Условие проверяется перед каждой итерацией. Если условие сразу ложно, тело не выполняется ни разу.
В задачах ЕГЭ while часто используется, когда число итераций заранее неизвестно. Типичные примеры: обработка цифр числа (пока число > 0), алгоритмы Евклида, поиск наибольшего общего делителя, разложение на множители.
Опасность: бесконечный цикл, если условие никогда не станет ложным. Всегда проверяйте, что переменные, влияющие на условие, изменяются внутри цикла.
Определите, сколько раз выполнится тело цикла и какое значение примет переменная 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.
Напишите программу, которая считает сумму цифр введённого натурального числа (например, 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. Шаг может быть отрицательным.
Сколько раз выполнится тело цикла и что будет выведено?
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 итераций.
Дан массив из 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).
Сколько раз выполнится тело цикла и чему равно 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.
Сколько раз выполнится тело цикла и что выведется?
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 до 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.
Определите значение переменной 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.
Частые вопросы
Без карты, без кредитки. Выбери персонажа — учи голосом, побеждай в баттлах.