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

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

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

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

Кратко о теме

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

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

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

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

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

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

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

Формальный параметр указан в описании вспомогательного алгоритма, а фактический аргумент передаётся при его вызове. Например, если в описании записаны параметры a и b, при вызове аргументами могут быть числа 4 и 7. Это различие помогает понять, где задаются обозначения данных, а где указываются сами значения.

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

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

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

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

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

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

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

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

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

Разбор задач

Дважды вывести одно и то же сообщение

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

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

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

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

Периметр прямоугольника равен удвоенной сумме длин его сторон: P = 2 · (a + b). Чтобы вычислять его для разных прямоугольников, длины a и b зададим как формальные параметры. Тогда подпрограмма будет выполнять одни и те же действия для переданных значений.

  1. Создадим подпрограмму Периметр(a, b). В её теле вычислим P = 2 · (a + b) и выведем полученный результат.
  2. Для прямоугольника со сторонами 3 и 5 вызовем Периметр(3, 5). Число 3 передастся параметру a, а число 5 — параметру b.
  3. Для другого прямоугольника со сторонами 4 и 8 вызовем Периметр(4, 8). Подпрограмма выполнится повторно уже с новым набором данных.

Ответ: в обоих случаях используется одна подпрограмма, а периметры равны 16 и 24. Для каждого вызова важно передать два значения в том порядке, в котором параметры записаны в описании.

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

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

  1. Опишем Периметр(a, b): она вычисляет P = 2 · (a + b) и выводит P. Параметр a предназначен для первой стороны, b — для второй.
  2. Для каждого прямоугольника основной алгоритм вводит x и y, затем вызывает Периметр(x, y). Первый введённый размер передаётся a, второй — b.
  3. После завершения подпрограммы управление возвращается к основной части. Она продолжает обработку следующего прямоугольника и повторяет ввод и вызов для новой пары значений.

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

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

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

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

Перепутать формальный параметр и фактический аргумент. Параметр записан в описании, аргумент — в вызове; смешение этих понятий затрудняет проверку передачи данных. Вспомните, что формальное имя обозначает место для данных, а аргумент задаёт значение. Сверьте запись описания и строку вызова.

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

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

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

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

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

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

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

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

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

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

Описание задаёт команды, которые будут выполнены, и, если нужно, параметры. Вызов указывает, когда запустить эти команды, и передаёт им данные; без вызова описание само по себе не выполняется.

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

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

Чем параметр отличается от аргумента?

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

Что произойдёт, если перепутать порядок аргументов?

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

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

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

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

Учебник

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