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

4.1. Виды подпрограмм: процедуры и функции

Подпрограммы в Delphi, как и в Pascal, представлены процедурами и функциями.

Процедура — это логически законченная часть программы, описываемая отдельно от раздела описания логики программы и вызываемая по ее уникальному имени. Процедуры, так же как и программа, имеют слож­ную структуру, включающую в себя разделы описания переменных, кон­стант, типов, и так далее (все они называются локальными, так как их область видимости ограничена процедурой). Единственное, чем отлича­ется по структуре процедура от программы — в ней нет раздела подклю­чения модулей.

Procedure <Имя>; Заголовок процедуры

Label Раздел описания локальных меток безусловного перехода

Const Раздел описания локальных констант

Type Раздел описания локальных типов данных

Var Раздел описания локальных переменных

Procedure . . . Раздел описания локальных подпрограмм процедур и функций,

Function . . . содержащих некоторые элементы логики процедуры

begin end;

Начало раздела описания логики процедуры

Раздел описания логики процедуры

Конец раздела описания логики процедуры

Функции — это процедуры, которые возвращают значения. Благодаря этому их можно использовать в арифметических или логических выра­жениях, наряду с переменными или константами. Структура функции аналогична структуре процедуры, за исключением заголовка, в котором указывается, значение какого типа возвращает функция. Вместо ключе­вого слова Procedure в описании функций используется ключевое сло­во Function:

Function <Имя функции>: <Тип возвращаемого значения>;

Для указания компилятору, какое именно значение должна возвращать функция, в разделе описания логики функции должно использоваться присвоение следующего вида:

<Имя функции> := <3начение>;

В Delphi предусмотрен еще один механизм возврата значения функции в вызывающую подпрограмму — ключевое слово Result:

Result := <3начение>;

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

Листинг 4.1. Модуль с описанием подпрограмм

Unit Subprograms; (Заголовок модуля содержит название, по которому модуль подключается к программе)

Interface {Начало интерфейсной секции}

Procedure RunMe; (Заголовок процедуры RunMe, которая должна быть реализована в описательной секции и будет доступна в подключающем модуле}

Function GetValue: Integer; (Заголовок функции GetValue, которая должна быть реализована в описательной секции и будет доступна в подключающем модуле)

Implementation {Начало описательной секции)

Procedure RunMe;

begin

{Реализация процедуры RunMe}

end;

RunMe; GetValue;

V := GetValue;

(Вызов процедуры RunMe}

{Вызов функции GetValue без анализа

возвращаемого значения}

{Вызов функции GetValue с занесением

возвращаемого значения в переменную V}

Листинг 4.2. Программа, подключающая модуль и вызывающая его подпрограммы

Uses Subprograms; {Подключение модуля Subprograms) Var

V: Integer; {Описание целочисленной переменной}

Begin

RunMe; GetValue;

V := GetValue;

(Вызов процедуры RunMe}

{Вызов функции GetValue без анализа

возвращаемого значения}

{Вызов функции GetValue с занесением

возвращаемого значения в переменную V}