Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

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

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



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

       В некоторых случаях перед обращением к модулю следует  провести  его
инициализацию (например,  установить  связь  с  теми  или  иными  файлами  с
помощью процедуры Assign,  инициализировать  какие-то  переменные  и  т.д.).
Необходимые действия можно выполнить  в  секции  инициализации  модуля.  Эта
секция начинается словом begin, после которого идут  исполняемые  операторы,
а затем помещается слово end. (с точкой), например:
       begin
            Assign (F1, ‘ FILE1.DAT ‘);
       end.
       В инициирующей части размещаются исполняемые  операторы,  содержащие
некоторый  фрагмент  программы.  Эти  операторы  исполняются   до   передачи
управления основной  программе  и  обычно  используются  для  подготовки  ее
работы. Например, в них могут инициироваться переменные, открываться  нужные
файлы, устанавливаться связи с другими  ПК  по  коммуникационным  каналам  и
т.п.:
       Unit FileText;
            Interface
       Procedure Prlnt (t : string);
       Implementation
       var f: Text;
       const
       name = ' OUTPUT. TXT ';
       Procedure Print;
       begin
            WriteLn (f, s);
       end;
       {Начало инициирующей части:}
       begin
            Assign (f, name);
            Rewrite (f);
       {Конец инициирующей части:}
       end.
       Следует иметь в виду, что операторы секции инициализации выполняются
единственный раз в момент запуска программы.
       Если инициализация модуля не нужна,  то  в  секции  помещается  лишь
слово end.



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

       В  среде  Турбо  Паскаля  имеются  средства,  управляющие   способом
компиляции модулей и облегчающие разработку крупных программных проектов.  В
частности, определены три режима компиляции: COMPILE, МАКЕ и  BUILD.  Режимы
отличаются  только  способом  связи,  компилируемого  модуля  или   основной
программы с другими модулями, объявленными в предложении USES.
       При компиляции модуля или основной программы в  режиме  COMPILE  все
упоминающиеся  в  предложении  USES  модули   должны   быть   предварительно
откомпилированы, и результаты компиляции  помещены  в  одноименные  файлы  с
расширением .TPU. Например, если в программе (модуле) имеется предложение
       Uses Global;
то на диске в каталоге, объявленном  опцией  UNIT  DIRECTORIES,  уже  должен
находиться файл GLOBAL.TPU. Файл с расширением TPU (от  англ.  Turbo  Pascal
Unit) создается в результате компиляции модуля.
       В режиме МАКЕ компилятор проверяет наличие  TPU-файлов  для  каждого
объявленного  модуля.  Если  какой-либо  из  файлов  не  обнаружен,  система
пытается отыскать одноименный файл с расширением .PAS, т.е. файл с  исходным
текстом модуля, и, если  .PAS-файл  найден,  приступает  к  его  компиляции.
Кроме  того,  в  этом  режиме  система  следит  за  возможными   изменениями
исходного текста любого используемого  модуля.  Если  в  PAS-файл  (исходный
текст модуля) внесены какие-либо изменения, то независимо от того,  есть  ли
уже в каталоге соответствующий TPU-файл или нет,  система  осуществляет  его
компиляцию перед компиляцией основной программы. Более того, если  изменения
внесены в интерфейсную часть модуля, то будут перекомпилированы также и  все
другие модули, обращающиеся к нему. Режим МАКЕ, таким  образом,  существенно
облегчает  процесс  разработки  крупных  программ  с   множеством   модулей:
программист  избавляется   от   необходимости   следить   за   соответствием
существующих TPU-файлов их исходному тексту,  так  как  система  делает  это
автоматически.
       В  режиме  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. После подключения модуля может  быть  выполнена,
например, такая программа:
       Uses Printer; 
       begin

                      WriteLn (LST, 'Турбо Паскаль');

            end.
       Модуль CRT. В нем сосредоточены процедуры и функции,  обеспечивающие
управление текстовым режимом работы экрана.  С  помощью  входящих  в  модуль
программ можно перемещ
12345След.
скачать работу

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

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