Определение модуля. Свойства модуля
Модуль - это автономно компилируемая коллекция программных ресурсов, предназначенная для использования другими модулями и программами.
Все ресурсы модуля делятся на две группы: внешние - предназначенные для использования другими программными единицами, и внутренние рабочие ресурсы данного модуля.
Структура модуля выглядит следующим образом:
Unit <имя модуля>;
interface
<интерфейсная секция>
Implementation
<секция реализации>
Begin
<секция инициализации>
End.
Имя модуля должно совпадать с именем файла в катором он содержится. Результат компиляции модуля помещается в файл с тем же именем и расширением .tpu.
Примечание. Среда языка Borland Pascal предусматривает три режима компиляции программы, использующей модули:
§ Compile - компилируется только основная программа, все модули должны быть предварительно откомпилированы в файлы с расширением .tpu и размещены либо в текущем каталоге, либо в одном из каталогов, указанных как источники файлов .tpu в настройках среды;
§ Make модули, для которых не обнаружены файлы .tpu, компилируются из соответствующих файлов .pas, которые должны находиться в текущем каталоге или в каталогах, указанных в настройках среды в качестве источников исходных файлов модулей;
§ Build - все ранее откомпилированные модули . tpu игнорируются и все модули компилируются из своих исходных файлов .pas.
В процессе отладки модулей целесообразно использовать режим Build, а при отладке программы - режим Compile.
Интерфейсная Секция содержит объявление ресурсов (в том числе заголовки подпрограмм), к которым возможны обращения извне.
Секция реализации содержит описание подпрограмм, объявленных в интерфейсной секции и описание внутренних ресурсов модуля (локальных переменных, типов, подпрограмм). Обращение к этим ресурсам возможно ТОЛЬКО из подпрограмм, описанных в том же модуле.
Секция инициализации содержит операторы, которые выполняют некоторые действия, необходимые для нормальной работы процедур модуля (например, открывают файлы, инициализируют некоторые переменные и т.п.). Операторы секции инициализации выполняются один раз (при подключении модуля) до начала выполнения основной программы. Эта секция в модуле может отсутствовать.
Программа, которая использует ресурсы нескольких модулей, должна в области описаний содержать спецификацию используемых модулей:
Uses <имя модуля1>, <имя модуля2>, ....;
В спецификации uses необходимо указывать только те модули, ресурсы которых данная программная единица (программа или модуль) использует непосредственно. Если подключаемый модуль использует другие модули, то их подключение уже описано в них. Секции инициализации подсоединяемых модулей выполняются в порядке их подключения.
Пример 4. Разработать модуль, содержащий подпрограмму суммирования элементов массива.
Разбиваем текст программы примера 2 на две части: подпрограмму размещаем в модуле, а тестирующую программу оставляем в качестве основной программы. Так как все структурные типы параметров должны быть предварительно объявлены, описываем тип массива в модуле.
Модуль должен размещаться в файле Summa.раs.
Unit Summa;
Interface {объявление внешних ресурсов}
Type mas=array[1. 10] of integer;
Function sum(b:mas;n:integer):integer;
Implementation
Function sum: {описание функции}
Var s: integer, i:integer;
begin s:=0;
for i: =1 to n do s:=s + b[i];
sum:=s;
end;
End.
Программа использует из модуля два ресурса: описание типа mas для объявления массива М и функцию Sum.
Program ex;
Uses Summa; {указание используемого модуля}
Var a:mas; {используем ресурс mas}
i,n:inleger;
Begin readln(n);
for i:=1 tо n do read(a[i]);
Readln;
WriteLn('Cyмма= ',sum(a,n)); {используем ресурс sum}
End.
Все ресурсы, объявленные в интерфейсной части модуля, доступны в основной программе. В случаях перекрытия имен, когда основная программа и подключенный модуль содержат ресурсы с одинаковыми именами, при обращении к ресурсам модуля используют составные имена
<имя модуля>.<имя ресурса>.
Например, в модуле описана переменная X:
Unit A;
Interface
Var X:real;
...
End.
а в основной программе, которая использует этот модуль, объявлена собственная переменная X:
Program ex;
Uses А;
Var X: integer;
Begin
X:=W; {переменная программы}
А.Х:=0.45; ... {переменная модуля }
В виде модулей в Borland Pascal реализованы библиотеки подпрограмм, использование которых существенно упрощает разработку программ.
Дата добавления: 2015-12-01; просмотров: 906;