Процедуры и функции
Процедуры и функции позволяют включать в основной программ- ный блок дополнительные блоки. Каждое описание процедуры или функции содержит заголовок, за которым следует программный блок. Процедура активизируется с помощью оператора процедуры. Функция активизируется при вычислении выражения, содержащего вызов функ- ции, и возвращаемое функцией значение подставляется в это выраже- ние.
Примечание: Определение блока вы можете найти в Главе 8 "Блоки, локальность и область действия".
В данной главе обсуждаются различные способы описания проце- дуры или функции и их параметры.
Описания процедур -----------------------------------------------------------------
Описание процедуры позволяет связать идентификатор с проце- дурным блоком. Процедуру можно затем активизировать с помощью оператора процедуры.
---------- ---- ------------- ---- описание --->¦заголовок+-->¦ ; +-->¦ тело +-->¦ ; +--> процедуры ¦процедуры¦ L---- ¦подпрограммы¦ L---- L---------- L-------------
---------- -------------- заголовок -->¦procedure+-T>¦идентификатор+-- процедуры L---------- ¦ L-------------- ^+------------------> ¦ -------------- ¦¦ ----------- ^ ¦ ¦ уточненный ¦ ¦¦ ¦ список ¦ ¦ L>¦идентификатор+--L->¦формальных+-- ¦ метода ¦ ¦параметров¦ L-------------- L-----------
------- блок ---T------------------------------T-->¦модуль+--------> подпрограммы¦ ---------- ---- ^ ¦ L------- ^ +-->¦ near +----->¦ ; +---- ¦ -------- ¦ ¦ L---------- ^ L---- ¦-->¦forward+---+ ¦ ---------- ¦ ¦ L-------- ¦ +-->¦ far +--+ ¦ ---------- ¦ ¦ L---------- ¦ ¦-->¦директива+-+ ¦ ---------- ¦ ¦ ¦ external¦ ¦ +-->¦ export +--+ ¦ L---------- ¦ ¦ L---------- ¦ ¦ --------- ¦ ¦ ---------- ¦ L-->¦блок asm+--+ +-->¦interrupt+--- L--------- ¦ ¦ L---------- ---------- ¦ L--------------------------------->¦директива+-- ¦ inline ¦ L----------
Заголовки процедур именуют идентификаторы процедур и задают формальные параметры (если они имеются).
Примечание: Синтаксис списка формальных параметров по- казан далее в этой главе в разделе "Параметры".
Процедура активизируется с помощью оператора процедуры, в котором содержатся имя процедуры и необходимые параметры. Опера- торы, которые должны выполняться при запуске процедуры, содержат- ся в операторной части модуля процедуры. Если в содержащемся в процедуре операторе внутри модуля процедуры используется иденти- фикатор процедуры, то процедура будет выполняться рекурсивно (бу- дет при выполнении обращаться сама к себе).
Приведем пример описания процедуры:
procedure NumString(N: integer; var S: string); var V: integer; begin V := Abs(N); S := ''; repeat S := Chr(N mod 10 + Ord('0')) + S; N := N div 10; until N = 0; if N < 0 then S := '-' + S; end;