При создании программы решения сложной задачи выполняется декомпозиция (разделение) задачи на подзадачи, а подзадачи – на еще меньшие подзадачи. Каждая подзадача имеет точно определенное функциональное назначение и интерфейс, т.е. описание входных и выходных данных. Представление алгоритма решения задачи ив виде совокупности связанных между собой подзадач обусловливает структуру сложной программы в виде множества взаимосвязанных подпрограмм.
Подпрограмма – это отдельно запрограммированный алгоритм, который могут использовать другие алгоритмы. Подпрограмма является самостоятельной частью программы, имеет свое имя и оформляется в соответствии с правилами синтаксиса языка программирования высокого уровня.
В языке Паскаль существуют два вида подпрограмм: процедуры и функции. Каждая процедура или функция должна быть описана один раз, но может использоваться внутри программы многократно. Описания процедур и функций размещаются в программе после раздела объявления переменных.
Использование подпрограмм позволяет избежать повторений одной и той же последовательности операторов в программе, упростить разработку и отладку больших программ.
Описание процедуры или функции имеет такую же структуру, как и программа на Паскале, и может включать в себя разделы 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 с помощью возвращаемых значений в случае функции.
Рассмотрим подробно все три способа.