28440

Модули. Структура модулей. Заголовок модуля и связь модулей друг с другом. Интерфейсная часть. Исполняемая часть. Инициирующая часть. Компиляция модулей. Доступ к объявленным в модуле объектам. Примеры использования модулей

Лекция

Информатика, кибернетика и программирование

Заголовок модуля и связь модулей друг с другом. Здесь UNIT зарезервированное слово единица; начинает заголовок модуля; имя имя модуля; INTERFACE – зарезервированное слово интерфейс; начинает интерфейсную часть модуля; IMPLEMENTATION – зарезервированное слово выполнение; начинает исполняемую часть; BEGIN – зарезервированное слово; начинает инициирующую часть модуля; конструкция BEGIN инициирующая часть необязательная; END – зарезервированное слово – признак конца модуля. Тела процедур и функций располагаются в исполняемой...

Русский

2013-08-20

56.5 KB

5 чел.

Тема 9. Модули. Структура модулей. Заголовок модуля и связь модулей друг с другом. Интерфейсная часть. Исполняемая  часть. Инициирующая часть. Компиляция модулей. Доступ к объявленным в модуле объектам.  Примеры использования модулей.

Модули – это автономно компилируемая программная единица, включающая в себя различные компоненты раздела описаний (типы, константы, переменные, процедуры и функции) а, возможно, некоторые исполняемые операторы инициирующей части.

Модуль имеет следующую структуру:

              UNIT   <имя>;

               INTERFACE

                      <интерфейсная часть>

                IMPLEMENTATION

                       <исполняемая часть>

                BEGIN

                        <инициирующая часть>

                END.

Здесь UNIT- зарезервированное слово (единица);  начинает заголовок модуля; <имя> - имя модуля;

INTERFACE – зарезервированное слово (интерфейс); начинает интерфейсную часть модуля; 

IMPLEMENTATION – зарезервированное слово (выполнение);  начинает исполняемую часть;

BEGIN – зарезервированное слово; начинает инициирующую часть модуля; конструкция          BEGIN <инициирующая часть> необязательная;

END – зарезервированное слово – признак конца модуля.

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

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

Модули представляют собой прекрасный инструмент для разработки библиотек прикладных программ и мощное средство модульного программирования. Важная особенность модулей заключается в том, что компилятор Турбо Паскаля размещает их программный код в отдельном сегменте памяти. Максимальная длина сегмента не может превышать 64 байта, однако количество одновременно используемых модулей ограничивается лишь доступной памятью, что дает возможность создать весьма крупные программы.

                        Заголовок модуля и связь модулей друг с другом

Заголовок модуля состоит из зарезервированного слова UNIT и следующего за ним имени модуля:

                                 UNIT   <имя модуля>;

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

UNIT METOD; Исходный текст  соответствующего модуля должен размещаться в дисковом файле METOD.PAS. Имя модуля служит для его связи с другими модулями и основной программой. Эта связь  устанавливается специальным предложением:

                                USES   <сп. модулей>

Здесь USES – зарезервированное слово (используется);

<сп. модулей> - список модулей, которыми устанавливается связь; элементами списка являются имена модулей, отделяемые друг от друга запятыми, например:

                  Uses   CRT, GRAPH, METOD;

Если используется объявления USES…, оно должно открывать раздел описаний основной программы. Модули могут использовать другие модули. Предложение USES в модулях может следовать либо сразу за зарезервированным словом INTERFACE, либо  сразу за словом IMPLEMENTATION, либо, наконец, и там, и там (т.е. допускаются два предложения USES)

Интерфейсная часть

Интерфейсная часть открывается зарезервированным словом INTERFACE. В этой части содержатся объявления всех глобальных объектов модуля (типов, констант, переменных и подпрограмм), которые должны стать доступными основной программе и  или другим модулем.

При объявлении глобальных подпрограмм в интерфейсной части указывается только их заголовок, Например:

           UNIT Cmplx;

            INTERFACE

                 Type

                     Complex = record

                                           re, im: real

                                         end;

             Procedure AddC (x, y, : complex;  VAR Z : complex);

             Procedure MulC  (x, y, : complex;  VAR Z : complex);

