Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Pascal: Общие вопросы > Что такое модуль?


Автор: @Hgpeu 16.12.03, 02:30
Что такое модуль?

Модуль это специальная разновидность программы на паскале. Он содержит описание типов данных, переменных функций или процедур и других объектов, которые затем могут используются в других программах паскаля. Подпрограмму имеет смысл включать в состав модуля в том случае, когда она реализует действие, которое приходится выполнять достаточно часто. Подпрограммы, входящие в модуль, можно написать, отладить, модуль откомпилировать один раз, а использовать многократно.
Откомпилированный модуль имеет расширение TPU (TPW) и из него код функций и процедур включается в вашу программу если вы в ней их используете.

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

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

Описание модуля.

Модуль начинается заголовком
Unit <имя модуля>;
Где <имя модуля> - имя модуля, которое выбирается в соответствии с правилами Паскаля.
Файл, содержащий модуль, обязан иметь то же имя, что и модуль!

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

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    -----------------------
    |      Unit name      |
    -----------------------
    |      Interface      |
    -----------------------
    | Интерфейсная секция |
    -----------------------
    |   Implementation    |
    -----------------------
    |  Секция реализации  |
    -----------------------
    | Секция инициализации|
    -----------------------


Модуль состоит из трех частей.
Первая – интерфейсная секция – содержит те описания типов, переменных и других объектов данных, которые можно использовать в других программах или модулях. Она начинается с зарезервированного слова interface. Здесь приводятся не полные описания процедур и функций, а только их заголовки, которые должны совпадать с полными описаниями в секции реализации. Секция реализации начинается с зарезервированного слова implementation. Все описания, содержащиеся в секции реализации, являются локальными, их область действия – данный модуль. Здесь же содержаться полные описания функций и процедур модуля. Последняя часть модуля – секция инициализации. Она может быть и пустой и содержать только зарезервированное слово end или включать в себя исполняемые операторы, выполняющие необходимые действия по инициализации (например, по присваиванию начальных значений переменным) модуля.

Автор: romtek 25.05.04, 22:18
Вот пример модуля и программы, использующей модуль.
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    unit MathLib;
     
    interface
     
    Const Max=10;
    Type
         TVector: array [1..Max] of integer;
     
    function  Sum (a, b: integer): integer;
    function  Hypot (a, b: real): real;
    procedure InitVector (var V: TVector);
     
    implementation
     
    function Sum (a, b: integer): integer;
    begin
      summa := a + b;
    end;
     
    function Hypot (a, b: real): real;
    begin
      Hypot := Sqrt( Sqr(a) + Sqr(b))
    end;
     
    procedure InitVector (var V: TVector);
    var i: integer;
    begin
         for i:=1 to Max do
           V[i]:=0;
    end;
     
    end.


Пример использования модуля
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    Uses MathLib;
     
    var A: TVector;
     
    begin
      InitVector (A);
      writeln (sum (100,20));
      writeln (Hypot (100,20):5:3);
    end.



Откомпилируйте модуль, выбрав Compile->Build. Таким образом создастся TPU файл, который можно использовать в дальнейшем в разных программах.
Если в процессе компиляции программы, использующей модуль вы получили сообщение о том, что модуль не найден, то
  1. Возможно, вы просто не откомпилировали модуль... Проверьте, что TPU файл создан.
  2. Модуль есть, и ошибку можно устранить, зайдя в Options->Directories в строке Unit directories добавить путь к вашему TPU файлу: D:\TP7\Units;D:\TP7\Vasya (пример).
Примечание: и не пытайтесь запустить модуль!
У вас всё равно ничего не получится, т.к. модуль является "библиотекой". Можно запустить только программу.

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)