28440

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

Лекция

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

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

Русский

2013-08-20

56.5 KB

6 чел.

Тема 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. Какие существуют особенности при разработке собственных модулей?


 

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

80931. Звязок методики навчання історії з іншими науками 35.76 KB
  Методичні дослідження вивчаючи процес навчання історії мають спиратися на родинні науки насамперед на історію педагогіку і психологію. Пізнавальна діяльність учнів та її результати не можуть бути повноцінними якщо навчання історії не буде відповідати сучасному рівню історичної науки її методології. Навчання історії стане науково обґрунтованим і результативним лише за умови якщо вся його структура зміст і методика будуть відповідати цим обєктивним етапам та закономірностям пізнання.
80932. Сучасні цілі та завдання шкільної історичної освіти в Україні 33.28 KB
  Головна мета шкільної історичної освіти може бути визначена як створення та становлення особистості учня як субєкта історичного розвитку та суспільних відносин громадянинапатріота. Завданнями сучасної шкільної історичної освіти є забезпечення умов для: набуття школярами ключових та предметних компетентностей; виховання повноправного громадянина патріота України який здатен вільно орієнтуватися в суспільному житті та усвідомлювати свою роль та відповідальність перед суспільством та державою формування в учнів самосвідомості та власної...
80933. Структура та методичне забезпечення підручника «Всесвітньої історії» (10-11кл.) 37.68 KB
  Бесіда діалогічний метод навчання за допомогою якого вчитель із поставленими питаннямь спонукає учнів відтворювати раніше набуті знання робити самостійні висновкиузагальнення на основі засвоєного фактичного матеріалу. Бесіда є одним із активних методів навчання. Бесіда дозволяє залучити до діяльності на уроці дітей незалежно від їхнього рівня підготовки та індивідуальних можливостей що сприяє досягненню високих результатів у навчально виховному процесі. Така бесіда зазвичай проводиться на початку вивчення теми чи розділу.
80934. Аналіз програми з історії України для 5 кл. Мета ,завдання та зміст 29.92 KB
  Головною метою курсу є підготовка учнів до успішного опанування систематичних курсів історії України та всесвітньої історії прищеплення інтересу до історії отримання знань у наступних класах через формування в них початкових уявлень про історію як науку та про історію України як складову світової історії елементарних вмінь з історії; поглиблення загальних дидактичних вмінь необхідних для успішного засвоєння історичної інформації в подальшому; прагнення викликати захоплення минулим України. Зміст курсу ґрунтується на таких засадах:...
80935. Кабінет історії в школі, його значення 34.32 KB
  Важливе значення має вигляд меблів якими обладнаний кабінет. Важливе значення має також оформлення передньої стінки яку складають державна символіка України розкладна проста чи магнітна дошка екран шафи з тумбами стаціонарний стелаж чи рухома підставка для книг.
80936. Аналіз програми з історії України для 6-9 кл. Мета ,завдання та зміст 35.39 KB
  Мета завдання та зміст. Програма з історії спрямована на реалізацію вимог освітньої галузі Суспільствознавство Державного стандарту базової середньої освіти конкретизує зміст історичного компоненту галузі та вимоги до загальноосвітньої підготовки учнів з історії. Основними компонентами змісту окремих курсів за цією програмою є: зміст історичного навчального матеріалу перелік державних вимог до рівня загальноосвітньої підготовки учнів на який учитель орієнтується під час вивчення конкретних тем відповідних курсів. До кожної теми надано...
80937. Види історичних документів, особливості їх вивчення 35.44 KB
  До історичних джерел належить все створене людиною, у тому числі результати його взаємодії з навколишнім середовищем, а також предмети матеріальної культури, звичаї, обряди, памятки писемності. У широкому сенсі слова памятники писемності в методиці називають документами
80938. Аналіз програми з історії України для 10-11 класів мета завдання та зміст курсу Нової історії України 35.68 KB
  Мета курсу за вибором Досліджуємо історію України для профільних класів суспільногуманітарного напряму поглиблення системи знань учнів про історію України XX століття яке забезпечується набуттям старшокласниками власного інтелектуального досвіду вивчення історичного матеріалу розвитком навчальнопізнавальних умінь та ключових предметних компетенцій. Реалізація курсу за вибором Досліджуємо історію України здійснена у контексті профілізації старшої школи допоможе виконати наступні завдання: поглибити цілісні уявлення старшокласників...
80939. Позакласна позашкільна робота з історії в загальноосвітній школі 30.73 KB
  Позакласна робота різноманітна освітня і виховна робота спрямована на задоволення інтересів і запитів дітей організована в позаурочний час педагогічним колективом школи. Позашкільна робота освітньовиховна діяльність позашкільних закладів для дітей та юнацтва.