в чем особенность подпрограмм функций
Лекция 5. Подпрограммы: процедуры и функции.
Посмотрите начальные сведения о функциях
В этой лекции мы рассмотрим создание и применение пользовательских подпрограмм: функций и процедур. Подпрограммы разрабатываются, чтобы не писать многократно один и тот же текст, когда в программе встречаются повторяющиеся действия. Кроме того, использование подпрограмм повышает наглядность текста программ (если имена подпрограмм легко понять).
Структура подпрограмм
Функции имеют такой же формат, как и процедуры, только они начинаются с заголовка function и заканчиваются типом данных возвращаемого значения:
function имя функции (параметры): тип данных;
Мы видим, что структура подпрограмм практически повторяет структуру главной программы. Имеются только два различия между главной программой и подпрограммами:
— процедуры и функции имеют заголовок procedure или function, соответственно, а не program;
— процедуры и функции заканчиваются точкой с запятой (;), а не точкой (.).
В теле подпрограммы НЕ рекомендуется использовать глобальные идентификаторы, а пользоваться только локальными и параметрами. Тогда подпрограмму несложно использовать и в других программах, так как обмен данными с главной программой происходит только через параметры, а они «все на виду».
ПАРАМЕТРЫ подпрограмм
В отличие от параметров-значений ПАРАМЕТРЫ-ПЕРЕМЕННЫЕ описываются начиная с var. Например, заголовок процедуры, вычисляющей гипотенузу, может выглядеть так:
procedure hypot(a,b: real; var c: real);
Исполнение подпрограмм
Простой пример программы можно увидеть здесь.
Подробнее о подпрограммах можно прочесть в Руководстве программиста, гл.8 «Процедуры и функции» (справочник-задачник).
Рекурсивные процедуры и фунции.
В ТПас7 и Делфи можно использовать рекурсивные подпрограммы. Использование рекурсии (там, где это возможно по условиям задачи) облегчает программирование и сокращает текст проргаммы. Однако при каждом рекурсивном вызове расходуется память (подпрограммы размещаются в стеке). Поэтому нужно не допускать переполнения стека. Объем памяти стека регулируется в настройках компилятора.
Пример программы: вычисление факториала ( рекурсия ).
Pascal | Лекция №6
Подпрограммы. Процедуры и функции
СОДЕРЖАНИЕ:
Подпрограммы (см. Рапаков стр.143-157!)
Понятие подпрограмма встречается во многих языках программирования, т.к. является основным средством структурирования языка. Очень часто в программах встречаются однотипные участки, которые выполняют одни и те же вычисления с различными данными. Такие части программ целесообразно выполнять с помощью подпрограмм.
Использование подпрограмм позволяет:
Таким образом, подпрограмма – это часть операторов программы, выделенных в группу, оформленную в виде отдельной конструкции.
Вызов подпрограммы, т.е. выполнение действий, заданных в подпрограмме, может быть произведен в некоторой точке программы посредством указания имени этой подпрограммы.
Структура подпрограмм
Структура подпрограмм почти в точности повторяет структуру всей Pascal-программы.
При описании подпрограммы в общем случае необходимо задать три основные компоненты:
Интерфейс подпрограммы содержится в заголовке и говорит о том, что именно делает подпрограмма.
Две остальные компоненты называются телом подпрограммы и содержат информацию о том, как выполняется подпрограммой то, что описано в ее заголовке.
В языке Pascal выделяют два вида подпрограмм: процедуры и функции. Различия процедур и функций заключается в назначении и способе их использования.
Функции нужны для вычисления нового значения некоторого выражения, и вызов функции должен быть операндом в выражении.
Процедуры служат для задания последовательности действий и определения новых значений переменных в программе. Вызов процедуры играет роль оператора.
Описание процедур и функций. Формальные параметры
Описание процедур и функций в общем виде:
Тело подпрограммы – это блок, состоящий из двух частей: описание объектов и группа операторов. Более полный общий вид процедуры (общий вид функции отличается только заголовком):
Здесь — имя процедуры.
Раздел описаний, как и в основной программе, может включать разделы Label, Const, Type, Var и раздел процедур и функций.
Формальные параметры представляют собой список переменных с указанием их типа, которые отделяются друг от друга «;». Эти переменные не описываются в разделе описания процедур. Допускается использование процедур без параметров.
Если в качестве параметров используется массив, то предварительно нужно описать имя типа массива в разделе Type, а затем использовать это имя при описании массива в качестве формального параметра.
Параметры процедур бывают двух типов:
Описание входных параметров процедуры в списке формальных параметров имеет также вид:
Список переменных1: тип1; список переменных2: тип2;
Соответственно описание выходных параметров выглядит следующим образом:
Var Список переменных1: тип1; Var список переменных2: тип2;
Вызов процедуры в основной программе имеет следующий вид:
(список фактических параметров);
Фактические параметры перечисляются через запятую, без указания их типа. Идентификаторы формальных параметров можно считать условными обозначениями в теле подпрограммы тех реальных, фактических параметров, с которыми будет вызвана подпрограмма. При этом должны выполняться требования:
Имена соответствующих фактических и формальных параметров могут быть одинаковыми или разными.
Входными фактическими параметрами могут быть константы, переменные или выражения, выходными фактическими параметрами могут быть только переменные.
Другой вид подпрограммы в языке Турбо-Паскаль – функция – оформляется аналогично процедуре и отличается от нее по структуре только заголовком, общий вид которого выглядит следующим образом:
Function (список формальных параметров): тип;
Функции имеют несколько отличительных особенностей:
Область действия имен
Переменные, представленные в разделе описания основной программы, могут быть использованы в теле основной программы и в любой ее подпрограмме. Эти переменные называются глобальными.
Переменные, описанные в подпрограмме, действуют только в теле данной подпрограммы и в любой, объявляемой внутри нее, подпрограмме. Такие переменные называются локальными. Они недоступны для операторов основной программы и др. подпрограмм.
Наглядно схему программы, имеющей некоторые вложенные подпрограммы, можно представить следующим образом:
Самый внешний блок программы обозначен буквой A (имена этого блока «видны» во всех остальных блоках), B и D – подпрограммы, описанные во внешнем блоке, C – подпрограмма, описанная в блоке B (объекты этого блока известны только внутри самого блока).
При написании программ, имеющих вложенные подпрограммы, необходимо соблюдать следующие правила:
Использование процедур и функций на примере
Пример 1: вычислить площадь выпуклого четырехугольника
В результате выполнения данной программы на экран будет выведено: