Функция — разновидность подпрограммы, которая возвращает значение результата.
Спецификация функции имеет вид
function <ИмяФункции> (<СписокФормальныхПараметров>)
return <ТипРезультата>;
Список формальных параметров объявляет аргументы, которые принимает функция. Элементы списка отделяются друг от друга точкой с запятой. Каждый элемент (формальный параметр) записывается в виде
<ИмяПеременной>:<ТипДанных>:= <ЗначениеПоУмолчанию>
Значение по умолчанию может не задаваться.
Пример спецификации:
function Box_Area (Depth: Float; Width: Float) return Float;
Тело функции включает спецификацию функции, объявления локальных переменных и констант, а также раздел исполняемых операторов. В общем случае тело функции имеет вид
function <ИмяФункции> (<СписокФормальныхПараметров>)
return <ТипРезультата> is
<объявления локальных переменных и констант>
begin
<операторы>
return <результат>; -- оператор возврата результата
end <ИмяФункции>;
Пример тела функции:
function Box_Area (Depth: Float; Width; Float) return Float is
|
|
Result: Float;
begin
Result:= Depth * Width;
return Result: -- возврат вычисленного значения
end Box_Area;
Описание тела функции само по себе действий не производит. Для выполнения функции необходимо ее вызвать. Чтобы вызвать функцию, записывают ее имя и список фактических параметров, запись помещается в правую часть оператора присваивания:
<ИмяПеременной>:= <ИмяФункции> (<СписокФактическихПараметров>);
Таким образом, вызов функции является элементом выражения. Фактические параметры в списке вызова отделяются друг от друга запятой.
Пример вызова:
Му_Вох:= Вох_Агеа (2.0. 4.15);
Фактические параметры задают фактические значения, то есть значения, обрабатываемые при выполнении функции.
Процедуры
Процедуры, в отличие от функций, не возвращают результат в точку вызова. Спе цификация процедуры задает минимальный набор сведений, необходимый для клиентов процедуры. Она имеет вид
procedure <ИмяПроцедуры> (<СписокФормальныхПараметров>);
Для записи каждого формального параметра принят следующий формат:
<Имя>: <Вид> <Тип данных>;
где <Вид> указывает направление передачи информации между формальным и фактическим параметрами (in — передача из фактического в формальный параметр, out — из формального в фактический параметр, in out — двунаправленная передача).