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