"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В.М. Котов, А.И. Лапо, Е.Н. Войтехович
Вспомогательный алгоритм — отдельное описание действий, которые решают часть задачи или повторяются несколько раз. Вместо того чтобы каждый раз записывать одинаковые команды, алгоритму дают понятное имя и вызывают его там, где нужно выполнить эти действия. Основной алгоритм задаёт ход решения целиком, а вызванный алгоритм временно выполняет свою часть. Когда он заканчивается, исполнение возвращается к следующей команде основного алгоритма. Такой способ делает запись короче и помогает делить сложную задачу на понятные части.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Вспомогательный алгоритм — отдельный алгоритм для выполнения самостоятельной или повторяющейся части задачи. Его выделяют, чтобы не описывать одни и те же действия снова и снова. Так решение становится короче, а его части легче проверять и изменять.
Основной алгоритм — алгоритм, который задаёт решение исходной задачи и при необходимости обращается к вспомогательным алгоритмам. Именно в нём виден общий порядок действий. Он помогает понять, какие части решения и когда нужно выполнить.
Вызов вспомогательного алгоритма — команда, указывающая выполнить его действия в определённом месте основного алгоритма. При встрече с такой командой исполнитель переходит к описанию вызванного алгоритма. Вызов нужен, чтобы использовать готовую часть решения без повторной записи всех её команд.
Имя вспомогательного алгоритма — обозначение, по которому алгоритм определяют и вызывают. Имя выбирают понятным, например «НарисоватьСторону», и не используют повторно для другого алгоритма. Тогда по вызову ясно, какие действия предстоит выполнить.
Сложную задачу удобно разделить на несколько частей, потому что каждую из них проще продумать и проверить отдельно. Сначала определяют общий результат, затем выделяют действия, которые решают самостоятельные подзадачи. Если одна и та же последовательность встречается в разных местах, её особенно полезно вынести отдельно. Это уменьшает число повторяющихся команд и упрощает чтение решения.
Чтобы записать вспомогательный алгоритм, сначала выбирают для него имя, которое отражает назначение. Затем под этим именем описывают команды, нужные для выполнения соответствующей части задачи. Отдельное описание можно проверить само по себе: понятно ли, что делает исполнитель и чем заканчивается работа. Ясное имя помогает отличить этот алгоритм от остальных.
В основном алгоритме на нужном месте записывают вызов — имя вспомогательного алгоритма. Исполнитель читает эту команду как указание перейти к отдельному описанию и выполнить его действия по порядку. Поэтому вызов не заменяет команды внутри алгоритма, а связывает общий план с готовой частью решения. Вызов можно поставить там, где результат этой части нужен для продолжения задачи.
Пока выполняется вызванный алгоритм, команды основного алгоритма временно не выполняются. Когда все команды вспомогательного алгоритма завершены, исполнитель возвращается в основное описание. Работа продолжается с команды, стоящей сразу после вызова, а не с начала основного алгоритма. Такой порядок позволяет точно проследить выполнение даже при нескольких вызовах.
Если одинаковые действия нужны несколько раз, достаточно один раз описать их и повторно использовать вызов. Например, вместо четырёх одинаковых групп команд можно записать четыре обращения к алгоритму, выполняющему одну сторону квадрата. При изменении способа рисования исправляют описание стороны, а не каждую копию. Благодаря этому меньше риск пропустить одну из одинаковых команд или внести в копии разные изменения.
| Признак | Основной алгоритм | Вспомогательный алгоритм |
|---|---|---|
| Назначение | Задаёт решение исходной задачи в целом. | Выполняет отдельную часть задачи. |
| Место в решении задачи | Содержит общий порядок действий и вызовы. | Описывает команды, нужные для своей части. |
| Как начинается выполнение | Исполнитель начинает выполнять его по условию задачи. | Начинает выполняться, когда основной алгоритм вызывает его. |
| Как завершается выполнение | После выполнения всех команд решения. | После выполнения собственных команд; затем управление возвращается. |
| Как используется | Может вызывать один или несколько вспомогательных алгоритмов. | Может вызываться в нужных местах основного алгоритма. |
Сравнивайте алгоритмы по их роли: основной описывает общий ход решения, а вспомогательный — отдельную часть. При чтении записи сначала найдите вызовы, а затем проверьте, какое описание за каждым из них стоит. Так таблица помогает не путать общий план с отдельным набором команд.
Нужно начертить четыре равные стороны с поворотом после каждой. Если записать все команды отдельно, последовательность для каждой стороны будет повторяться. Вынесем её в алгоритм с понятным именем.
Ответ: вспомогательный алгоритм «Сторона» вызывается четыре раза, после каждого вызова исполнитель поворачивает на 90°. В описании стороны задаётся нужная длина перемещения. Так повторяющаяся команда записана один раз.
Каждый элемент фигуры строится одинаково, но квадраты располагаются в разных местах. Поэтому удобно разделить описание построения одного квадрата и команды его размещения. Предположим, что нужное место можно достигнуть командами перемещения исполнителя.
Ответ: описание одного квадрата используется многократно, а основной алгоритм отвечает за расположение элементов. Если нужно изменить способ построения квадрата, достаточно изменить вспомогательный алгоритм. Число и места вызовов определяются формой фигуры.
Пусть основной алгоритм содержит команды: «А», «Б», «А», «Б», а «А» и «Б» — имена вспомогательных алгоритмов. Чтобы определить итоговое действие исполнителя, нельзя считать каждое имя обычным действием. Сначала требуется учесть команды, записанные в описаниях А и Б.
Ответ: итоговое действие состоит из команд алгоритмов А, Б, А, Б именно в таком порядке. Для точного результата нужно знать команды внутри каждого описания. Если их записать по порядку, получится полная последовательность действий исполнителя.
Повторяющиеся команды иногда оставляют в основном алгоритме, потому что кажется, будто так проще записать знакомую последовательность. Но длинная запись усложняет проверку, а при изменении действий придётся исправлять каждую копию. Проверьте себя: если одинаковая группа команд встречается несколько раз, можно ли заменить её отдельным описанием и вызовами?
Вызов иногда принимают за само описание вспомогательного алгоритма. Ошибка возникает потому, что в обоих случаях используется его имя, но вызов только указывает, что выполнять, а команды записаны отдельно. Чтобы проверить себя, найдите место, где описаны действия, и убедитесь, что одного имени в основном алгоритме недостаточно для знания этих действий.
После вызова можно по ошибке сразу перейти к следующей команде основного алгоритма. Так происходит, если забыть, что исполнитель сначала должен выполнить вызванную последовательность целиком. Отметьте команды вспомогательного алгоритма до его завершения и только потом возвращайтесь к основной записи. Это помогает восстановить правильный порядок.
Неясное или совпадающее имя затрудняет понимание того, какой алгоритм нужно выполнить. Такие имена выбирают, когда не продумывают назначение описания или используют одно обозначение для разных действий. Проверьте, отражает ли имя задачу и отличается ли оно от имён других алгоритмов. Если по имени трудно догадаться о назначении, лучше выбрать более точное.
Для работы с вспомогательными алгоритмами нужно уметь читать запись алгоритма, отличать отдельную команду от последовательности команд и прослеживать действия исполнителя. Эти умения помогают понять, где начинается вызов и в какой момент выполнение возвращается к основному алгоритму. Вспомогательные алгоритмы особенно полезны в более сложных задачах с повторяющимися частями и подзадачами. Эта тема связана с алгоритмами для исполнителей и подготавливает к изучению процедур и способов структурирования программ.
Зачем выделять часть алгоритма во вспомогательный?
Так проще описать решение по частям и не переписывать одинаковые команды несколько раз. Если действия нужно изменить, достаточно поправить одно описание.
Чем вспомогательный алгоритм отличается от основного?
Основной алгоритм задаёт решение исходной задачи и определяет порядок действий. Вспомогательный выполняет отдельную часть этого решения и запускается по вызову.
Что означает вызов вспомогательного алгоритма?
Это команда с именем алгоритма, которая указывает исполнителю выполнить его действия в данном месте. Само описание команд находится отдельно.
Когда выполнение возвращается к основному алгоритму?
Когда выполнены все команды вызванного алгоритма. Затем исполнитель продолжает с команды, которая стоит сразу после вызова в основном алгоритме.
Можно ли вызвать один вспомогательный алгоритм несколько раз?
Да, один алгоритм можно вызывать столько раз, сколько требуется для решения задачи. Каждый вызов выполняет описанные в нём действия.
9.4. Вспомогательные алгоритмы