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

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

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

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

Кратко о теме

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Сравнение основного и вспомогательного алгоритмов

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

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

Разбор задач

Выделить повторяющиеся команды при рисовании квадрата

Условие. В алгоритме рисования квадрата несколько раз встречается последовательность «нарисовать сторону, повернуть на прямой угол». Нужно оформить повторяющуюся часть как вспомогательный алгоритм. Идея решения — найти действие, которое можно назвать и использовать многократно.

  1. Найдём самостоятельный фрагмент: нарисовать одну сторону квадрата и повернуть исполнителя перед следующей стороной.
  2. Дадим фрагменту имя, например «Сторона». Запишем под этим именем команды рисования стороны и поворота.
  3. В основном алгоритме заменим повторяющиеся команды вызовами «Сторона», оставив четыре вызова для четырёх сторон.

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

Нарисовать орнамент из одинаковых квадратов

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

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

Ответ. Основной алгоритм задаёт перемещения и вызывает «Квадрат» в нужных местах. Построение каждой фигуры при этом остаётся одинаковым, потому что его команды собраны в одной подпрограмме.

Построить прямоугольники разных размеров

Условие. Нужно нарисовать несколько прямоугольников с разными длинами и ширинами. Вместо отдельного алгоритма для каждого размера создадим подпрограмму «Прямоугольник» с параметрами длины и ширины. Эти данные определят, насколько длинными будут противоположные стороны.

  1. Опишем подпрограмму, которая получает параметры длины и ширины и строит четыре стороны прямоугольника, чередуя эти значения.
  2. Для первого прямоугольника вызовем её, например, со значениями 4 и 2.
  3. Для следующей фигуры вызовем ту же подпрограмму с другими значениями, например 6 и 3, а затем при необходимости повторим вызов для остальных размеров.

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

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

  • Повторно записывать команды вместо вызова. Так делают, когда ещё не замечают, что один фрагмент используется несколько раз; из-за этого запись становится длиннее и в повторениях легче ошибиться. Проверьте, не встречается ли одинаковая последовательность действий в нескольких местах, и замените её вызовами одной подпрограммы.
  • Не описать подпрограмму заранее или изменить её имя при вызове. Ошибка возникает, если считать, что исполнителю достаточно догадаться, какой фрагмент нужен. Без соответствующего описания или при несовпадении имён он не сможет найти подпрограмму. Сверьте имя в команде вызова с заголовком описания.
  • Считать, что после вызова работа остаётся внутри подпрограммы. Это путают с окончательным переходом, хотя вызов нужен для отдельного действия. После выполнения подпрограммы управление возвращается в основную последовательность. Проверьте, что после вызова можно продолжить алгоритм с нужной команды.
  • Путать параметры с конкретными значениями. Название параметра обозначает данные, которые поступят при запуске, а не заранее выбранное число. Ошибку допускают, когда оставляют параметр без значения или передают неподходящие данные. При каждом вызове проверьте, что значение указано для каждого параметра и соответствует нужному действию.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Учебник

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