Руководство по языку B.Pascal 7

       

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


Процедуры и функции позволяют включать в основной программ- ный блок дополнительные блоки. Каждое описание процедуры или функции содержит заголовок, за которым следует программный блок. Процедура активизируется с помощью оператора процедуры. Функция активизируется при вычислении выражения, содержащего вызов функ- ции, и возвращаемое функцией значение подставляется в это выраже- ние.

Примечание: Определение блока вы можете найти в Главе 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;



Содержание раздела