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. О Изменены некоторые аспекты согласования формальных и фактических параметров при вызове подпрограмм. |
| Оглавление| |