Если теперь в основной программе написать предложение

                   Uses Cmplx;

то в программе станут доступными тип Complex и две процедуры AddC и MulC из модуля Cmplx.

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

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

Исполняемая часть

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

При описании подпрограммы, объявленной в интерфейсной части модуля, заголовок подпрограммы можно опускать список формальных параметров (и  тип результата для функции), так как они уже описаны в интерфейсной части. Но если заголовок подпрограммы приводится в полном виде, т.е. со списком формальных параметров и объявлением результата, он должен совпадать с заголовком, объявленным в интерфейсной части, Например:

               UNIT  Cmplx;

                INTERFACE

                Type  complex = record      re,  im  :  real   end;

                 Procedure AddC (x, y : complex; VAR  Z  : complex);

                 IMPLEMENTATION

                 PROCEDURE AddC;

                    begin

                      z . re := x. re + y. re;

                      z . im := x. im + y. im

                    end;

                 end.

Локальные переменные и константы, а также все программные коды, порожденные при компиляции модуля, помещаются в общий сегмент памяти.

Инициирующая часть

В инициирующей части  размещаются исполняемые операторы, содержащие некоторый фрагмент программы. Эти операторы исполняются до передачи управления основной программе и обычно используются для подготовки ее работы. Например, в них могут инициироваться переменные, открываться нужные файлы, устанавливаться связи с другими ПК по коммуникационным каналам и т.п.:

                  UNIT  FILETEXT;

                  INTERFACE

                  PROCEDNRE  PRINT (s : string);

                  IMPLEMENTATION

                  VAR

                       f  : text

                  const

                       name = ‘output. txt’;

                  Procedure  Print;

                  begin

                       Write (t, s)

                  end;

                     {начало инициирующей части}

                  begin

                       assign (f, name);

                       rewrite (f);

                     {конец инициирующей части}

                  end.

Необходимо отметить, что инициирующую часть можно опустить, чем оформлять в модуле пустую инициирующую часть.

Компиляция модулей

При разработке крупных программных проектов можно использовать различные средства, управляющие способом компиляции модулей, (в частности), например, определены три режима компиляции: COMPILE, MAKE и  BUILD. Режимы отличаются только способом связи компилируемого модуля или основной программы с другими модулями, объявленными в предложении USES.

При компиляции модуля или основной программы в режиме COMPILE все модули, перечисленные в предложении USES, должны быть предварительно откомпилированы, и результаты компиляции помещены в одноименные файлы с  расширением TPU. Например, в  программе (модуле) имеется предложение

                  USES  METOD;

то на диске в каталоге, объявленном опцией UNIT DIRECTORIES уже должен находиться файл  METOD. TPU. Файл  с расширением TPU (TURBO PASCAL UNIT) создается автоматически в результате компиляции модуля.

В режиме MAKE компилятор проверяет наличие TPU – файлов для каждого объявленного модуля. Если нет какого-либо TPU-файла или в  исходный текст модуля внесены какие-либо изменения, система осуществляет компиляцию одноименного файла с расширением PAS. Также в этом режиме предусмотрено перекомпилирование всех моделей, обращающихся к модулю, в интерфейсную часть которого внесены изменения.

Режим MAKE существенно облегчает процесс разработки крупных программ с множеством модулей: программист избавляется от необходимости следить за соответствием существующих TPU-файлов их исходному тексту, так как система делает это автоматически.

В режиме BUILD система компилирует соответствующие PAS-файлы для каждого объявленного в предложении USES модуля (игнорируются существующие TPU-файлы). Таким образом, после компиляции в этом режиме должны быть учтены все сделанные изменения в любом из модулей.

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

    

