На Горох
Информатика

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

"Информатика и ИКТ (в 2 частях)", Бененсон Е.П., Паутова А.Г.

Объяснение темы

Кратко о теме

Вспомогательный алгоритм — отдельная последовательность команд для решения части общей задачи. Основной алгоритм задаёт порядок действий и вызывает её там, где она нужна. Такой подход помогает разбить большую задачу на понятные части и не записывать одни и те же команды много раз. У каждого алгоритма есть имя, а вызов по этому имени запускает его выполнение. Когда вспомогательный алгоритм заканчивается, исполнитель возвращается к следующей команде основного.

Объяснение темы

Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.

Определения и обозначения

Вспомогательный алгоритм — алгоритм, который решает отдельную задачу и может использоваться при выполнении другого алгоритма. Например, действия по подметанию пола можно описать отдельно и включить в план уборки. Это нужно, чтобы не смешивать разные части решения и использовать готовое описание повторно.

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

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

Имя алгоритма — название, по которому алгоритм записывают и вызывают в другом алгоритме. Например, алгоритм можно назвать «Подмести участок». Имя помогает отличить его от других алгоритмов и точно указать исполнителю, какую последовательность команд нужно выполнить.

Как это устроено

Большую задачу часто трудно описать одной длинной цепочкой команд: в ней легко потерять порядок или пропустить действие. Поэтому её делят на части, каждая из которых решает отдельную подзадачу. Для каждой части можно составить самостоятельный алгоритм. Так проще разбираться в решении и проверять его по этапам.

Если одинаковая последовательность действий встречается в нескольких местах, её удобно записать отдельно. В основном алгоритме вместо повторения команд ставят вызов этой последовательности по имени. Изменение тогда достаточно внести в одном месте, а не исправлять все повторы. Это уменьшает риск того, что одинаковые действия будут случайно записаны по-разному.

Основной алгоритм сохраняет общую картину решения: он определяет, какие этапы идут друг за другом. Вспомогательный алгоритм отвечает за один из этих этапов и выполняет свои команды. Такое разделение похоже на план путешествия: общий маршрут задаёт порядок, а описание отдельного участка уточняет, как его пройти. Благодаря этому детали не загромождают основной план.

Чтобы начать вспомогательный алгоритм, основной должен содержать вызов с его точным именем. Исполнитель переходит к командам вызванного алгоритма и выполняет их по порядку. Когда они закончились, он возвращается к команде сразу после вызова. Поэтому важно и правильно написать имя, и поместить вызов в нужную точку общего порядка.

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

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

Что сравниваемОсновной алгоритмВспомогательный алгоритм
НазначениеЗадаёт общий порядок решения задачи.Решает отдельную подзадачу.
Как связан с другими алгоритмамиМожет вызывать вспомогательные алгоритмы.Может вызываться из другого алгоритма.
Как начинается выполнениеИсполнитель начинает выполнять его команды.Начинается после вызова по имени.
Что происходит после завершенияИсполнение алгоритма заканчивается.Исполнитель возвращается к команде после вызова.

Сравнивайте алгоритмы по назначению и по тому, как исполнитель начинает и продолжает работу. Это помогает понять, где находится общий план, а где описана отдельная операция. Один и тот же алгоритм может быть вспомогательным в одной задаче и основным в другой.

Разбор задач

Уборка комнаты

Условие. При уборке нужно несколько раз подмести отдельные участки пола. Требуется предложить вспомогательный алгоритм для этой операции и определить, где его вызывать. Повторяется именно последовательность действий по подметанию, поэтому её можно описать один раз.

  1. Дадим алгоритму имя «Подмести участок».
  2. Запишем в него действия, необходимые для уборки одного участка: взять веник, подмести участок и убрать мусор в совок.
  3. В основном алгоритме уборки поставим вызов «Подмести участок» для каждого участка, который нужно подмести.
  4. Проверим, что вызовов столько, сколько участков, и они стоят до действий, которые должны выполняться после подметания.

Ответ. Вспомогательный алгоритм «Подмести участок» описывает уборку одного участка пола. Его вызывают в основном алгоритме каждый раз, когда нужно подмести очередной участок. Повторно записывать все команды для каждого участка не требуется.

Приготовление бутерброда

