Ада-95. Компилятор GNAT

         

Функции


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

Общий вид описания функции выглядит следующим образом:

function имя_функции [ (формальные_параметры) ] return тип_возвращаемого_значения ; спецификация функции, определяющая имя функции, профиль ее формальных параметров (если они есть) и тип возвращаемого значения

Общий вид тела функции:



function имя_функции [ (формальные_параметры) ] return тип_возвращаемого_значения is    спецификация функции, определяющая имя функции, профиль ее формальных параметров (если они есть) и тип возвращаемого значения
      
. . .   описательная (или декларативная) часть, которая может содержать локальные описания типов, переменных, констант, подпрограмм...
      
begin     
. . .    исполнительная часть функции, которая описывает алгоритм работы функции;

обязана содержать хотя бы одну инструкцию возврата значения - return

      
end [ имя функции ];    здесь, указание имени функции опционально

Использование инструкции возврата значения - return

очень похоже на то, что используется в языке Си, при этом, функция может иметь сколько угодно инструкций возврата значения.

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

Хотя режимы передачи параметров в подпрограммы будут подробно рассмотрены несколько позже, здесь, необходимо сделать несколько важных замечаний, которые имеют значение для функций Ады.

Согласно традиций стандарта Ada83, для передачи параметров в функцию разрешается использовать только режим "in".

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

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

Таким образом, в отличие от традиций языка Си, функции Ады не обладают побочными эффектами.

Стандарт Ada95 ввел новый режим для передачи параметров - access.

Этот режим разрешается использовать для передачи параметров в функции.

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



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