Введение в программирование. Сортировка массива. Средства создания программ. Стандартные модули. Структурированные типы данных, страница 8


 15.МОДУЛИ (м). Модуль – автономно компилируемая программная ед-ца, включающая в себя различные компоненты разделы описаний: типы, константы, переменные, процедура, функции и некоторые исполняемые операторы, инициирующие части. М-и представляют собой инструмент для разработки библиотек прикладных программ и средства модульного программирования. Принцип модульного (м-го) програмиров-я заключается в том, что исходная задача разбивается на более простые подзадачи. Это разбиение делается так, чтобы в кач-ве подзадач фигурировали уже готовые, разработанные ранее программы. Компилятор турбопаскаль размещает програмный код м-ей в отдельный сегмент памяти. Кол-во одновременно используемых м-ей ограничив-ся только доступной помятью, что позволяет создавать очень большие программы. Отдельные м могут разрабатываться различными программистами, что позволяет использовать современные методы, технологии програмиров-я.

16. СТРУКТУРА МОДУЛЯ:

Unit <имя>;

Interface <интерфейсная часть>;

Implementation < исполняемая часть>;

Begin<инициирующая часть>;

End.

Unit – зарезервиров-е слово, в переводе ед-ца. Начинает заголовок м, к-й содержит кроме unit имя м. Имя м – правильный идентификатор Паскаля. Interface – служебное слово, переводится «интерфейс», явл-ся началом интерфейсной части м. Implementauion – зарезервиров-е слово, переводится «выполнение», начинает исполняемую часть м. Begin– начало, явл-ся зарезервиров-ным служебным словом, начинает инициирующую часть м. Конструкция begin, инициирующая часть необязательна и может быть опущена. End – зарезервиров-е слово переводится «конец»и обозначает признак конца м. М состоит из заголовков и 3-х составных частей, каждая из которых может быть пустой. Заголовок м состоит из  зарезервированного слова unit и имени м . Через это имя и возможен доступ к м из программы. Сам м, т.е. его исходный текст, размещ-ся в дисковом файле, имя к-го совпадает с именем м, а расширение PAS (<имя >.PAS). Связь м с основной программой осущ-ся с помощью служебного слова uses («использует»), после к-го записывается имя м. (uses<имя>). Если объявление uses испоз-ся, оно должно открывать раздел описания основной программы. Uses в м может следовать за словом interface.

Unit<имя 1>;

Interface

Uses<имя 2>;

Но возможно объявление м-ей и в исполняемой части м. В этом случае слово uses следует сразу за implementation, т.е. допускается запись предложения uses и там и там. Интерфейсная часть открывается зарезервированным словом интерфейс и может содержать объявление всех глобальных объектов м, типов, констант, переменных, процедур, ф-ций. Глобальные объекты м, объявленные в интерфейсной части должны быть доступны основной программе и др. м-ям. Пример:  unit cmplx;

                Interface

                Type

                Complex=record

                Re, im: real;

                End;

                Procedure AddC(x,y:complex; var z:complex);

                Procedure Mu lc (x,y:complex; var z:complex);

                End.

Если в основной программе после uses будет указано имя м, то в программе станут доступными (uses cmplx;) тип комплекс и 2 процедуры: Addc, Mulc. Объявление программ в интерфейсной части автоматически сопровождается их компиляцией с использованием дальней памяти. Все конструкторы и переменные, объявленные в интерфейсной части помещ-ся компилятором турбопаскаля в общей сегмент данных. Максимальная длина сегмента 65536 байт. Порядок объявления различных разделов интерфейсной части - произвольный, также произвольно кол-во объявленных разделов. Испольняемая часть начинается с зарезервир-го слова impementation и содержит описание подпрограмм, объявленных в интерфейсной части м, в ней могут объявляться локальные для м объекты, вспомогательные типы, константы, переменные и метки, если они использ-ся, в инициирующей части. Описанию подпрограммы, объявленной в интерфейсной  части должен предшествовать заголовок, в кот. можно  опускать список формальных параметров, т. к. эти параметры были уже описаны в интерфейсной части. Если заголовок в исполняемой части описывается полностью со списком формальных параметров, то он должен точно совпадать с заголовком интерфейсной части.