Рефераты. Модули и объекты в языке Турбо Паскаль 7.0

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

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


Unit A; Unit B;

Interface Interface

        Uses S; Uses A;

        Implementation Implementation

end.

end.

Это ограничение можно обойти, если «спрятать» предложение USES в исполняемые части зависимых модулей:

Unit A; Unit B;

       Interface Interface

       Implementation Implementation

       Uses B; Uses A;

end.

end.

Дело в том, что Турбо Паскаль разрешает ссылки на частично откомпилированные модули, что приблизительно соответствует опережающему описанию подпрограммы. Если интерфейсные части любых двух модулей независимы (это непременное условие!), Турбо Паскаль сможет идентифицировать все глобальные идентификаторы в каждом из модулей, после чего откомпилирует тела модулей обычным способом.



























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

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

{UNIT Cmplx};
             INTERFACE 
            {.............................................}
                        type 
                               complex = record; 
                               re, Im : real; 
                        end 
                               Procedure AddC (x, у : complex: var z: complex); 
                               Procedure SubC (x, у : complex; var z: complex);
                               Procedure MulC (x, у : complex; var z: complex); 
                               Procedure DIvC (x, у : complex; var z: complex); 
                        const
                               с : complex = (re : 0.1; Im : -1);
                        IMPLEMENTATION 
                     {..........— . — .......... — -- — ——...... } 
                        PROCEDURE AddC; 
                                begin
                                           z.re := x.re + y.re; 
                                           z. Im := x . im + у. Im; 
                                end {AddC};
                        PROCEDURE SubC;
                                begin
                                           z .re := x.re - y.re;
                                           z . im := x.Im - y. Im;
                                end {SubC}; 
                        PROCEDURE MulC; 
                                begin
                                           z.re := x.re * y.re - x.im * y.im; 
                                           z.lm := x.re * y.im + x.im * y.re; 
                                 end {MulC}; 
                         PROCEDURE DivC; 
                                 var zz : real; 
                                 begin
                                          zz :=sqr(y.re) + sqr(y.im);
                                          z.re := (x.re * y.re + x.im * y.im) / zz;
                                          z.lm := (x.re * y.im - x.lm * y.re) / zz; 
                                 end {DIvC}:
                         END.

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

1.8  Стандартные модули


В Турбо Паскале имеется восемь стандартных модулей, в которых содержится большое число разнообразных типов, констант, процедур и функций. Этими модулями являются SYSTEM, DOS, CRT, PRINTER, GRAPH, OVERLAY, TURBO3 и GRAPHS. Модули GRAPH, TURBOS и GRAPHS содержатся в одноименных ТPU-файлах, остальные входят в состав библиотечного файла TURBO.TPL. Лишь один модуль SYSTEM подключается к любой программе автоматически, все остальные становятся доступны только после указания их имен в списке, следующем за словом USES. Ниже приводится краткая характеристика стандартных модулей. Модуль SYSTEM - в него входят все процедуры и функции стандартного Паскаля, а также встроенные процедуры и функции Турбо Паскаля, которые не вошли в другие стандартные модули (например, INC, DEC, GETDIR и т.п.). Как уже отмечалось, модуль SYSTEM подключается к любой программе независимо от того, объявлен ли он в предложении USES или нет, поэтому его глобальные константы, переменные и подпрограммы считаются встроенными в Турбо Паскаль. Модуль PRINTER делает доступным вывод текстов на матричный принтер. В нем определяется файловая переменная LST типа TEXT, которая связывается с логическим устройством PRN. После подключения модуля может быть выполнена, например, такая программа:

Страницы: 1, 2, 3, 4, 5



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.