Построение модульной программы в среде Turbo Pascal 7.0
методическая разработка по информатике и икт по теме

Беляева Галина Ивановна

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

 

 

 

 

Скачать:

ВложениеРазмер
Microsoft Office document icon metodicheskoe_posobie31.doc100 КБ

Предварительный просмотр:






Государственное  бюджетное образовательное  учреждение



дополнительного  образования  детей





СПб Центр детского (юношеского) технического творчества



         













                             Методическое   пособие





“Построение модульной программы в среде



 Turbo Pascal 7.0”









                         Автор: Беляева Г.И.



                             педагог дополнительного образования















2010 год






Создание модульных программ  в среде

Turbo    Pascal  7.0

             Введение

       В системе Turbo Pascal  7.0  программа состоит из главной программы и возможно

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

программы всегда начинается  с файла с расширением EXE, который содержит код глав-

ной программы..

 МОДУЛЬ – минимальная единица, допускающая индивидуальную компиляцию.

Выполнение модуля инициируется либо главной программой, либо каким-нибудь другим

модулем.   с  помощью процедур или функций, входящих в состав модуля. Использование

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

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

           

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

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

         зовать полезные средства, входящие в состав библиотек  поддержки разработок.

                Структура модуля напоминает структуру программы, хотя и имеет ряд различий

         СЕКЦИЯ СВЯЗИ                                            UNIT < имя >

                                                                                    INTERFACE

                                                                                    USES < Список 1 – имен модулей >

                                                                                           < Внешние  обьявления >

         СЕКЦИЯ РЕАЛИЗАЦИИ                             IMPLEMENTATION

                                                                                    USES < Список 2 – имен модулей >

                                                                                           < Внутренние  обьявления >

         СЕКЦИЯ ИНИЦИАЛИЗАЦИИ                  BEGIN

                                                                                        <  Последовательность операторов >

                                                                                      END.

          Вопросы по теме 1:

          1.   Какие преимущества  дает модульная структура программы ?

  1. Дать определение программного модуля.

          Задание по теме   1:                                           

          Определить структуру программного модуля

        

             Тема 2. Секция связи

                   Модуль начинается  с  ключевого  слова  UNIT, за  которым  следует – имя модуля, соот-

          ветствующее имени файла с расширением  PAS, в котором находится исходный текст модуля.

                  Например :

                  UNIT  Mod1;  {  Mod1.pas  - файл с исходным текстом   описываемого  модуля }

                     Имя модуля служит для организации связи  модуля с главной программой и другими

           модулями  с помощью слова USES, вслед   за которым  указываются  имена  модулей, в кото-

           рых  будут  использоваться  так называемые внешние обьявления, т.е. элементы модуля, извес-

           тные  в этих  модулях  и  в главной программе.

               Например :

              UNIT                   Mod1;

                     INTERFACE

                        USES                   MOD2;

                        CONST                M    = 100;

                        TYPE                   Intl  = 1 . . M;

                        VAR                     W    :  real;

                                                            F      :   boolean;

                       PROCEDURE     Sq   ( A  :  Intl; Var  B : integer);

                      FUNCTION         Str1( S  :  string) :  boolean;

         Следует отметить, что все константы, типы,  переменные, процедуры и функции, обьявленные

         после  слова INTERFACE, будут известны как  главной программе, так и в модуле с именем

         MOD2 и будут размещаться в том же сегменте памяти, что и глобальные переменные главной

         программы.

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

         полные тексты  приводятся с следующей секции – секции реализации.

          Вопросы по теме 2:

  1. Назначение секции  связи.
  2. Как  будут  распределятся в оперативной памяти  данные, описанные в секции при выполнении программы   ?
  3. Особенности при обьявлении процедур и функций  в секции связи.

            Тема 3. Секция  реализации

                  Секция  начинается  с ключевого слова  IMPLEMENTATION. За ним  после  слова USES

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

            При  этом  эти обьявления  могут :

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

            Далее  следуют  внутренние  обьявления -  это константы, переменные, процедуры и функции,

            известные  во всех  подпрограммах секции реализации, а также могут быть использованы гло-

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

            падают  по  именам.

               Например :

            IMPLEMENTATION

                      CONST                               Five   =  5;

                      PROCEDURE                    Sq ;

                                CONST                      B1 = Five + 6;

                           BEGIN

                                                                  B := B1 * A;

                          END;

                    FUNCTION                        STR1;

                             VAR                            C : Intl;

                             BEGIN

                                                              READLN(C);

                                                        IF  Length(S) < C Then  Str1 := TRUE

                                                                                        Else    Str1 := FALSE;

                          END;

              Вопросы по теме 3 :

  1. Каково назначение секции  реализации ?

              2.  Чем  отличаются внешние  и внутренние  обьявления в секции реализации ?

       

                            Тема 4.  Секция инициализации

                   Эта секция чаще всего отсутствует, она  начинается  словом  BEGIN, за которым

          следует   последовательность исполняемых  операторов.Эти секции для каждого модуля,

          входящего  в программу, выполняются  один раз перед началом работы главной програм-

          мы  для подготовки  всей  программы к началу ее работы. Обычно эта последовательность

          операторов  включает такие действия как :

  • присваивание  начальных значений переменным;
  • открытие файлов;
  • проверка паролей  и т.д.

                 В секции инициализации  доступными  считаются :

  • внешние  обьявления  секции связи ;
  • внутренние  обьявления  секции реализации;
  • внешние обьявления всех модулей, имена  которых  присутствуют в разделе

