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

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

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

Procedure <Имя> (<Список формальных параметров>);

{Заголовок процедуры}

Label

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

Const

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

Type

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

Var

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

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

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

Procedure <Имя> (<Список формальных параметров>);

< Тело процелуры>;

Function <Имя> (<Список формальных параметров>):

<Тип возвращаемого значения>;

< Тело функции>;

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

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

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

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

Function <Имя функции> (<Список формальных параметров>):

<Тип возвращаемого значения>;

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

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

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

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

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

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

Unit SubPrograms; {Заголовок модуля содержит название, по которому

модуль подключается к вызывающей программе}

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

Procedure RunMe; {Заголовок процедуры RunMe, которая должна быть

реализована в описательной секции модуля и будет доступна в

подключающей модуль программе}

Function GetValue: Integer; {Заголовок функции GetValue, которая

должна быть реализована в описательной секции модуля и

будет доступна в подключающей модуль программе}

Implementation {Начало описательной секции модуля}

Procedure RunMe;

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

end;

Function GetValue: Integer;

Begin {Реализация функции GetValue, функция возвращает значение 158}

Result := 158;

end;

end. {Конец модуля}

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

Program MyProg; {Начало программы]

Uses SubPrograms; {Подключение модуля SubPrograms}

Var

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

Begin

RunMe; {Вызов процедуры RunMe из модуля SubPrograms}

GetValue; {Вызов функции GetValue из модуля SubPrograms без анализа

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

V := GetValue; {Вызов функции GetValue из модуля Subprograms с

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

End. {Конец программы}

еще рефераты
Еще работы по информатике