Библиотечный модуль пользователя.

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

Каждый модуль представлен как минимум одним файлом, носящим имя модуля, – файлом *.pas, в котором хранится создаваемый программистом исходный код. Если модуль является еще и описателем какой-либо формы (модуль формы), то для него автоматически создается еще и файл *.dfm, в котором записаны значения параметров самой формы и компонентов на ней расположенных (кнопки, окна, списки и др.). После компилляции модуля образуется еще один файл - *.dcu, который содержит необходимый для выполнения программы код и именно такой файл требуется для подключения к основной программе, однако такой файл уже непригоден для чтения и редактирования программистом. Так основные стандартные модули со стандартными процедурами и функциями Delphi представлены именно в виде таких файлов. Например, описания компонентов кнопок хранятся в стандартном файле модуля buttons.dcu, который размещен в папке LIB.

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

Для создания нового модуля (без формы) следует выбрать опцию меню File\New и в открывшемся окне выбрать вариант Unit.

Для сохранения кода модуля в виде файла следует выбрать опцию меню File\Save и в открывшемся окне задать имя файла модуля, которое лучше сделать таким же, как и имя самого модуля.

Для подключения модуля к любой другой программной единице (в том числе и другому модулю) следует в разделе uses указать имя требуемого модуля.

Рассмотрим принцип построения модуля.

Заголовок модуля содержит ключевое слово Unit и имя модуля, совпадающее с именем файла модуля. Каждый модуль может состоять из трех секций: секции Интерфейса (Interface), секции Реализации (Implementation) и необязательной секции Инициализации.

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

Секция Реализации (Implementation) позволяет подключить другие требующиеся для выполнения процедур и функций модули. В этой секции описываются данные (типы, константы и переменные), предназначенные для использования только в рамках данного модуля и недоступные (невидимые) для вызывающих модулей (локальные данные), а также приводится текст процедур и функций, объявленных в секции Интерфейса.

Секция Инициализациине имеет своего ключевого слова и начинается со слова Begin, а завершается словом End. Код, записанный между этими программными скобками, предназначен для исполнения при первом же вызове (из какого-либо модуля). Если необходимости в этом нет, то данная секция может отсутствовать.

Приведем пример структуры библиотечного модуля пользователя:

Unit <имя модуля>;

Interface {Секция Интерфейса}

Procedure Integral1(a,b : real; var c : real);

Procedure Summa(d,e : real; var f : real);

Function Integral2(ff,dd : real) : real;

Implementation {Секция Реализации}

Uses <имена подключаемых модулей>

Procedure Integral1(a,b : real; var c : real);

Begin

Текст процедуры

End;

Procedure Summa(d,e : real; var f : real);

Begin

Текст процедуры

End;

Function Integral2(ff,dd : real) : real;

Begin

Текст функции

End;

Begin {Секция Инициализации}

Текст секции Инициализации

End.

Процедуры и функции. Стандартные и пользовательские процедуры и функции.

Общие положения.

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

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

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

Функция аналогична процедуре, но имеются два отличия: функция передает в точку вызова скалярное значение (результат своей ра­боты); имя функции может входить в выражение как операнд. Функция, если она встречается в выражении, называется указа­телем функции или обращением к функции. Все процедуры и функции языка Delphi подразделяются на две группы: встроенные и определенные пользователем.

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

Процедуры и функции пользователя организовываются самим про­граммистом в соответствии с синтаксисом языка и представляют со­бой локальный блок. Предварительное (перед использованием) опи­сание процедур и функций пользователя обязательно.

Наши рекомендации