Процедуры и функции

 

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

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

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

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

Описание процедуры или функции имеет такую же структуру, как и программа на Паскале, и может включать в себя разделы Label, Const, Type, Var, Procedure, Function и раздел операторов. Любой из разделов, кроме раздела операторов, может отсутствовать. Процедуры и функции могут включать в себя другие, внутренние процедуры и функции.

Описание процедуры имеет следующий вид:

Procedure <имя> (<список формальных параметров>);

Label

Const разделы описаний меток, констант, типов,

Type переменных

Var

Procedure разделы описаний внутренних

Function процедур и функций

 

Begin

<операторы>

end;


Описание функции имеет следующий вид:

Function <имя> (<список формальных параметров>): <тип результата>;

Label

Const разделы описаний меток, констант, типов,

Type переменных

Var

Procedure разделы описаний внутренних

Function процедур и функций

 

Begin

<операторы>

end;

Описание процедуры или функции завершается точкой с запятой.

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

<имя функции>:=<выражение>;

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

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

o с помощью глобальных переменных;

o с помощью списка формальных параметров;

o с помощью возвращаемых значений в случае функции.

Рассмотрим подробно все три способа.