Доступ к объявленным в модуле объектам

   Рассмотрим пример создания модуля реализующего арифметику комплексных чисел.

        UNIT Cmplx;

         {--------------------------------------------------}

        INTERFACE

         {--------------------------------------------------}

        type  complex = record

                                      re,  im  :  real;

                                   end;

        PROCEDURE  AddC  (x, y  : complex;  var  z  :  complex);

        PROCEDURE  SubC   (x, y  : complex;  var  z  :  complex);

        PROCEDURE  MulC   (x, y  : complex;  var  z  :  complex);

        PROCEDURE  DivC    (x, y  : complex;  var  z  :  complex);

        const   c  :  complex  =  (re  : 0.1;  im  : -1);

         {--------------------------------------------------}

        IMPLEMENTATION

         {--------------------------------------------------}

        PROCEDURE  AddC;

        begin

             z. re  :=  x. re + y. re;     z. im  :=  x. im +  y. im;

        end;

      PROCEDURE  SUBC;

        begin

             z. re  :=  x. re  -  y. re;      z. im  :=  x. im -  y. im;

        end;

      PROCEDURE  MulC;

         begin

             z. re  :=   x. re  *  y. re  -  x. im  *  y. im;

             z. im  :=  x. re  *  y. im  + x.im  *  y. re;

        end;

      PROCEDURE DivC;

        var    zz  :  real;

        begin

             zz  :=sgr (y. re)  +  sgr (y. im);

             z. re  := (x. re  *  y. re  + x. im  * y. im )  / zz;

             z. im := (x. re  *  y. im  -  x. im  * y. re)  /  zz;

        end;

      END.

Текст модуля помещается в файл  CMPLX.PAS, создается TPU-файл после  компилирования одноименного PAS-файла. После этого станут доступны процедуры из новой библиотеки. Ниже приводится пример программы, в которой осуществляются четыре арифметические операции под двумя комплексными числами.

      USES Cmplx;

      VAR

        a,  b,  c  :  complex;

      BEGIN

        a. re  :=  1;      a. im  :=  1;

        b. re  :=  1;      b. im  :=  2;

        AddC   (a,  b,  c);

        WRITELN (‘Сложение  :’,  c. re : 5 : 1,   c. im  : 5 : 1);

        SUBC  (a,  b,  c);

        WRITELN (‘Вычитание :’,  c. re : 5 : 1,   c. im : 5 : 1);

         MULC  (a,  b,  c);

        WRITELN  (‘Умножение:’,  c. re : 5 : 1,   c. im : 5 : 1);

        DIVC  (a,  b,  c);

        WPITELN (‘Деление:’,     c, re : 5 : 1,  c. im  : 5 : 1);

      END.

После объявления USES Cmplx программе стали доступны все объекты, объявленные в интерфейсной части модуля CMPLX. При необходимости можно переопределить любой из этих объектов, как это произошло, например, с объявленной в модуле типизированной константой C.

1осн.[182-189]

10доп.[117-124], 11доп.[383-393], 12доп.[134-138]

Контрольные вопросы

1.  Перечислите разделы модуля и укажите их назначение.

2. Можно ли использовать в программе  подпрограмму, описанной в исполнительной части ее модуля и  не объявленную в интерфейсе?

3. Можно ли в программе использовать константы, переменные и подпрограммы, описанные в интерфейсе модуля, которые подключаются к модулю, объявленному  в вашей программе?

4. Как можно использовать в программе переменные, которые в программе и ее модуле объявлены под одним именем?

5. В чем состоит  основной принцип модульного программирования?

6. В каком разделе программы указывается подключение модулей?

7. Какие существуют особенности при разработке собственных модулей?


 

А также другие работы, которые могут Вас заинтересовать

85050. Гражданская оборона как составная часть национальной безопасности и обороноспособности страны 29.5 KB
  Сформировать у учащихся общее представление о гражданской обороне как составной части общегосударственной системы мероприятий по защите населения страны от опасностей мирного и военного времени. Познакомить с системой руководства гражданской обороной и основными правами и обязанностями граждан в области гражданской обороны. Изучаемые вопросы Предназначение и задачи гражданской обороны. Руководство гражданской обороной.