USES этого модуля.

            Например :

            UNIT   ReadFile;

                      { Секция связи }

                         INTERFACE

                             VAR                      TextFile   :  text;

                            PROCEDURE       DisPlay;

                     { Секция  реализации }

                      IMPLEMENTATION

                           VAR                        FileName  :  string;

                           PROCEDURE       DisPlay;

                                  VAR                A                :  string;

                                BEGIN        

                                        Readln(TextFile,A);    

                                        Writeln(A);

                                END;

                   { Секция  инициазации }

                    BEGIN        

                          Writeln( ‘ Введите имя файла : ’);

                          Readln( FileName);  

                          Assing (TextFile, FileName );      

                          Reset (TextFile);

                    END.

            В этом примере рассматривается  модуль, в секции инициализации которого производится

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

      в главной программе создать текстовый файл.

      Например :

          PROGRAM        Exampl;

          USES                  ReadFile;     

          BEGIN

                                      Writeln( ‘ Процедура  DisPlay  еще не вызвана ’);

                                      DisPlay;

           END.

                Перед началом работы этой программы управление будет передано секциии инициа-

       лизации  модуля ReadFile, вызывающего у пользователя запрос имени файла, на что  можно        

       ввести  имя файла с исходным  текстом программы Exampl, которая выдаст  сообщение :

       “  Процедура  DisPlay  еще не вызвана “.

 

           Вопросы по теме 4 :  

    1.   Назначение секции инициализации.

    2.   Что считается  доступным  в  этой секции ?

    3.   Структура  этой  секции ?

       Тема 5. Организация связей  между программными

                                       модулями

     

Программа на  языке  Pascal  имеет  четко выраженную иерархическую структуру.Пример

   программы   из пяти модулей  иерархической структуры представлен на рисунке 1.

 

                                  USES  A,B,D

   USES  C,D,E                                                                                               USES E

                                                            Рисунок  1

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

модулей  самим к себе, как  прямые, так и косвенные -  недопустимы. Вызов модулей возможен

из главной программы  или  из других  модулей.

       Некоторые  замечания  при  организации  межмодульных связей :

