Основы Ada 95 - Процедуры |
Страница 7 из 11
Процедуры
Процедуры, в отличие от функций, не возвращают результат в точку вызова. Спе цификация процедуры задает минимальный набор сведений, необходимый для клиентов процедуры. Она имеет вид procedure <ИмяПроцедуры> (<СписокФормальныхПараметров>); Для записи каждого формального параметра принят следующий формат: <Имя> : <Вид> <Тип данных>; где <Вид> указывает направление передачи информации между формальным и фактическим параметрами (in — передача из фактического в формальный параметр, out — из формального в фактический параметр, in out — двунаправленная передача).
ПРИМЕЧАНИЕ Пометку in разрешается не указывать (она подразумевается по умолчанию), поэтому в спецификации функции вид параметра отсутствует. Для формального параметра вида in разрешается задавать начальное значение, присваиваемое по умолчанию.
Пример спецификации: procedure Sum ( Opl : in Integer := 0; Op2 : in Integer := 0; Op3 : in Integer := 0: Res : out Integer ); Тело процедуры в общем случае имеет вид procedure <ИмяПроцедуры> (<СписокФормальныхПараметров>) is <объявления локальных переменных и констант> begin <операторы> end <ИмяПроцедуры>; Пример тела: procedure Sum ( Opl : in Integer := 0; Op2 : in Integer := 0; Op3 : in Integer := 0: Res : out Integer ) is begin Res := Opl + Op2; Res := Res + Op3; end Sum; В данной процедуре три формальных параметра имеют значения по умолчанию. Это дает интересные возможности. Обращаются к процедуре с помощью оператора вызова, он имеет вид <ИмяПроцедуры> (<СписокФактическихПараметров>); Примеры операторов вызова: Sum (4. 8, 12. d); -- переменная d получит значение 24 Sum (4. 8. Res => d); -- переменная d получит значение 12
ПРИМЕЧАНИЕ В первом операторе вызова задано 4 фактических параметра, во втором операторе — 3 фактических параметра. Во втором операторе использованы как традиционная (позиционная) схема, так и именная схема сопоставления формального и фактического параметров.
|