Сайт Льва Волкова
  
· Мозг женщин в 1860 году был равен 1245 граммам и сегодня увеличился до 1270 граммов.
 
      На главную  
 Личное
  Статьи
  Задачи 
 Ссылки
 АТ-531
www.levvol.ru    
 
Модули, создаваемые программистом

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

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

Модульность позволяет создавать программы практически любого размера.

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

 

вверх страницы
Описание модулей

Исходный текст каждого модуля хранится в отдельном файле с расширением .pas. Модуль состоит из секций (разделов). Общая структура модуля имеет вид:

Unit Имя;    {Заголовок модуля}
 Interface  {Интерфейсная часть модуля}
{Описание глобальных переменных модуля видимых извне}
 Implementation  {Секция реализации модуля}
 {Описание локальных (внутренних) элементов модуля}
 Begin   {Секция инициализации модуля}
 {Может отсутствовать}
End.
 
Имя файла, в котором хранится модуль, должно совпадать с именем, заданным после ключевого слова Unit.

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

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

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

Секция инициализации предназначена для присвания начальных значений переменным, используемым в модуле или в программе, к которой он подключен. Опраторы, расположенные в секции инициализации модуля, выполняются перед опереторами основной программы. Если секция инициализации в модуле отсутствует, то в конце ставится END., а слово BEGIN пропускается.


Для сохранения скомпилированного модуля надо установить значение пункта Destination меню Compile в значение Disk. Далее в меню File выбрать Save As... и сохранить файл модуля с расширением .pas и именем, совпадающим с именем модуля. Это надо сделать, чтобы файл имел имя. Затем в меню Compile выбрать Compile и компилятор создаст файл с расширением .tpu, который надо переместить в специальный каталог, путь к которому указан в пункте меню Directories меню Options в поле Unit Directories.


Пример описания модуля. В виде модуля оформлена подпрограмма вычисления среднего арифметического массива чисел.

 Unit Average_;
  INTERFACE
  Const n=10;
  Type mas=array [1..n] of real;
  Procedure average(x:mas; var av:real);
  IMPLEMENTATION
   Procedure  average(x:mas; var av:real);
   Var i:integer;
   Begin
   av:=0;
   for i:=1 to n do av:=av+x[i];
   av:=av/n
   end;
   End.
   

Список параметров подпрограммы в разделе IMPLEMENTATION указывать не обязательно.

Пример использования модуля. Подсчет средних значений двух массивов:

Program Test;
Uses Average_,CRT;
 Var a,b: mas;
     i  :integer;
     av_a, av_b:real;
 Begin
 ClrScr;
 randomize;{Подключение генератора случайных чисел} 
 for i:=1 to n do begin
                  a[i]:=random; {Заполнение массивов} 
                  b[i]:=random
                  end;
 average(a, av_a); {Подключение процедуры из модуля}
 average(b, av_b);
 writeln(av_a:5:3,'   ',av_b:5:3);
 readln
 End.
   

 

[назад] [содержание] [вперед]