На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! Правила ЧаВо (FAQ) разделов Паскаля
В этом разделе разрешено создавать только темы, в которых описано РЕШЕНИЕ какой-либо общей проблемы, или описание какого-либо аспекта языка Паскаль.
Обсуждение уже созданных тем разрешено, но только конструктивное, например указание на ошибку или уточнение имеющегося текста.

Также читать Требования к оформлению статей
Модераторы: volvo877, Romtek
  
> Что такое модуль?, Их ещё юнитами зовут (unit)
    Что такое модуль?

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

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

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

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

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

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

    ExpandedWrap disabled
      -----------------------
      |      Unit name      |
      -----------------------
      |      Interface      |
      -----------------------
      | Интерфейсная секция |
      -----------------------
      |   Implementation    |
      -----------------------
      |  Секция реализации  |
      -----------------------
      | Секция инициализации|
      -----------------------


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


      Пример использования модуля
      ExpandedWrap disabled
        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 (пример).
      Примечание: и не пытайтесь запустить модуль!
      У вас всё равно ничего не получится, т.к. модуль является "библиотекой". Можно запустить только программу.
      Сообщение отредактировано: Romtek -
      1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script Execution time: 0,0639 ]   [ 15 queries used ]   [ Generated: 19.08.19, 05:44 GMT ]