Введение в программирование - Учебное пособие (Корочкин А. В.)

7.5 функции

В отличие от процедуры функция вырабатывает некоторое значение, называемое результатом вызова процедуры. Кроме того, если вызов процедуры является самостоятельным оператором, то вызов функции выполняется обязательно в выражении. Если сравнивать процедуры и функции, то основные различия заключаются в следующем:

• функция всегда при вызове возвращает только одно значение; проце­дура - любое количество значений, в том числе и ни одного;

• обязательно присутствие слова return в спецификации функции;

• наличие в теле функции одного или нескольких операторов return, которые с помощью последующего за ним выражения определяют ре­зультат, возвращаемый функцией;

• спецификация функции начинается со слова function. Спецификация функции:

FUNCTION     Имя_Функции       RETURN      Тип_Резулътата   ;

Тело функции: FUNCTION          Имя_Фунщш        RETURN

Тш_Результата      IS

- -  Локальные_Описания BEGIN

- -  Последовательность_Операторов

--  RETURN    Выражение [ EXCEPTION

- -   Обработчики _Исключений 

68

Ада 95. Введение в программирова!

END    Имя_Функции

В качестве имени функции можно использовать обозначение опера­ции, например, "+" или "<". D   Пример: Спецификация и тело функции.

- - спецификация  функции

function   Max (А, В :     Data)     return     Data ;

- - тело   функции

function   Мах (А, В :     Data)     return     Data    is

С :     Data : = 0.0; begin

if   A>B  then C:=A;

else

С : = В ;

end   if;

return   С; end   Max;

Ш  СОВЕТЫ:

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

Минимизируйте количество операторов   return в теле функции. Используйте неограниченные массивы в формальных параметрах , имеющих тип массивов.

Делайте размеры локальных переменных в теле подпрограммы за-висящимим от фактиче ских параметров.

ИЗМЕНЕНИЯ:

О Тело подпрограммы может быть получено с помощью операции переименования.

О Подпрограмма может быть описана как абстрактная. О Улучшен механизм работы с параметрами и результатами подпро­грамм.

 

69

Глава 7. Подпрограммы

О Изменены правила работы с параметрами вида out. О Изменены некоторые аспекты согласования формальных и фактиче­ских параметров при вызове подпрограмм.