Условие. Дан основной алгоритм приготовления бутерброда и вспомогательный алгоритм «Нарезать хлеб». Нужно поставить вызов в правильное место. Чтобы бутерброд можно было собрать, нарезанный хлеб должен быть готов до того, как на него кладут начинку.

  1. Проследим общий порядок: сначала подготавливают хлеб, затем добавляют начинку.
  2. Вызов «Нарезать хлеб» поставим в том месте, где основной алгоритм переходит к подготовке хлеба.
  3. После завершения вызванного алгоритма исполнитель продолжит основной алгоритм со следующей команды.
  4. Проверим результат мысленно: сначала хлеб нарезан, затем выполняются последующие действия с ним.

Ответ. Вызов «Нарезать хлеб» нужно поместить перед командой добавления начинки, в части алгоритма, где подготавливают хлеб. Тогда исполнитель завершит нарезку и вернётся к следующему шагу приготовления. Если поставить вызов после добавления начинки, порядок действий будет нарушен.

Маршрут с одинаковыми участками

Условие. Маршрут состоит из нескольких одинаково устроенных участков. Нужно описать действия на одном участке отдельным алгоритмом и использовать его в основном. Сначала следует определить, какие команды повторяются на каждом участке, а какие относятся ко всему маршруту.

  1. Выделим повторяющиеся действия, например пройти участок до указанного ориентира и повернуть направо.
  2. Назовём вспомогательный алгоритм «Пройти участок» и запишем в него эти команды.
  3. В основном алгоритме перечислим участки маршрута и поставим вызов «Пройти участок» для каждого из них.
  4. Если последний участок требует другого действия, например остановиться у цели, добавим его отдельно в основной алгоритм.

Ответ. Алгоритм «Пройти участок» описывает одинаковые действия на одном отрезке пути. Основной алгоритм вызывает его в нужном порядке для каждого отрезка, а затем выполняет завершающие команды. Так общая последовательность остаётся ясной, а повторяющаяся часть не записывается заново.

Типичные ошибки

Вспомогательный алгоритм иногда принимают за отдельную команду. На самом деле это самостоятельная последовательность действий, а вызов — команда, запускающая её по имени. Путаница возникает потому, что в основном алгоритме вызов записан коротко. Проверьте себя: есть ли у вызванного имени отдельное описание с командами?

Записать вызов, не определив алгоритм, — значит попросить исполнителя выполнить неизвестные действия. Так бывает, когда сначала составляют общий план и забывают описать его части. Проверьте каждое имя вызова: соответствующий алгоритм должен существовать и содержать нужные команды. Если такого описания нет, его нужно составить или исправить вызов.

Вызов, помещённый не в то место, нарушает порядок действий. Например, подготовка продукта после его использования не поможет выполнить задачу правильно. Чтобы не ошибиться, проследите команды основного алгоритма от начала до конца и представьте, что делает исполнитель после каждого вызова. Сравните получившийся порядок с тем, который требуется для решения.

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

Связь с другими темами

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

Что запомнить

  • Вспомогательный алгоритм решает отдельную часть общей задачи.
  • У каждого алгоритма есть имя.
  • Вызов указывает исполнителю, какой алгоритм нужно выполнить.
  • После завершения вспомогательного алгоритма исполнитель возвращается к следующей команде вызвавшего его алгоритма.
  • Основной алгоритм задаёт общий порядок решения.
  • Повторяющиеся действия удобно выделять во вспомогательный алгоритм.

Частые вопросы по теме

Чем вспомогательный алгоритм отличается от основного?

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

Можно ли вызвать один и тот же вспомогательный алгоритм несколько раз?

Да, один алгоритм можно вызывать в разных местах основного или несколько раз подряд. Каждый вызов запускает его команды заново.

Что делает исполнитель после завершения вспомогательного алгоритма?

Он возвращается к алгоритму, из которого был вызов. Затем выполняет команду, расположенную сразу после вызова.

Обязательно ли давать вспомогательному алгоритму имя?

Да, имя нужно, чтобы отличать алгоритм от других и указывать его при вызове. Если имя не задано, исполнитель не поймёт, какую последовательность команд запускать.

Зачем выделять часть действий в отдельный алгоритм, если их можно записать прямо в основном?

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

Спросить по теме параграфа

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

Эта же тема в других учебниках

Учебник

Оглавление →
Предмет
Информатика
Учебник
"Информатика и ИКТ (в 2 частях)", Бененсон Е.П., Паутова А.Г.