Если нужно убрать комнату, лучше держать в голове одну огромную команду “убраться” или разбить ее на маленькие действия?
Пример разбиения:
Убраться в комнате:1. убрать вещи со стола;2. протереть стол;3. сложить учебники;4. пропылесосить;5. вынести мусор.
Вывод:
Большую задачу проще решить, если разделить ее на части.
Вспомогательный алгоритм
Вспомогательный алгоритм - это отдельный маленький алгоритм, который используется внутри основного.
Он нужен, когда:
одно и то же действие повторяется несколько раз;
большая задача становится слишком длинной;
хочется дать части задачи понятное имя.
Пример без вспомогательного алгоритма:
Напечатать линию звездочекНапечатать заголовокНапечатать линию звездочекНапечатать текстНапечатать линию звездочек
Здесь действие “напечатать линию звездочек” повторяется.
Пример со вспомогательным алгоритмом:
Вспомогательный алгоритм Линия: напечатать *****Основной алгоритм: выполнить Линия напечатать заголовок выполнить Линия напечатать текст выполнить Линия
def line(): создает вспомогательный алгоритм с именем line;
команды с отступом относятся к этому алгоритму;
line() запускает вспомогательный алгоритм;
если вызвать line() три раза, строка напечатается три раза.
Ожидаемый вывод:
*****Информатика*****9 класс*****
Трассировка запуска
Шаг
Команда
Что происходит
1
def line():
Python запоминает вспомогательный алгоритм
2
line()
выполняется print("*****")
3
print("Информатика")
печатается заголовок
4
line()
снова печатается линия
5
print("9 класс")
печатается текст
6
line()
снова печатается линия
Вариант через исполнителя
Если в школе используют Робота, Черепашку или Чертежника, объяснить так:
Вспомогательный алгоритм Квадрат: вперед на 4 клетки повернуть направо вперед на 4 клетки повернуть направо вперед на 4 клетки повернуть направо вперед на 4 клетки повернуть направоОсновной алгоритм: выполнить Квадрат перейти вправо выполнить Квадрат
Смысл тот же: повторяющийся фрагмент получает имя.
Наглядная схема
flowchart LR
A["Основной алгоритм"] --> B["Вызов line()"]
B --> C["Функция печатает -----"]
C --> D["Возврат в основной алгоритм"]
D --> E["Следующая команда"]
A -. "определение хранится отдельно" .-> F["def line():"]
classDef helper fill:#fff3bf,stroke:#e67700,color:#212529;
class B,C,F helper;
Тренировка по шагам
Работай сверху вниз. Сначала запиши собственный ответ, затем нажми на свёрнутый блок «Правильный ответ» непосредственно под заданием. Исправление пиши ниже своей первой попытки, не стирая её.