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

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

"Информатика (базовый уровень)", Семакин И.Г., Хеннер Е.К., Шеина Т.Ю.

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

Кратко о теме

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Разбор задач

Дважды вывести сообщение «Привет!»

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

  1. Создадим подпрограмму с именем Приветствие, в которой запишем команду вывода «Привет!». Это описание задаёт действие, но ещё не запускает его.

  2. В основном алгоритме дважды укажем вызов Приветствие. Каждый вызов передаёт управление подпрограмме и после выполнения возвращает его к следующей команде.

  3. Проверим, что вызовов ровно два, а команда вывода находится внутри описания. Так можно убедиться, что сообщение печатается дважды, хотя команда записана один раз.

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

Вычислить сумму двух чисел с параметрами

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

  1. Опишем подпрограмму Сумма с формальными параметрами a и b. Внутри неё вычислим a + b и предусмотрим передачу результата вызывающей части.

  2. При вызове укажем фактические параметры, например 7 и 5. Они соответствуют формальным параметрам по порядку: a получает 7, а b — 5.

  3. Подпрограмма выполнит вычисление с переданными данными и вернёт результат 12. Для другой пары достаточно изменить фактические параметры, не меняя описание команд.

Ответ. Использовать подпрограмму с формальными параметрами a и b, а конкретные числа передавать при вызове. Значения 7 и 5 дают сумму 12.

Найти наибольшее значение в нескольких парах чисел

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

  1. Опишем функцию Максимум с формальными параметрами x и y. Она сравнивает числа и возвращает большее из них.

  2. Вызовем функцию для первой пары, например Максимум(4, 9). Фактические параметры 4 и 9 соответствуют x и y, поэтому функция вернёт 9.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как понять, какой параметр формальный, а какой фактический?

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

Когда следует использовать функцию, а когда процедуру?

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

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

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

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

Учебник

Оглавление →
Предмет
Информатика
Класс
10 класс
Учебник
"Информатика (базовый уровень)", Семакин И.Г., Хеннер Е.К., Шеина Т.Ю.