Задачи ОГЭ с блок-схемами

Шесть типовых задач ОГЭ на алгоритмы и блок-схемы: цикл со счётчиком, ветвление, фильтрация в цикле, обработка цифр числа, накопление произведения и поиск максимума. С разбором и живыми схемами.

Пора применить всё, что мы изучили, к настоящим экзаменационным задачам. В ОГЭ по информатике алгоритмы встречаются в заданиях на определение результата программы и анализ блок-схем. Разберём шесть типовых задач: к каждой дана живая схема, но сначала попробуй решить на бумаге — на экзамене кнопки «выполнить» не будет.

Задача 1. Сколько витков сделает цикл

Дан алгоритм. Какое значение переменной n будет выведено?

s = 0
n = 0
while s < 15:
    s = s + 3
    n = n + 1
print(n)

Решение. Трассируем по виткам: после первого витка s = 3, после второго — 6, потом 9, 12, 15. Проверка 15 < 15 даёт «нет» — цикл останавливается. Витков было пять, значит n = 5.

Витокsns < 15?
00да
131да
262да
393да
4124да
5155нет — выход

Ответ: 5. Проверь по живой схеме:

s = 0
n = 0
while s < 15:
    s = s + 3
    n = n + 1
print(n)

Задача 2. Ветвление с вводом

Пользователь ввёл a = 4 и b = 9. Что выведет алгоритм?

a = int(input())
b = int(input())
if a > b:
    c = a - b
else:
    c = b - a
print(c)

Решение. Условие 4 > 9 ложно, исполнитель уходит по ветке «нет»: c = 9 − 4 = 5. Ответ: 5.

Заметь: алгоритм вычисляет |a − b| — модуль разности — для любых входных чисел. На экзамене иногда спрашивают наоборот: «при каких входных данных будет выведено 5?» Таких пар бесконечно много: годится любая пара чисел, отличающихся на 5.

Задача 3. Цикл с условием внутри

Что выведет алгоритм?

s = 0
for i in range(1, 11):
    if i % 3 == 0:
        s = s + i
print(s)

Решение. Счётчик i пробегает числа от 1 до 10. Внутри витка ромб пропускает к накопителю только числа, делящиеся на 3 нацело: это 3, 6 и 9. Сумма: 3 + 6 + 9 = 18. Ответ: 18.

Здесь главная ловушка — границы: range(1, 11) заканчивается на 10, поэтому 12 в сумму не попадёт, как бы ни хотелось. Пройди схему и посмотри, как ромб «фильтрует» значения счётчика:

s = 0
for i in range(1, 11):
    if i % 3 == 0:
        s = s + i
print(s)

Задача 4. Найди смысл алгоритма

Пользователь ввёл число 2026. Что будет выведено?

x = int(input())
while x > 9:
    x = x // 10
print(x)

Решение. Цикл отбрасывает последнюю цифру (x // 10), пока число больше 9: 2026 → 202 → 20 → 2. На двойке условие 2 > 9 ложно, цикл выходит. Ответ: 2. По сути алгоритм выводит первую (старшую) цифру числа.

Задача 5. Сумма цифр числа

Пользователь ввёл число 348. Что будет выведено?

n = int(input())
s = 0
while n > 0:
    s = s + n % 10
    n = n // 10
print(s)

Решение. Здесь два знакомых оператора работают в паре: n % 10 отрывает последнюю цифру и добавляет её к сумме, n // 10 укорачивает число. Трассируем: 348 → s=8, n=34 → s=15, n=3 → s=18, n=0 — выход. Ответ: 18. Это шаблон «сумма цифр», который надо знать наизусть.

Задача 6. Накопление и максимум

Что выведет алгоритм?

p = 1
for i in range(1, 5):
    p = p * i
print(p)

Решение. Накопитель произведения начинается с 1. По виткам: 1 → 1·1=1 → 1·2=2 → 2·3=6 → 6·4=24. Ответ: 24. Это 4! (факториал четырёх). Узнаёшь паттерн «произведение» из урока про циклы — начальное значение 1, а не 0.

Что мы узнали

  • Задачи ОГЭ на алгоритмы решаются трассировкой — таблицей по шагам и виткам.
  • Цикл while s < 15 делает ровно столько витков, сколько нужно, чтобы условие стало ложным.
  • Ветвление выбирает одну ветку; алгоритм с разностью часто вычисляет модуль |a − b|.
  • Связка n % 10 и n // 10 — универсальный приём для работы с цифрами числа.
  • Накопитель суммы стартует с 0, накопитель произведения — с 1.
  • Главная ловушка экзамена — границы range и последний виток цикла.
Проверьте себя
1. Цикл while s < 15 с шагом s = s + 3 от нуля. Сколько витков?
A4
B5
C6
D15
2. Алгоритм: while x > 9: x = x // 10. Что он выводит для числа 2026?
AСумму цифр — 10
BСтаршую цифру — 2
CПоследнюю цифру — 6
DКоличество цифр — 4
3. Какая связка операторов используется в шаблоне «сумма цифр числа»?
An + 10 и n - 10
Bn % 10 и n // 10
Cn * 10 и n / 10
Dn == 10 и n != 10
4. В цикле for i in range(1, 11) суммируются i, кратные 3. Чему равна сумма?
A18 (3+6+9)
B30 (3+6+9+12)
C21
D9
5. p = 1; for i in range(1, 5): p = p * i. Что выведется?
A10
B24
C120
D0
Поддержать проект