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

18.2. Использование вспомогательных алгоритмов

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

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

Кратко о теме

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

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

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

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

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

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

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

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

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

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

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

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

Параметры связывают общий алгоритм с конкретными данными. В описании указывают, какие данные нужны, а при вызове передают фактические значения или переменные. Например, функция сравнения может иметь два параметра; при одном вызове ей передают числа 4 и 7, при другом — 12 и 9. Алгоритм остаётся тем же, меняются только данные, с которыми он работает.

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

Сравнение основной программы, процедуры и функции

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

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

Разбор задач

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В чём практическая разница между процедурой и функцией?

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

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

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

Зачем нужны параметры при вызове процедуры или функции?

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

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

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

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

18.2. Использование вспомогательных алгоритмов

Учебник

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