русс | укр

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

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

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

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


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

Структура модуля


Дата добавления: 2013-12-23; просмотров: 1659; Нарушение авторских прав


Подключение модулей

Для того чтобы подключить к программе один или несколько модулей, необходимо сразу после заголовка программы поместить следующую строку:

uses <имя_модуля_1>, …, <имя_модуля_N>;

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

Например, можно пользоваться функцией abs, не объявляя и не описывая ее, поскольку эта функция включена в состав стандартного модуля System, автоматически подключаемого к любой программе на языке Паскаль. Если же требуется очистить экран монитора перед выдачей результатов, то придется подключить к программе модуль crt и воспользоваться содержащейся в нем процедурой clrscr.

Модуль обеспечивает набор средств благодаря процедурам и функциям при поддержке констант, типов данных и переменных, однако действительная реализация этих средств скрыта в силу того, что модуль разделен на две секции: интерфейса и реализации. Если программа использует модуль, то все описания модуля становятся доступными этой программе, как если бы они были определены в ней самой.

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

unit <идентификатор>;

interface

uses <список модулей>; { Необязательный }

{ открытые описания }

implementation

{ закрытые описания }

{ процедуры и функции }

begin

{ код инициализации }

end.

Заголовок модуля начинается зарезервированным словом unit, за которым следует имя модуля (идентификатор). Отметим, что модуль должен иметь такое же имя, что и файл, в котором он находится.

Интерфейсный раздел – «общедоступная» часть в модуле, следует сразу после заголовка модуля и заканчивается перед зарезервированным словом implementation. Интерфейс определяет, что является "видимым" для любой программы (или модуля), использующей данный модуль. Любая программа, использующая этот модуль, имеет доступ к этим «видимым» элементам.



Программный модуль может использовать другие модули, для этого они определяются в предложении uses. Предложение uses, если имеет место, то следует сразу после ключевого слова interface.

В интерфейсе модуля можно определять константы, типы данных, переменные, процедуры и функции. Как и в программе, они могут быть расположены в любом порядке, и секции могут встречаться повторно (например, typevar … <процедуры> … consttype).

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

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

Обычные процедуры и функции, описанные в интерфейсной секции, должны быть повторно указаны в секции реализации. Заголовок procedure/function должен быть или идентичным тому, который указан в секции интерфейса, или иметь более краткую форму (печатается лишь ключевое слово procedure или function, а за ним указывается имя подпрограммы). Затем подпрограмма должна содержать все свои локальные описания (метки, константы, типы, переменные и вложенные процедуры и функции), за которыми должно находиться основное тело самой подпрограммы.

Пример: Пусть в интерфейсной секции указаны следующие описания:

procedure ISwap(var V1,V2 : integer);

function IMax(V1,V2 : integer) : integer;

Секция реализации тогда должна будет содержать реализацию указанных подпрограмм:

procedure ISwap;

var Temp : integer;

begin

Temp := V1;

V1 := V2;

V2 := Temp

end; { конец процедуры Swap }

function IMax(V1,V2 : integer): integer;

begin

if V1 > V2 then IMax := V1 else IMax := V2

end; { конец функции Max }

Подпрограммы, локальные для секции реализации (то есть не описанные в секции интерфейса), должны иметь полный, несокращенный заголовок procedure/function.

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

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

Пример: стандартный модуль Printer использует секцию инициализации для выполнения запросов на открытие (для вывода) текстового файла Lst, который затем можно использовать в операторах Write и Writeln в программе.

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

Модули, которые использует программа, уже оттранслированы и хранятся, как машинный код, а не как исходный код на Паскале. Когда компилятор встречает это предложение uses, он присоединяет машинный код, представленный в секции реализации, к самой программе.



<== предыдущая лекция | следующая лекция ==>
Стандартные модули в Турбо Паскаль | Процедуры и функции для работы с файлами


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


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

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

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


 


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

 
 

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

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