Урок 02. Вспомогательные алгоритмы

Разбивать большую задачу на части, находить повторяющийся фрагмент и оформлять его как простой вспомогательный алгоритм.

Понадобятся тетрадь и ручка; для программ — компьютер с Python и IDLE. Если компьютера нет, код можно сначала разобрать на бумаге.

Все уроки · Перейти к заданиям

Материалы к уроку

Новая идея

Подумай:

Если нужно убрать комнату, лучше держать в голове одну огромную команду “убраться” или разбить ее на маленькие действия?

Пример разбиения:

Убраться в комнате:
1. убрать вещи со стола;
2. протереть стол;
3. сложить учебники;
4. пропылесосить;
5. вынести мусор.

Вывод:

Большую задачу проще решить, если разделить ее на части.

Вспомогательный алгоритм

Вспомогательный алгоритм - это отдельный маленький алгоритм, который используется внутри основного.

Он нужен, когда:

  • одно и то же действие повторяется несколько раз;
  • большая задача становится слишком длинной;
  • хочется дать части задачи понятное имя.

Пример без вспомогательного алгоритма:

Напечатать линию звездочек
Напечатать заголовок
Напечатать линию звездочек
Напечатать текст
Напечатать линию звездочек

Здесь действие “напечатать линию звездочек” повторяется.

Пример со вспомогательным алгоритмом:

Вспомогательный алгоритм Линия:
    напечатать *****
 
Основной алгоритм:
    выполнить Линия
    напечатать заголовок
    выполнить Линия
    напечатать текст
    выполнить Линия

Пример на Python

Создай файл lesson02.py.

def line():
    print("*****")
 
line()
print("Информатика")
line()
print("9 класс")
line()

Пояснение:

  • def line(): создает вспомогательный алгоритм с именем line;
  • команды с отступом относятся к этому алгоритму;
  • line() запускает вспомогательный алгоритм;
  • если вызвать line() три раза, строка напечатается три раза.

Ожидаемый вывод:

*****
Информатика
*****
9 класс
*****

Трассировка запуска

ШагКомандаЧто происходит
1def line():Python запоминает вспомогательный алгоритм
2line()выполняется print("*****")
3print("Информатика")печатается заголовок
4line()снова печатается линия
5print("9 класс")печатается текст
6line()снова печатается линия

Вариант через исполнителя

Если в школе используют Робота, Черепашку или Чертежника, объяснить так:

Вспомогательный алгоритм Квадрат:
    вперед на 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;

Тренировка по шагам

Работай сверху вниз. Сначала запиши собственный ответ, затем нажми на свёрнутый блок «Правильный ответ» непосредственно под заданием. Исправление пиши ниже своей первой попытки, не стирая её.

Шаг 1. Найди повторение

Какое действие повторяется?

напечатать -----
напечатать Меню
напечатать -----
напечатать 1. Играть
напечатать 2. Выход
напечатать -----

Ответ ученика

Шаг 2. Дай имя

Предложи два понятных имени для вспомогательного алгоритма, который печатает -----.

Ответ ученика

Шаг 3. Прочитай программу

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

def hello():
    print("Привет")
 
hello()
hello()
print("Конец")

Ответ ученика

Шаг 4. Исправь отступ

Почему программа не запускается?

def line():
print("-----")
 
line()

Ответ ученика

Шаг 5. Определение и вызов

В записи ниже укажи, где функция определяется, а где вызывается.

def star():
    print("***")
 
star()

Ответ ученика

Шаг 6. Собери программу

Напиши функцию separator(), чтобы программа вывела строки ===, Python, ===, Алгоритмы, ===.

Ответ ученика

Шаг 7. Итог урока

Объясни: зачем нужен вспомогательный алгоритм, что делает def и чем имя line отличается от вызова line()?

Ответ ученика

Вопросы ученика

Предыдущий урок · Следующий урок