Язык:
Русский
English
function (зарезервированное слово)
Функция - это часть программы, которая вычисляет и возвращает значение.
Синтаксис
function идентификатор : тип;
или
function идентификатор (параметры) : тип;
Замечания
Заголовок функции определяет идентификатор функции, формальные параметры (если есть), и тип результата функции.
Допустимы порядковые, вещественные, строковые и указательные типы результата.
Функция вызывается при оценке выражения, использующего данную функцию.
Заголовок функции сопровождается:
■ Разделом описаний, в котором объявляются локальные объекты
■ Операторной частью, в которой находятся операторы, которые
будут выполнены при вызове функции
Операторная часть должна содержать по крайней мере один оператор, который присваивает значение идентификатору функции. Результатом функции будет последнее присвоенное значение.
Вместо частей объявлений и операторной, объявление функции может содержать директивы forward, external, far или inline.
Пример
(* Объявление функции *)
function UpCaseStr(S : String) : String;
var I : Integer;
begin
for I := 1 to Length(S) do
if (S[I] >= 'a') and (S[I] <= 'Z') then
Dec(S[I], 32);
UpCaseStr := S;
end;
Ада
-- Объявление функции
function Up_Case_Str (S : String) return String is
begin
return Res : String := S do
for i in S'Range loop
Res (i) := To_Upper (Res (i)); -- из пакета Ada.Characters.Handling
end loop;
end return;
end Up_Case_Str;
Типу результата предшествует "return", а не двоеточие. На тип результата функции жёстких ограничений нет. Тип результата может быть недоопределённым, составным, ограниченным. Зато есть ограничение на режимы параметров. Параметры не могут быть доступны для записи (но могут быть указательного типа).
Возврат результата осуществляется с помощью оператора "return". "return" имеет две формы : простой и расширенный. Простой "return" - это "return выражение;", расширенный - это как на примере. Внутри блока return-do-end семантика результата аналогична Borland Pascal: результатом вызова функции становится последнее значение этой переменной. В Borland Pascal переменную результата нельзя читать, ей можно только присваивать, в языке Ада к переменной результата можно делать произвольные обращения.
В зависимости от того, последует за заголовком тело или нет, после заголовка пишется "is" или точка с запятой. Поэтому в языке Ада директива forward не нужна. Вместо директивы external в языке Ада используется pragma Import. Директива far специфична для DOS. Вместо inline есть полноценные ассемблерные шаблоны.