1.   Если  в   секции  связи  модуля  С обьявлена в разделе CONST некая константа J. Эта конс-

      танта будет размещена  до начала  работы  программы  в  сегменте   данных  программы  и

      будет там  находится  до окончания  её  работы, однако  из  главной  программы  обращение

      к ней  не будет обработано, так как  в  разделе  USES  главной  программы  не  указан

      модуль C.

   2.   Например :  В  секции  связи  модуля   D  обьявлена  в  разделе  VAR  некая   переменная Y.( Рис.2 )

         

                                                                 Рисунок  2

       

        Переменные  с такими же  именами  могут  быть  обьявлены  и в главной программе, и  в  мо-

       дуле А.  Обращения  к  переменным  из  своего  модуля  возможны  по  имени Y. Однако  

       обращение  к  переменной  с  таким  же  именем Y  из  других   модулей  должно  иметь  уточ-

       нённое  имя A.Y  ( для  переменной  из  модуля A ) или  D.Y( для  переменной  из  модуля D ).

 3.   При   описанной  выше  структуре  модульной программы    недопустимы  прямые  и   косвен-

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

       оператора  USES  в секции связей.  Однако на уровне  реализации  в  предложении USES  можно

       осуществить эти ссылки. Ниже приведён пример  программы, которая осуществляет  вывод  в  за-

       данную точку  экрана,  с координатами  X,Y, -  сообщения  MSG. При обращении  к процедуре

       возможен  выход  координат за пределы  экраны, что  должно повлечь за собой  вывод  сообщения

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

       Например :

 

       UNIT  Term;

          INTERFACE

              PROCEDURE   WriteXY (X,Y : intrger;  MSG : string);

          IMPLEMENTATION

               USES  Err {  Ссылка  на  модуль Err },

                           Crt  { В  модуле  Crt   находится  процедура  WriteXY   };

                PROCEDURE   WriteXY;

                            BEGIN

                              { Условие  попадание координат точки  на экран }

                               If   ( X  in  [ 1 .. 80 ] )  and  ( Y   in   [1 .. 25 ] )         then

                                               BEGIN

                                                      { Позиционирование  курсора }    

                                                     GotoXY (X,Y);      

                                                      Write(MSG);

                                               END                                                             else

                                                      { Вызов  процедуры  обработки ошибок}

                                                       ShowErr( ‘  Координаты  при  обращении к  процедуре

                                                       WriteXY  заданы  неверно ’ );

                             END;

END;

{ Модуль Err  }

UNIT  Err;

       INTERFACE

              PROCEDURE   ShowErr ( ErrMsg : string);

       IMPLEMENTATION

               USES  Term {  Ссылка  на  модуль  Term },

               PROCEDURE   ShowErr ;

                    BEGIN

                       { Вывод  сообщения об ошибке  в нижнюю строку  экрана }

                       WriteXY(24,25, ErrMsg);

                    END;

END.

{  Главная программа инициализирует выполнение  модулей  Term  и Err }

PROGRAM  Glav;

USES Term;

      BEGIN

          WriteXY (  1,1, ‘   Верхний левый  угол ’);      

           {  Процедура  WriteXY (  5,105, ‘ ‘)  организует пустую строку, так как  точка  с  

               координатой  5,105  лежит за пределами  экрана }

          WriteXY (  5,105, ‘ ‘);

     END;

END.

 

