русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

М О Д У Л И П О Л Ь З О В А Т Е Л Я


Дата добавления: 2014-11-27; просмотров: 566; Нарушение авторских прав


 

Модули пользователя - это инструмент для создания больших программ, что определяется следующими их свойствами:

- каждый модуль, входящий в состав программы, может иметь объем до 64 Кбайт;

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

 

Модуль разделяется на три части: секция интерфейса, секция реализации и секция инициализации.

 

Общая структура модуля:

 

 
 


 

 

Заголовок модуля состоит из зарезервированного слова Unitи следующего за ним идентификатора, являющегося именем модуля. Имя модуля должно быть уникальным. Предполагается, что имя модуля совпадает с именем файла, в котором хранится данный модуль. Например, модуль с заголовком Unit BasUnit должен находиться в файле с именем 'BasUnit.pas'. Следствием последнего обстоятельства является то, что имя модуля, как и имя файла, должно состоять не более чем из восьми символов.

Интерфейсная часть начинается со служебного слова Interface. Если в данном модуле используются другие модули (стандартные или модули пользователя), то после слова Interfaceдолжно следовать предложение Usesс именами используемых модулей. Интерфейсная часть может содержать описания констант, типов, переменных, процедур и функций. Эти описания считаются глобальными, их может использовать любой другой модуль, во фразе Usesкоторого указано имя данного модуля.

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



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

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

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

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

Компиляция модуля возможна как из интегрированной среды Турбо Паскаля (turbo.exe), так и с помощью компилятора командной строки (tpc.exe). Так как модуль не является непосредственно выполняемой единицей, то в результате его компиляции образуется дисковый файл с расширением tpu, при этом имя этого файла копируется с имени файла с исходным текстом модуля. Компиляция модуля возможна, если к началу компиляции созданы все нестандартные модули с расширением tpu, имена которых перечислены в предложении Uses данного модуля.

Структура многомодульной программы может быть самой различной в зависимости от назначения программы, ее размера, объединения процедур по группам и т.д. Ниже приводится один из возможных вариантов такой структуры.

 
 

 

 


 

 

Здесь в модуле DesUnit размещены описания глобальных констант, типов и переменных (Des - от слова description, описание). Секция реализации этого модуля пустая. В модуле BasUnit сосредоточены базовые служебные процедуры и функции, используемые во многих других модулях (функция знака, процедуры контроля наличия файлов, двоичного поиска, группировки массивов, вывода массива на экран, удаления стека и т.п.). В модуле WinUnit записаны процедуры для организации многооконного интерфейса (включение и отключение курсора, сохранение и восстановление экрана, формирование различного типа меню и т.п.). Модули ParUnit1, ParUnit2, ParUnit3 содержат процедуры и функции, реализующие различные режимы работы программы. В основной программе Example производится выбор режима ее работы путем активизации позиций меню и обращения к соответствующим процедурам.

 

Как известно, все переменные, которые описаны в разделах Var, размещаются в двух сегментах памяти: в сегменте данных и в сегменте стека. При этом сегмент стека используется для локальных переменных, а сегмент данных – для глобальных переменных и типизированных констант.

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

- переменные, описанные в секции реализации, могут быть использованы лишь при работе данного модуля;

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

Разумеется, эти ограничения обеспечиваются во время компиляции программы.

 

 



<== предыдущая лекция | следующая лекция ==>
С Т А Н Д А Р Т Н Ы Е М О Д У Л И | П Р О Г Р А М М Ы Н А Т У Р Б О П А С К А Л Е


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.