Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория 6.doc
Скачиваний:
0
Добавлен:
05.05.2019
Размер:
123.9 Кб
Скачать

4.3. Перегружаемые подпрограммы

В Delphi предусмотрена возможность описания нескольких подпрограмм с одинаковыми именами в одной и той же области видимости. Такие подпрограммы называются перегружаемыми. Аналогичные механизмы присутствуют в большинстве современных языков программирования.

Наличие механизма перегружаемых подпрограмм позволяет реализовы-вать подпрограммы, выполняющие одинаковые действия на основе па­раметров разных типов, что упрощает их вызов, так как отпадает необ­ходимость приведения параметров к конкретным типам данных. Кроме того, перегружаемые подпрограммы могут создаваться не только с пара­метрами разных типов, но и вообще с разным количеством параметров.

Для того, чтобы компилятор мог выбрать правильную подпрограмму из нескольких перегруженных, они должны отличаться так называемой сиг­натурой — последовательностью типов данных в списке параметров. Также перегружаемые подпрограммы должны быть помечены ключевым словом overload. Пример описания и использования перегружаемой подпрог­раммы приведен в листинге 4.9.

Листинг 4.9. Использование перегружаемой подпрограммы

Unit DeclaringOverloads Interface

Function GetName(A:

Implementation

(Заголовок модуля} {Указание на начало интерфейсной секции} Function GetName(S: String): String; overload;

{Заголовок функции GetName с одним строковым параметром} Integer): String; overload;

{Заголовок функции GetName с одним числовым параметром} {Указание на начало описательной секции} Uses

SysUtils; {Подключение модуля SysUtils для

доступа к функции IntToStr}

Function GetName(S: String): String; overload; begin

Result := S;

end; {Описание функции GetName с одним

строковым параметром, в качестве результата возвращается параметр}

Function GetName(A: Integer): String; overload; begin

Result := IntToStr (A) ; {Описание функции GetName с одним числовым параметром, в качестве результата возвращается строковое представление параметра}

end;

End. {Окончание модуля}

4.4. Досрочный выход из подпрограммы

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

Procedure Exit;

Результатом выполнения процедуры Exit будет передача управления от подпрограммы к фрагменту программы, вызвавшему ее. Если Exit вы­зывается в основной части программы, а не в процедуре или функции, то завершится программа.

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