На Горох
Информатика, 7 класс

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

"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В.М. Котов, А.И. Лапо, Е.Н. Войтехович

Объяснение темы В оглавлении: 8.4. Вспомогательные алгоритмы

Кратко о теме

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

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

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

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

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

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

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

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

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

Вспомогательному алгоритму дают собственное имя, потому что при вызове нужно однозначно указать, какую последовательность команд выполнить. Имя выбирают по смыслу: например, Приготовить порцию или Убрать стол. Слишком общее имя не помогает понять назначение алгоритма, а разные имена для одного и того же фрагмента могут запутать. Имя вызова должно соответствовать имени описания.

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

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

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

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

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

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

Разбор задач

Несколько одинаковых порций напитка

Условие. Нужно составить алгоритм приготовления нескольких одинаковых порций напитка, каждый раз выполняя один и тот же набор действий. Если записать этот набор отдельно для каждой порции, команды будут повторяться и в них легко допустить различия. Поэтому сначала определим общий фрагмент, который подходит для одной порции.

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

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

Рисование квадрата

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

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

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

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

Условие. Нужно составить алгоритм уборки комнаты, отдельно описав уборку стола и пола. Это разные этапы: у каждого свой набор действий, но общий алгоритм должен задавать, в каком порядке они выполняются. Поэтому здесь полезны два помощника и один основной план.

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

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

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

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

  • Вызывают алгоритм по имени, которого нет в описании. Ошибка возникает, если имя придумали отдельно при записи вызова или написали его по-разному в разных местах. Сверь каждое имя вызова с заголовком соответствующего алгоритма: они должны совпадать.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как понять, какие команды стоит выделить во вспомогательный алгоритм?

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

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

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

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

Учебник

Оглавление →
Предмет
Информатика
Класс
7 класс
Учебник
"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В.М. Котов, А.И. Лапо, Е.Н. Войтехович