А
Информатика·9 класскод 2.1·10 мин

Алгоритмы: исполнители, ветвление, циклы и анализ программ

Трассировка программы по шагам и обратный ход от результата к исходному значению — ядро заданий 5, 6 и 14.

Тренировать тему

Задания 5 и 6 всегда решаются одним и тем же приёмом — построением таблицы трассировки. Не пытайтесь угадать ответ: заполните таблицу переменных по шагам, и решение станет механическим.

Три конструкции, из которых состоит любая программа

Следование — команды выполняются по очереди. Ветвление (if/else) — выполняется ровно одна из двух ветвей. Цикл (while/for) — тело повторяется, пока условие истинно. В цикле while обязательно должна быть команда, изменяющая условие, иначе цикл бесконечен.

Метод трассировки
Выписать переменные
По одному столбцу на каждую
Записать начальные значения
До входа в цикл
Один проход = одна строка
Не пропускать итерации
Проверять условие ДО тела
while проверяет перед каждым проходом
Остановиться на выходе
Записать то, что печатается
Каждая строка таблицы — состояние всех переменных после очередной команды.
Ветвление внутри цикла
Проверка условия s > 0
Истина: выполняем тело
s = s - 3n = n + 2
Ложь: выходим из цикла
print(n)
На каждом проходе выполняется ровно одна ветвь — вторая полностью пропускается.

Трассировка программы при s = 13

ПроходУсловие s > 0s послеn после
старт130
113 > 0 истина102
210 > 0 истина74
37 > 0 истина46
44 > 0 истина18
51 > 0 истина-210
6-2 > 0 ложь-210
Как меняются переменные по проходам
-21.85.59.313012345sn
s убывает на 3, n растёт на 2 — линейная зависимость, её видно сразу.
Задание 6 ОГЭ

Условие: ниже записана программа. При каком наименьшем введённом значении переменной s программа выведет число 10? s = int(input()) n = 0 while s > 0: s = s - 3 n = n + 2 print(n) Решение. Каждый проход цикла увеличивает n на 2, значит вывод 10 означает ровно 5 проходов. 1) После 4-го прохода цикл должен продолжиться: s - 12 > 0, то есть s > 12, значит s ≥ 13. 2) После 5-го прохода цикл должен закончиться: s - 15 ≤ 0, то есть s ≤ 15. 3) Подходят 13, 14, 15. Требуется наименьшее — это 13. Проверка по таблице трассировки выше: при s = 13 программа печатает 10. В бланк: 13

Задание 5 ОГЭ (исполнитель)

Условие: у исполнителя Вычислитель две команды, которым присвоены номера: 1 — прибавь 3, 2 — умножь на 2. Составьте алгоритм получения из числа 1 числа 25, содержащий не более 5 команд. В ответе запишите только номера команд. Решение. Идём от результата назад: 25 нечётное, значит последняя команда — «прибавь 3», до неё было 22. 22 чётное — делим на 2, получаем 11. 11 нечётное — вычитаем 3, получаем 8. 8 : 2 = 4. 4 - 3 = 1 — пришли к началу. Восстанавливаем прямой порядок: 1 →(+3) 4 →(×2) 8 →(+3) 11 →(×2) 22 →(+3) 25. Это команды 1, 2, 1, 2, 1 — ровно 5 команд. В бланк: 12121 (цифры подряд, без пробелов и запятых)

Ловушка: «наименьшее» и границы диапазона

Если в условии спрашивают наименьшее значение, а вы нашли диапазон 13–15, ответом будет 13, а при вопросе о наибольшем — 15. Проверяйте обе границы подстановкой. Вторая ловушка — операции // и %: в Python // это целочисленное деление (7 // 2 = 3), а % — остаток (7 % 2 = 1). Третья: range(1, 5) даёт числа 1, 2, 3, 4 — правая граница не включается.

Контроль решения
  • Построена таблица трассировки, а не догадка
  • Условие цикла while проверено перед каждым проходом, а не после
  • Определено, наименьшее или наибольшее значение требуется
  • Обе границы найденного диапазона проверены подстановкой
  • Для исполнителя проверено ограничение на число команд
  • Ответ — цифры подряд без разделителей