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

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

         tanh := (t – 1.0) / (t + 1.0);
              end;
              end.
       Зарезервированные слова  interface  и  implementation  здесь  играют
важную  роль.  Каждый  модуль  имеет  части  (секции),  озаглавленные  этими
словами. Секция interface (она  называется  интерфейсной  секцией)  содержит
описания констант, типов, переменных и  процедур,  доступных  из  вызывающей
программы или модуля. Секция  implementation  (секция  реализации)  содержит
исходный код программы. Она может также содержать локальные описания,  такие
как var  t:  Real;  из нашего примера.
       Каждый  модуль  начинается  с  зарезервированного   слова   unit   и
заканчивается словом end,  за  котором  следует  точка.  Для  этого  end  не
требуется  соответствующего  слова  begin,  хотя  можно  и   поставить   его
непосредственно перед end. Оператор type в начале нашего  модуля  определяет
тип Float, который в  данном  случае  эквивалентен  типу  Extended.  Указав,
справа от знака равенства любой другой  эквивалентный  тип,  можно  изменить
точность вычисления гиперболических функций.



       1.1 Структура модулей

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

|Unit module_name      |
|Interface             |
|Интерфейсная секция   |
|Implementation        |
|Секция реализации     |
|Секция инициализации  |


                                         Рис. 1. Структура модуля

       Здесь Unit ( зарезервированное слово (единица),  начинает  заголовок
модуля;  name   (   имя  модуля  (правильный  идентификатор).  Interface   –
интерфейсная секция –  содержит  те  описания  типов,  переменных  и  других
объектов  данных,  которые  можно  использовать  в  других  программах   или
модулях.   Секция   реализации   начинается   с   зарезервированного   слова
implementation. Все описания, содержащиеся  в  секции  реализации,  являются
локальными, их область  действия  –  данный  модуль.  Здесь  же  содержаться
полные описания функций и процедур модуля. Последняя часть модуля  –  секция
инициализации. Она может быть пустой и  содержать  только  зарезервированное
слово  end  или  включать  в   себя   исполняемые   операторы,   выполняющие
необходимые действия по инициализации (например, по  присваиванию  начальных
значений переменным) модуля.
       В качестве примера  рассмотрим  модуль  func1  /см.  приложение  А/,
расширяющий вычислительные возможности Турбо Паскаля, так  как  он  содержит
функции, отсутствующие в стандартных модулях  системы.  Среди  «стандартных»
функций –  синус  (Sin),  косинус  (Cos),  арктангенс  (ArcTan),  экспонента
(Exp), натуральный логарифм (Ln), квадрат числа (Sqr)  и  квадратный  корень
из него (Sqrt). В модуле func1 имеются тангенс (Tan),  арксинус  (ArcSin)  и
арккосинус (ArcCos), функции перевода градусной меры в радианную и  наоборот
(Degrees_to_Radians,  Radians_to_Degrees),  набор  гиперболических   функций
(Sinh, Cosh, Tanh), а  также  десятичный  логарифм  (Log10)  и  произвольная
степень числа (Power).
       Напомню математическое определение гиперболических функций:
       [pic]
       [pic]
       [pic]
       В нашем примере интерфейсная секция содержит описания  вещественного
типа float, а также константу  Infinity  –  «бесконечно  большое  значение».
Бесконечность здесь понимается, разумеется,  в  смысл  машинной  арифметики,
как значение, близкое к максимально допустимому  для  типа  Extended.  Далее
следуют заголовки функций модуля.
       Секция реализации содержит константы, используемые в  подпрограммах-
функциях.  Затем  идут  полные   описания   функций.   Вычисление   тангенса
использует «классическое» определение этой функции как  отношение  синуса  к
косинусу. Учтено также приближение значения  тангенса  к  бесконечности  при
определенных  значениях  аргумента.  В  этом   случае   функция   возвращает
«машинную бесконечность».
       При программировании арксинуса и арккосинуса следует  учитывать  то,
что  эти  функции  –  многозначные.  В  нашем  случае  вычисляется  «главное
значение», лежащее в интервале [-(/2, (/2] (для арксинуса) или [0,  (]  (для
арккосинуса) радиан. Для этого  используются  формулы,  известные  из  курса
элементарной математики.
       При    вычислении    гиперболических    функций    учитывается    то
обстоятельство, что  уже  при  относительно  небольших  значениях  аргумента
вычисление  экспоненты  приводит  к  арифметическому  переполнению.  В  этом
случае функция возвращает «бесконечное» значение.



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

       Заголовок  модуля  состоит  из  зарезервированного  слова   Unit   (
следующего за ним имени модуля. Для правильной работы среды Турбо Паскаля  и
возможности подключения средств, облегчающих  разработку  крупных  программ,
это имя должно совпадать с именем  дискового  файла,  в  который  помещается
исходный текст модуля. Если, например, имеем заголовок
       Unit Global;
       то исходный  текст  соответствующего  модуля  должен  размещаться  в
дисковом файле GLOBAL.PAS.  Имя  модуля  служит  для  его  связи  с  другими
модулями  и  основной  программой.  Эта  связь  устанавливается  специальным
предложением
       Uses <сп.модулей> 
       Здесь Uses - зарезервированное слово (использует);
       <сп.модулей> - список модулей, с которыми устанавливается связь;
элементами списка являются имена модулей, отделяемые друг от друга
запятыми, например: 

                                      Uses CRT, Graph, Global:
       Если объявление Uses... используется, оно  должно  открывать  раздел
описаний основной программы. Модули  могут  использовать  другие  -  модули.
Предложение Uses в модулях может следовать либо сразу  за  зарезервированным
словом Interface, либо сразу за словом Implementation.



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

       Через интерфейс осуществляется взаимодействие основной  программы  с
модулем (модуля  с  модулем).  В  интерфейсе  указываются  константы,  типы,
переменные, процедуры и функции, которые могут  быть  использованы  основной
программой (модулем) при вызове этого модуля.
       Интерфейсная часть открывается зарезервированным словом Interface. В
этой части содержатся объявления всех  глобальных  объектов  модуля  (типов,
констант,  переменных  и  подпрограмм),  которые  должны  стать   доступными
основной  программе  и/или  другим  модулям.   При   объявлении   глобальных
подпрограмм в интерфейсной части указывается только их заголовок, например:
       Unit Cmplx; 
       Interface 

                    type 

                           complex = record 

                           re, Im : real 

                    end; 

            Procedure AddC (x, у : complex; var z : complex);

            Procedure MulC (x, у : complex; var z : complex);
        Если теперь в основной программе написать предложение
                                 Uses Cmplx;
то в программе станут доступными тип Complex и две процедуры ( AddC  и  МulC
из модуля Cmplx.
       Отметим,   что   объявление   подпрограмм   в   интерфейсной   части
автоматически  сопровождается  их  компиляцией  с  использованием   дальней;
модели памяти. Таким  образом,  обеспечивается  доступ  к  подпрограммам  из
основной программы и других модулей.
       Следует  учесть,  что  все  константы  и   переменные,   объявленные
интерфейсной части модуля, равно как и  глобальные  константы  и  переменные
основной программы, помещаются компилятором Турбо Паскаля  в  общий  сегмент
данных  (максимальная  длина  сегмента  65536   байт).   Порядок   появления
различных разделов объявлений и их количество может быть произвольным.  Если
в интерфейсной части объявляются внешние  подпрограммы  или  подпрограммы  в
машинных кодах, их тела (т.е. зарезервированное  слово  External,  в  первом
случае, и машинные  коды  вместе  со  словом  Inline  (  во  втором)  должны
следовать  сразу  за  их  заголовками  в  исполняемой  части  модуля  (не  в
интерфейсной). В интерфейсной части модулей нельзя использовать  опережающее
описание.
       В интерфейсах различных модулей  недопустимо  циклическое  обращение
друг к другу, т.к. компилятор в этом случае не может установить связей.



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

       Исполняемая часть включает все подпрограммы модуля. Она может  также
включать локальные метки, константы, типы и переменные.
            Исполняемая   часть   начинается    зарезервированным    словом
Implementation и содержит описания подпрограмм, объявленных  в  интерфейсной
части.  В  ней  могут   объявляться   локальные   для   модуля   объекты   -
вспомогательные типы, константы, переменные и блоки, а также (  метки,  если
они используются в инициирующей части.
       Описанию подпрограммы, объявленной в интерфейсной  части  модуля,  в
исполняемой части должен предшествовать заголовок, в котором можно  опускать
список формальных переменных (и тип результата для  функции),  так  как  они
уже описаны в интерфейсной части. Но если заголовок подпрограммы  приводится
в  полном  виде,  т.е.  со  списком  формальных  параметров  и   объявлением
результата, он должен совпадать с  заголовком,  объявленным  в  интерфейсной
части, например:
       Unit Cmplx;
       Interface
              type
                 complex = record;
                 re, im: Real;
            end;
       Procedure AddC (x, у : complex; var r : complex);
       Implementation
       Procedure AddC;
       begin
            z.re := x.re + y.re;
            z,im := x.Im * y.im;
       end;
       end.
       Локальные переменные и константы, а также все программные коды,
порожденные при компиляции модуля, помещаются в общий сегмент памяти.
       В отличие от интерфейсов модулей в исполнительных частях модулей
допустимо циклическо
12345След.
скачать работу

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

 

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

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


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