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

§ 4. Структурирование программ. Подпрограммы

"Информатика (в 2-х частях)", Горячев А.В., Герасимова В.Г., Макарина Л.А., Островский С.Л., Паволоцкий А.В., Семёнов А.А., Юдина А.Г., Чернышёва Т.Л.

Объяснение темы В оглавлении: § 4. Структурирование программ. Подпрограммы

Кратко о теме

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Чем процедура отличается от функции

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

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

Разбор задач

Вывод сообщения «Привет!»

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

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

Ответ: описание процедуры задаёт команду вывода, а два вызова запускают её дважды. На экране появятся две строки «Привет!». Если только описать процедуру и не вызвать её, сообщение не появится.

Вычисление площади прямоугольника

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

  1. Выбираем функцию, потому что требуется получить числовое значение площади, а не только выполнить действие.
  2. В описании функции задаём параметры длина и ширина. Алгоритм умножает их: S = длина · ширина, а найденное значение возвращает как результат функции.
  3. При вызове передаём функции конкретные значения, например 5 и 3. Результат можно сохранить в переменной или сразу вывести; при этих данных площадь равна 15.

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

Площади и периметры нескольких прямоугольников

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

  1. Определяем, какие действия повторяются: для каждой пары длины и ширины нужно найти площадь и периметр. Для вычислений выбираем функции, потому что они должны возвращать результаты.
  2. Создаём функцию площади с параметрами длина и ширина, вычисляющую S = длина · ширина. Создаём функцию периметра с такими же нужными параметрами, вычисляющую P = 2 · (длина + ширина).
  3. В основной части для каждого прямоугольника вызываем обе функции и сохраняем результаты. Вывод результатов можно оформить отдельной процедурой, если нужно повторять один и тот же набор команд вывода.
  4. Передаём каждой подпрограмме только необходимые ей данные: функции площади и периметра нужны длина и ширина. Так параметры соответствуют задаче, а вычисления не смешиваются с организацией ввода и вывода.

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

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

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

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

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

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

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

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

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

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

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

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

Чем процедура отличается от функции?

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

Что такое параметры и где указывают передаваемые значения?

Параметры — переменные или значения, через которые подпрограмма получает исходные данные или передаёт результат. Их имена указывают в описании, а конкретные значения или переменные передают при вызове.

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

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

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

§ 4. Структурирование программ. Подпрограммы

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

Учебник

Оглавление →
Предмет
Информатика
Класс
8 класс
Учебник
"Информатика (в 2-х частях)", Горячев А.В., Герасимова В.Г., Макарина Л.А., Островский С.Л., Паволоцкий А.В., Семёнов А.А., Юдина А.Г., Чернышёва Т.Л.