Функции
Функции во многом подобны процедурам, за исключением того, что они возвращают значение в вызвавшую их подпрограмму. Также можно сказать, что функция - это подпрограмма которая осуществляет преобразование одного или нескольких входных значений в одно выходное значение.
Общий вид описания функции выглядит следующим образом:
|
Общий вид тела функции:
|
Использование инструкции возврата значения - return
очень похоже на то, что используется в языке Си, при этом, функция может иметь сколько угодно инструкций возврата значения.
Функция может быть вызвана как часть выражения в инструкции присваивания или как аргумент соответствующего типа при вызове другой функции или процедуры. Другими словами - функция, возвращающая значения заданного типа, может быть использована везде, где может быть использована переменная этого типа.
Хотя режимы передачи параметров в подпрограммы будут подробно рассмотрены несколько позже, здесь, необходимо сделать несколько важных замечаний, которые имеют значение для функций Ады.
Согласно традиций стандарта Ada83, для передачи параметров в функцию разрешается использовать только режим "in".
Поэтому, функция, через свои параметры, может только импортировать данные из среды вызвавшей эту функцию.
При этом, параметры функции не могут быть использованы для изменения значений переменных в среде вызвавшей функцию.
Таким образом, в отличие от традиций языка Си, функции Ады не обладают побочными эффектами.
Стандарт Ada95 ввел новый режим для передачи параметров - access.
Этот режим разрешается использовать для передачи параметров в функции.
Следует заметить, что использование этого режима допускает написание функций обладающих побочными эффектами.