4. Если  необходимо в  двух модулях A  и B пользоваться  одними  и  теми  же  данными,

     то  обьявлять их  в  каждом  из  них  -  неверно, в  этом случае обьявления будут   отно-

     сится  к  разным  обьектам.  В  этом  случае  следует  обьявить эти  данные  в секции  связи

    одного из  модулей ( например  A), а  в  другом  (например в B) предусмотреть  ссылку на A.

    Причём  эту ссылку  можно  разместить  в  предложении  USES секции  связи  модуля B.

           Такой  приём  использовать  невсегда  можно. Ведь  если  модули  ссылаются  один  на

      другой, то предложения  USES можно  размещать  только  в  секции  реализации модуля A.  

            Тогда  внешние  обьявления одного  модуля  будут  недоступны  для  другого. Если  

    же оператор USES поместить  в секцию  реализации, то нельзя будет использовать  общие  

    обьявления  для  описания  параметров  процедур  и  функций. Поэтому  предлагается сле-

    дующий    приём.

           Можно  сформировать  ещё  один  модуль C, в котором  разместить  только  обьявления

   разделяемых   модулями  A и  B  данных, а  в  секциях  связи каждого  из  этих  модулей

   предусмотреть ссылки на  этот третий  модуль С.  В  тексте этого модуля С  секция  реали-

   зации  будет  отсутствовать, но ключевой  слово IMPLEMENTATION останется.

 

   Например :

 UNIT   B;

       INTERFACE

                TYPE   ShareRec = Record

                                        X,Y    :   integer;

                                    Z        :   Byte;

                               END;

       IMPLEMENTATION

 END.

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

  данные  используются несколькими модулями, между которыми существуют какие – то связи

  и вводить  новые не всегда  возможно и  целесообразно, логичнее  создать  новый  модуль и

  разместить в  его секциии   связи  типы, константы и переменные, разделяемые  каждым  из

  этих  модулей.  Вообще  все  глобальные  обьявления  типов, констант и переменных  всегда

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

  как  из  главной программы, так  из  каждого отдельного  модуля.

   

  Вопросы  по  теме  5:

  1. Что представляет  из себя  cтруктура  программы, состоящая  из  модулей ?
  2. Как  организовать  обращения  к  переменным  и константам  из  различных

модулей, используя  уточнённые  имена ?

         3.    Как  организовать  рекурсивные  вызовы  модулей ?

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

                нескольких  модулях ?

         Задание по теме   5:  

               

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

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

          отдельной   схеме  обращение  к  переменным, имеющим  одинаковые  имена,  из

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

 

Список использованной литературы

  1. Сергиевский М.В.,Шалашов А.В. ТУРБО ПАСКАЛЬ 7.0 Язык. Среда программирования.

                                                                  Москва. Машиностроение. 1994 г.

2 .  Немнюгин С.А. TURBO PASCAL. Практикум.  ПИТЕР. Москва – Санкт-Петербург – и т.д.                

                                                                  2003 г.

Главная программа

Модуль В

Модуль  А

Модуль С

Модуль D

Модуль E

Главная  программа         Y

USES A,D                                        A.Y    

                                                                     D.Y

Модуль  A                          

USES  D                              Y

                                                                    D.Y

                                                                     

                                                

Модуль  D                           Y                         

Y

Y

Y


По теме: методические разработки, презентации и конспекты

Turbo Pascal. Разработка программ, содержащих оператор ветвления

Изучение программирования и языков программирования, таких как Basic, Pascal, C++, Delphi и др. является неотъемлемой частью информатики. С помощью языков программирования можно создавать свои п...

Реализация циклического алгоритма в среде Turbo Pascal. Оператор цикла с параметром

Урок по предметной области “Информатика” для 9-10 класса Данный материал  представляет разработку урокапо теме “Реализация циклического алгоритма в среде TurboPascal. Оператор цикла с парам...

Работа с файлами в среде Turbo Pascal 7.0

В системе Turbo Pascal  7.0  связь с внешними источниками , приемниками  и носителями информации  осуществляется только с помощью файлов....

Первые уроки программирования по теме «Целые числа» в основной школе (Среда Turbo Pascal)

Перед  каждым учителем информатики стоит задача: «чему учить в информатике и как учить». В настоящее время появилось большое кол...

Тест по программированию в среде Turbo Pascal. 9 класс

Тестироваиние по теме "Тест по  программированию в среде Turbo Pascal" 9 класс...

Turbo Pascal (ту́рбо паска́ль) — среда разработки для языка программирования Паскаль.

Турбо Паскаль - это язык высокого уровня (сокращенно ЯВУ) программирования общего назначения. Язык получил своё имя в честь великого французского математика и философаБлеза Паскаль, автора первых...

Практическая работа программирование в среде TURBO PASCAL. Управление экраном.

Практическая работа апрграммирование в среде TURBO PASCAL. Управление экраном.  9 класс.Работе состоит из двух частей - теоретической и практичекой.  В теоретической части представлены некот...


 

Комментарии

Беляева Галина Ивановна

Организация коллективного творчества