Главная » Free Pascal » Модули и объекты Free Pascal

0

Модули в языке Pascal являются базовым средством для создания библиотек подпрограмм и объявления нестандартных типов данных. В отличие от других про- граммных единиц (головная программа, функция или процедура) первая строка модуля начинается с оператора Unit, вслед за которым расположено имя модуля:

Unit file_name;

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

Оформление модуля, как и головной программы, заканчивается оператором end с завершающей точкой. Однако последовательность всех остальных частей модуля жестко фиксирована.

Первая структурная часть модуля начинается со служебного слова INTERFACE. Раздел интерфейса должен содержать заголовки всех процедур и функций, дос- тупных внешнему пользователю. Сюда же могут быть включены общедоступные типы данных, констант и переменных. В некоторых модулях, имеющих специфи- ческое назначение, содержательная часть интерфейса может отсутствовать. Но служебное слово Interface опускать нельзя. Модули подобного типа обычно вы- полняют некоторое нестандартное действие перед запуском программы.

Второй обязательной частью каждого модуля является раздел реализации, на- чалом которого служит служебное слово IMPLEMENTATION. В этом разделе объявля- ются внутренние типы данных, константы и переменные модуля, не доступные внешнему пользователю, приводятся исходные тексты внешних и внутренних про- цедур и функций. Оформление всех процедур и функций в модуле ничем не отли- чается от аналогичных конструкций в головных программах. Содержимое раздела реализации тоже может оказаться пустым, но слово IMPLEMENTATION опускать нель- зя. Такие модули нередко конструируются ради включения в раздел интерфейса полезных типов данных, структур и констант. Например:

Unit Calendar; Interface

type

ShortMonthName = (‘Jan’=1, ‘Feb’, ‘Mar’, ‘Apr’, ‘May’, ‘Jun’, ‘Jul’,

‘Aug’, ‘Sep’, ‘Oct’, ‘Nov’, ‘Dec’); LongMonthName = (‘January’=1, ‘February’, ‘March’, ‘April’, ‘May’,

‘June’, ‘July’, ‘August’, ‘September’, ‘October’,

‘November’, ‘December’);

ShortDayWeek = (‘Mon’=1, ‘Tue’, ‘Wed’, ‘Thu’, ‘Fri’, ‘Sat’, ‘Sun’,); LongDayWeek = (‘Monday’=1, ‘Tuesday’, ‘Wednesday’, ‘Thursday’,

‘Friday’, ‘Saturday’, ‘Sunday’);

Implementation end.

Третьей необязательной частью модуля является раздел инициализации. В ран- них версиях Паскаля началом такой секции считалось служебное слово begin, ко- торое можно было опускать в случае отсутствия раздела инициализации. Основное назначение раздела инициализации — выполнение некоторых действий, предшест- вующих старту головной программы. В разделе инициализации, например, могут открываться какие-то файлы, общедоступным переменным модуля могут присваи- ваться начальные значения, на экран может выдаваться некоторая заставка и т. п. В современных версиях языков Object Pascal и Free Pascal разделу инициализации обычно предшествует новое служебное слово INITIALIZATION.

Заключительная необязательная часть модуля, появившаяся только в последних

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

Источник: Кетков, Ю. Л., Свободное программное обеспечение. FREE PASCAL для студентов и школьников, Ю. Л. Кетков, А. Ю. Кетков. — СПб.: БХВ-Петербург, 2011. — 384 с.: ил. + CD-ROM — (ИиИКТ)

По теме:

  • Комментарии