"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо, Ю.А. Быкадоров, Е.Н. Войтехович
Вспомогательный алгоритм — отдельная последовательность команд, которая выполняет часть общей задачи. Его можно описать один раз, а затем вызывать из основного алгоритма столько раз, сколько нужно. Это помогает не повторять одинаковые команды, делает решение понятнее и упрощает проверку. Параметры позволяют применять одну подпрограмму к разным данным, а при вызове ей передают соответствующие аргументы.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Вспомогательный алгоритм — отдельная последовательность команд для выполнения повторяющейся или самостоятельной части задачи. Его используют, чтобы не записывать одни и те же действия заново и сделать решение более понятным. Основной алгоритм может обращаться к нему по мере необходимости.
Подпрограмма — вспомогательный алгоритм, оформленный в программе и вызываемый из другого алгоритма. В ней записывают команды, которые нужно выполнить вместе. Такое оформление позволяет отделить эту часть решения и использовать её в общей программе.
Параметр задаёт данные, с которыми работает вспомогательный алгоритм. Например, для вычисления периметра прямоугольника параметрами могут быть длины его сторон. Благодаря параметрам алгоритм не привязан к одному конкретному набору чисел.
Формальный параметр указан в описании вспомогательного алгоритма, а фактический аргумент передаётся при его вызове. Например, если в описании записаны параметры a и b, при вызове аргументами могут быть числа 4 и 7. Это различие помогает понять, где задаются обозначения данных, а где указываются сами значения.
Сложную задачу удобно разделить на основную и вспомогательные части: основная описывает общий порядок решения, а каждая вспомогательная выполняет отдельную работу. Такое разбиение помогает сосредоточиться на одном действии за раз. Кроме того, части можно проверять отдельно, а значит, ошибку проще найти.
Вспомогательный алгоритм описывают отдельно, чтобы его команды не загромождали основную последовательность. Если одно действие требуется несколько раз, достаточно вызвать уже описанный алгоритм, а не переписывать его команды. Это уменьшает объём записи и снижает вероятность, что в повторяющихся фрагментах случайно появятся различия.
При вызове управление передаётся вспомогательному алгоритму: выполняются его команды, а затем выполнение продолжается в основном алгоритме с места вызова. Поэтому вызов похож на временный переход к нужной части решения и возвращение обратно. Если описание есть, но вызова нет, команды этой части не выполняются.
Параметры нужны, чтобы один алгоритм мог работать с разными исходными данными. Например, подпрограмма вычисления периметра принимает длины сторон и использует их в своих командах, не требуя отдельного описания для каждого прямоугольника. При следующем вызове ей можно передать другую пару значений.
При вызове фактические аргументы сопоставляются формальным параметрам по порядку. Если в описании стоят a и b, то первый аргумент передаётся a, а второй — b. Число и порядок аргументов должны совпадать с параметрами, иначе данные окажутся не на своих местах или вызов будет записан неправильно.
| Признак | Основной алгоритм | Вспомогательный алгоритм |
|---|---|---|
| Роль в решении задачи | Организует решение задачи в целом. | Выполняет отдельную часть общей задачи. |
| Как начинается выполнение | Начинает работу при запуске решения. | Начинает работу при вызове. |
| Как связан с другими частями | Может вызывать вспомогательные алгоритмы. | Вызывается из основного или другого алгоритма. |
| Использование параметров | Передаёт аргументы при вызове подпрограмм. | Может принимать параметры для обработки данных. |
| Что происходит после завершения | Завершается решение задачи. | Управление возвращается к месту вызова. |
Сравнивайте строки таблицы, чтобы отличать роль алгоритма от способа его запуска. Если команды выполняются только после обращения из другой части решения, перед вами вспомогательный алгоритм. Основной алгоритм задаёт общий ход работы и при необходимости использует такие части.
Нужно вывести одинаковый текст два раза. Поскольку команды вывода повторяются, их удобно поместить во вспомогательный алгоритм, а затем вызвать его дважды. Так решение наглядно показывает, где находится повторяющееся действие.
Ответ: алгоритм состоит из подпрограммы Показать и двух её вызовов из основной части. Если оставить только описание подпрограммы, сообщение не появится: для запуска нужен вызов.
Периметр прямоугольника равен удвоенной сумме длин его сторон: P = 2 · (a + b). Чтобы вычислять его для разных прямоугольников, длины a и b зададим как формальные параметры. Тогда подпрограмма будет выполнять одни и те же действия для переданных значений.
Ответ: в обоих случаях используется одна подпрограмма, а периметры равны 16 и 24. Для каждого вызова важно передать два значения в том порядке, в котором параметры записаны в описании.
Для каждого прямоугольника нужно ввести стороны и вывести периметр. Ввод и повторение организуем в основной части, а вычисление периметра оформим отдельно. Тогда одна подпрограмма подойдёт для каждого введённого набора сторон.
Ответ: повторяющиеся ввод и вызовы выполняются в основной части, а вычисление вынесено в подпрограмму. Проверка порядка проста: в вызове первым указывают аргумент для a, вторым — для b; при каждом новом наборе нужны оба аргумента.
Считать вспомогательный алгоритм отдельной задачей, не связанной с основной. Его команды выполняются по вызову и помогают решить общую задачу, а не работают сами по себе. Такое заблуждение возникает, если смотреть только на отдельное описание. Проверьте, кто вызывает алгоритм и какое место его результат занимает в решении.
Описать подпрограмму, но забыть её вызвать. Описание содержит команды, однако оно не запускает их автоматически. Ошибку легко допустить, приняв запись команд за выполнение. Проверьте основную часть: в ней должен быть вызов подпрограммы там, где требуется её работа.
Перепутать формальный параметр и фактический аргумент. Параметр записан в описании, аргумент — в вызове; смешение этих понятий затрудняет проверку передачи данных. Вспомните, что формальное имя обозначает место для данных, а аргумент задаёт значение. Сверьте запись описания и строку вызова.
Передать аргументы в неверном порядке или не в том количестве. При сопоставлении учитываются и количество, и позиция аргументов, поэтому значения могут попасть не к тем параметрам. Это происходит, когда имена параметров не соотносят с порядком данных при вызове. Проверьте, что каждому параметру соответствует один аргумент на его месте.
Для работы с вспомогательными алгоритмами нужно уметь записывать алгоритмы, понимать порядок выполнения команд и пользоваться переменными. Переменные помогают хранить данные, а параметры связывают эти данные с командами подпрограммы. Поэтому полезно сначала уверенно читать последовательности действий и следить за изменением значений.
Разбиение на части понадобится при изучении процедур и функций: это виды подпрограмм, которые выполняют отдельные действия или вычисления. Тот же подход помогает создавать и отлаживать крупные программы. Каждую часть можно проверять отдельно, а затем соединять в общее решение.
Зачем разбивать алгоритм на основную и вспомогательные части?
Так легче понять устройство решения: основная часть задаёт общий ход действий, а вспомогательные выполняют отдельные задачи. Повторяющиеся команды достаточно описать один раз, поэтому меньше риск допустить ошибку.
Чем описание вспомогательного алгоритма отличается от его вызова?
Описание задаёт команды, которые будут выполнены, и, если нужно, параметры. Вызов указывает, когда запустить эти команды, и передаёт им данные; без вызова описание само по себе не выполняется.
Можно ли вызвать один вспомогательный алгоритм несколько раз?
Да, один и тот же вспомогательный алгоритм можно вызвать несколько раз. Если у него есть параметры, при каждом вызове можно передать новые данные.
Чем параметр отличается от аргумента?
Формальный параметр записан в описании вспомогательного алгоритма и обозначает данные, с которыми тот работает. Фактический аргумент указывают при вызове: именно его значение передаётся параметру.
Что произойдёт, если перепутать порядок аргументов?
Аргументы сопоставляются параметрам по порядку, поэтому значения могут попасть не в те переменные. Например, длина первой стороны может быть принята за длину второй, и результат окажется неверным.
6.2. Вспомогательные алгоритмы