Описание подпрограммы
Описание подпрограммы объявляет процедуру или функцию в зависимости от указанного начального зарезервированного слова.
описание-подпрограммы ::= спецификация-подпрограммы;
спецификация - подпрограммы ::= procedure идентификатор [раздел-формальных-параметров] | function обозначение [раздел-формальных-параметров] return обозначение-типа
обозначение ::= идентификатор | знак-операции знак-операции ::= строковый-литерал
раздел-формальных-параметров ::= (спецификация-параметра {; спецификация-параметра})
спецификация-параметра ::= список-идентификаторов : вид обозначение-типа [:= выражение]
вид ::= [in] | in out | out
Спецификация процедуры определяет ее идентификатор и ее
формальные параметры
(если они есть). Спецификация функции определяет ее обозначение, ее формальные параметры (если они есть) и подтип возвращаемого значения (
подтип результата).
Обозначение, являющееся знаком операции, используется для совмещения операций. Последовательность символов, представляющая знак операции, должна представлять операцию, принадлежащую одному из шести классов совмещаемых операций, определенных в разд. 4.5 (пробелы недопустимы, а относительно букв ограничений нет).
Спецификация параметра с несколькими идентификаторами эквивалентна последовательности спецификаций с одним параметром, как поясняется в разд. 3.2. Каждая спецификация одного параметра описывает формальный параметр. Если вид явно не задан, то предполагается вид
in.
Если спецификация параметра оканчивается выражением, то оно является
выражением по умолчанию
формального параметра. Выражение по умолчанию допустимо только в спецификации параметра вида
in
(независимо от явного или неявного его указания). Тип выражения по умолчанию должен совпадать с типом соответствующего формального параметра.
Не допускается использование имени, обозначающего формальный параметр, в выражении по умолчанию, если спецификация этого параметра дана в том же разделе формальных параметров.
Предвыполнение описания подпрограммы предвыполняет соответствующий раздел формальных параметров.
Предвыполнение раздела формальных параметров не дает другого эффекта.
Примеры описания подпрограмм:
procedure TRAVERSE_TREE; procedure INCREMENT(X : in out INTEGER); procedure RIGHTINDENT(MARGIN : out LINESIZE); -- CM. 3.5.4 procedure SWITCH(FROM, TO : in out LINK); -- CM. 3.8.1
function RANDOM return PROBABILITY; -- CM. 3.5.7 function MINCELL(X : LINK) return CELL; -- CM. 3.8.1 function NEXTFRAME(K : POSITIVE) return FRAME; -- CM. 3.8 function DOTPRODUCT(LEFT,RIGHT: VECTOR) return REAL; -- CM. 3.6
function"*"(LEFT,RIGHT : MATRIX) return MATRIX; -- CM. 3.6
Примеры параметров с выражениями по умолчанию:
procedure PRINT_HEADER( PAGES : in NATURAL; HEADER : in LINE := (1 .. LINE'LAST => ' '); -- CM. 3.6 CENTER : in BOOLEAN := TRUE);
Примечание.
Вычисление выражений по умолчанию начинается при определенных вызовах подпрограмм, как пояснено в разд. 6.4.2 (выражения по умолчанию не вычисляются при предвыполнении описания подпрограммы).
Все подпрограммы могут быть вызваны рекурсивно и являются реентерабельными.
Ссылки:
вид 6.2, вызов подпрограммы 6.4, выражение 4.4, вычисление 4.5, идентификатор 2.3, имя 4.1, обозначение типа 3.3.2, операция 4.5, описание 3.1, Предвыполнение 3.9, пред-выполнение не имеет другого эффекта 3.9, процедура 6, совмещение 6.6, 8.7, список идентификаторов 3.2, строковый литерал 2.6, формальный параметр 6.2, функция 6.5.
Пред. | Уровень выше | След. |
5.9. ОПЕРАТОРЫ ПЕРЕХОДА |
Содержание | 6.2. ВИДЫ ФОРМАЛЬНЫХ ПАРАМЕТРОВ |