85051. МЧС России — федеральный орган управления в области защиты населения и территорий от чрезвычайных ситуаций 30.22 KB
  МЧС России федеральный орган управления в области защиты населения и территорий от чрезвычайных ситуаций Цель урока. Познакомить учащихся с МЧС России: предназначением структурой и основными задачами МЧС. Показать роль МЧС России в обеспечении защиты населения от чрезвычайных ситуаций. Изучаемые вопросы МЧС России его предназначение и структура.
85052. Мониторинг и прогнозирование чрезвычайных ситуаций 28.65 KB
  Мониторинг и прогнозирование чрезвычайных ситуаций Цель урока. Познакомить учащихся с мониторингом и прогнозированием чрезвычайных ситуаций как составной частью общей системы мер противодействия чрезвычайным ситуациям направленных на снижение риска возникновения чрезвычайных ситуаций и смягчение их последствий. Изучаемые вопросы Мониторинг чрезвычайных ситуаций и его предназначение. Основные методы прогнозирования чрезвычайных ситуаций.
85053. Инженерная защита населения и территорий от чрезвычайных ситуаций 29.7 KB
  Инженерная защита населения и территорий от чрезвычайных ситуаций Цель урока. Познакомить учащихся с комплексом мероприятий касающихся инженерной защиты населения и территорий от чрезвычайных ситуаций. Изучаемые вопросы Инженернотехнические мероприятия по защите населения и территорий от чрезвычайных ситуаций. Отметить что высокую эффективность в защите населения территорий и населенных пунктов имеют инженернотехнические мероприятия по защите от неблагоприятных и опасных природных явлений и процессов предусматривающие возведение и...
85054. Оповещение населения о чрезвычайных ситуациях и эвакуация 31.19 KB
  Оповещение населения о чрезвычайных ситуациях и эвакуация Цель урока. Обобщить знания учащихся о системе оповещения населения страны о чрезвычайных ситуациях познакомить их с основными направлениями совершенствования системы оповещения населения о чрезвычайных ситуациях. Изучаемые вопросы Система централизованного оповещения населения о чрезвычайных ситуациях. Локальная система оповещения населения о чрезвычайных ситуациях.
85055. Аварийно-спасательные и другие неотложные работы в очагах поражения 30.84 KB
  Аварийноспасательные и другие неотложные работы в очагах поражения Цель урока. Познакомить учащихся с основным содержанием аварийноспасательных и других неотложных работ АС ДНР обратить внимание на предназначение аварийноспасательных и неотложных работ познакомить учащихся с основными видами обеспечения АС ДНР. Изучаемые вопросы Аварийноспасательные работы и их предназначение. Основные виды обеспечения аварийноспасательных и других неотложных работ.
85056. Здоровье человека - как индивидуальная, так и общественная ценность 30.15 KB
  Здоровье человека как индивидуальная так и общественная ценность Цель урока. Систематизировать знания учащихся о здоровье человека как об индивидуальной и общественной ценности об основных составляющих здоровья и факторах на него влияющих. Сформировать убеждение что каждый человек сохраняя и укрепляя свое личное здоровье вносит вклад в укрепление общественного здоровья. Факторы оказывающие влияние на здоровье.
85057. Здоровый образ жизни и его составляющие 31.14 KB
  Здоровый образ жизни и его составляющие Цель урока. Сформировать у учащихся целостное представление о здоровом образе жизни как индивидуальной системе поведения человека в повседневной жизни. Изучаемые вопросы Духовная составляющая здорового образа жизни. Физическая составляющая здорового образа жизни.
85058. Репродуктивное здоровье населения и национальная 31.19 KB
  Систематизировать знания учащихся о репродуктивном здоровье как единой составляющей здоровья человека и общества. Показать роль и значение семьи в укреплении репродуктивного здоровья и обеспечении национальной безопасности России. Роль семьи в обеспечении репродуктивного здоровья человека и общества. Уровень репродуктивного здоровья это своего рода итог всего комплекса состояния репродуктивного здоровья человека и российского общества.