Модуль в паскале как пишется

от admin

Программирование. Модули Pascal-Паскаль

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

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

Основным принципом модульного программирования является принцип «разделяй и властвуй». Модульное программирование – это организация программы как совокупности небольших независимых блоков, называемых модулями, структура и поведение которых подчиняются определенным правилам.

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

Термин «модуль» в программировании начал использоваться в связи с внедрением модульных принципов при создании программ. В 70-х годах под модулем понимали какую-либо процедуру или функцию, написанную в соответствии с определенными правилами. Например: «Модуль должен быть простым, замкнутым (независимым), обозримым (от 50 до 100 строк), реализующим только одну функцию задачи, имеющим одну входную и одну выходную точку».

Первым основные свойства программного модуля более-менее четко сформулировал Парнас (Parnas): «Для написания одного модуля должно быть достаточно минимальных знаний о тексте другого». Таким образом, в соответствии с определением, модулем могла быть любая отдельная процедура (функция) как самого нижнего уровня иерархии (уровня реализации), так и самого верхнего уровня, на котором происходят только вызовы других процедур-модулей.

Таким образом, Парнас первым выдвинул концепцию скрытия информации (information hiding) в программировании. Однако существовавшие в языках 70-х годов только такие синтаксические конструкции, как процедура и функция, не могли обеспечить надежного скрытия информации, поскольку подвержены влиянию глобальных переменных, поведение которых в сложных программах бывает трудно предсказуемым.

Решить эту проблему можно было только разработав новую синтаксическую конструкцию, которая не подвержена влиянию глобальных переменных.

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

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

Впервые специализированная синтаксическая конструкция модуля была предложена Н. Виртом в 1975 г. и включена в его новый язык Modula . Насколько сильно изменяются свойства языка, при введении механизма модулей, свидетельствует следующее замечание Н.Вирта, сделанное им по поводу более позднего языка Модула-2: «Модули – самая важная черта, отличающая язык Модула-2 от его предшественника Паскаля».

По своей организации и характеру использования в программе модули Паскаля близки к модулям-пакетам (PACKAGE) языка программирования Ада. В них так же, как и в пакетах Ады, явным образом выделяется некоторая «видимая» интерфейсная часть, в которой сконцентрированы описания глобальных типов, констант, переменных, а также приводятся заголовки процедур и функций. Появление объектов в интерфейсной части делает их доступными для других модулей и основной программы. Тела процедур и функций располагаются в исполняемой части модуля, которая может быть скрыта от пользователя.

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

Модули представляют собой прекрасный инструмент для разработки библиотек прикладных программ и мощное средство модульного программирования. Важная особенность модулей заключается в том, что компилятор размещает их программный код в отдельном сегменте памяти. Длина сегмента не может превышать 64 Кбайт, однако количество одновременно используемых модулей ограничивается лишь доступной памятью, что позволяет создавать большие программы.

Структура модулей Паскаля

Всякий модуль Паскаля имеет следующую структуру:

Здесь UNIT – зарезервированное слово (единица); начинает заголовок модуля;

  • <имя_модуля> — имя модуля (правильный идентификатор);
  • INTERFACE – зарезервированное слово (интерфейс); начинает интерфейсную часть модуля;
  • IMPLEMENTATION – зарезервированное слово (выполнение); начинает исполняемую часть модуля;
  • BEGIN – зарезервированное слово; начинает инициирующую часть модуля; причем конструкция begin <инициирующая часть> необязательна;
  • END – зарезервированное слово – признак конца модуля.

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

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

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

то исходный текст этого модуля должен размещаться на диске в файле primer .pas .

Имя модуля Паскаля служит для его связи с другими модулями и основной программой. Эта связь устанавливается специальным предложением:

Здесь USES – зарезервированное слово (использует);

<список модулей> — список модулей, с которыми устанавливается связь; элементы списка – имена модулей через запятую.

Если в Паскале модули используются, то предложение uses <список модулей> должно стоять сразу после заголовка программы , т.е. должно открывать раздел описаний основной программы. В модулях Паскаля могут использоваться другие модули. В модулях предложение uses <список модулей> может стоять сразу после слова interface или сразу после слова implementation . Допускается и два предложения uses , т.е. оно может стоять и там, и там.

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

Интерфейсная часть открывается зарезервированным словом INTERFACE . В этой части содержатся объявления всех глобальных объектов модуля (типов, констант, переменных и подпрограмм), которые должны быть доступны основной программе и (или) другим модулям Паскаля. При объявлении глобальных подпрограмм в интерфейсной части указывается только их заголовок, например:

Пример фрагмента программы

Если теперь в основной программе написать предложение

то в программе станут доступными тип cmplex и две процедуры – AddC и MulC из модуля complexn .

Отметим, что объявление подпрограмм в интерфейсной части автоматически сопровождается их компиляцией с использованием дальней модели памяти. Таким образом, обеспечивается доступ к подпрограммам из основной программы и других модулей Паскаля.

Следует учесть, что все константы и переменные, объявленные в интерфейсной части модуля Паскаля, равно как и глобальные константы и переменные основной программы, помещаются компилятором Турбо Паскаля в общий сегмент данных (максимальная длина сегмента 65536 байт).

Порядок появления различных разделов объявлений и их количество может быть произвольным. Если в интерфейсной части объявляются внешние подпрограммы или подпрограммы в машинных кодах, их тела (т.е. зарезервированное слово EXTERNAL , в первом случае, и машинные коды вместе со словом INLINE – во втором) должны следовать сразу за их заголовками в исполняемой части модуля (не в интерфейсной!). В интерфейсной части модулей Паскаля нельзя использовать опережающее описание.

Исполняемая часть модуля Паскаля

Исполняемая часть модуля Паскаля начинается зарезервированным словом IMPLEMENTATION и содержит описания подпрограмм, объявленных в интерфейсной части. В ней могут объявляться локальные для модуля объекты – вспомогательные типы, константы, переменные и блоки, а также метки.

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

Пример модуля Паскаля

Инициирующая часть модуля Паскаля

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

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

Пример модуля Паскаля

Не рекомендуется делать инициирующую часть пустой, лучше ее опустить.

Компиляция модулей Паскаля

В среде Турбо Паскаль имеются средства, управляющие способом компиляции модулей и облегчающие разработку больших программ. Определены три режима компиляции: COMPILE , MAKE , BUILD. Режимы отличаются способом связи компилируемого модуля или основной программы с другими модулями, объявленными в предложении USES .

При компиляции модуля или основной программы в режиме COMPILE все, упоминаемые в предложении USES модули, должны быть предварительно откомпилированы, и результаты компиляции должны быть помещены в одноименные файлы с расширением TPU (от англ. Turbo Pascal Unit). Файл с расширением TPU создается автоматически при компиляции модуля Паскаля.

В режиме MAKE компилятор проверяет наличие TPU -файлов для каждого объявленного модуля. Если какой-либо файл не найден, система ищет одноименный файл с расширением PAS , т.е. файл с исходным текстом модуля Паскаля. Если таковой файл найден, система приступает к его компиляции. Кроме того, в этом режиме система следит за возможными изменениями исходного текста любого используемого модуля. Если в PAS -файл внесены изменения, то независимо от того, есть ли в каталоге соответствующий TPU -файл или нет, система откомпилирует его перед компиляцией основной программы. Более того, если изменения внесены в интерфейсную часть, то будут откомпилированы все другие модули, обращающиеся к нему. Режим MAKE существенно облегчает процесс разработки крупных программ с множеством модулей Паскаля: программист избавляется от необходимости следить за соответствием TPU -файлов их исходному тексту, т.к. система делает это автоматически.

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

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

Пример ошибок модуля Паскаля

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

Пример исправленных ошибок модуля Паскаля

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

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

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

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

Текст этого модуля следует поместить в файл complexn . pas . Вы можете его откомпилировать, создав TPU -файл.

В следующей программе осуществляются арифметические операции над комплексными числами:

Арифметические операции над комплексными числами

После объявления Uses complexn программе стали доступны все объекты, объявленные в интерфейсной части модуля complexn . При необходимости можно переопределить любой из этих объектов, как произошло, например, с типизированной константой c , объявленной в модуле Паскаля. Переопределение объекта означает, что вновь объявленный объект «закрывает» ранее определенный в модуле одноименный объект. Чтобы получить доступ к «закрытому» объекту, нужно воспользоваться составным именем: перед именем объекта поставить имя модуля и точку. Например :

Этот оператор выведет на экран содержимое «закрытой» типизированной константы, объявленной в модуле Паскаля из предыдущего примера.

Стандартные модули Паскаля

В Турбо Паскале имеется 8 стандартных модулей, в которых содержится множество различных типов, констант, процедур и функций. Этими модулями являются SYSTEM, DOS, CRT, GRAPH, OVERLAY, TURBO3, GRAPH3. Модули Паскаля GRAPH , TURBO 3, GRAPH 3 выделены в отдельные TPU -файлы, а остальные входят в состав библиотечного файла TURBO . TPL . Лишь один модуль Паскаля SYSTEM подключается к любой программе автоматически, все остальные становятся доступны только после указания их имен в списке подключаемых модулей.

Модуль Паскаля SYSTEM. В него входят все процедуры и функции стандартного Паскаля, а также встроенные процедуры и функции, которые не вошли в другие стандартные модули (например, INC , DEC , GETDIR и т.п.). Модуль Паскаля SYSTEM подключается к любой программе независимо от того, объявлен ли он в предложении USES или нет, поэтому его глобальные константы, переменные, процедуры и функции считаются встроенными в Турбо Паскаль.

Модуль Паскаля PRINTER делает доступным вывод текстов на матричный принтер. В нем определяется файловая переменная LST типа TEXT , которая связывается с логическим устройством PRN. После подключения данного модуля Паскаля можно выполнить, например, такое действие:

Пример стандартного модуля Паскаля

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

Читать:
Чем инкрементная модель отличается от итеративной

Модуль Паскаля GRAPH . Содержит набор типов, констант, процедур и функций для управления графическим режимом работы экрана. Этот модуль позволяет создавать различные графические изображения и выводить на экран надписи стандартными или созданными программистом шрифтами.

Модуль Паскаля DOS . В модуле собраны процедуры и функции, открывающие доступ к средствам дисковой операционной системы MS — DOS .

Модуль Паскаля OVERLAY . Данный модуль необходим при разработке громоздких программ с перекрытиями. Турбо Паскаль обеспечивает создание программ, длина которых ограничивается лишь основной оперативной памятью. Операционная система MS — DOS оставляет программе около 580 Кбайт основной памяти. Память такого размера достаточна для большинства исполняемых программ, тем не менее, использование программ с перекрытиями снимает это ограничение.

Модули Паскаля TURBO 3 и GRAPH 3 введены для обеспечения совместимости с ранней версией системы Турбо Паскаль.

Unit/ru

A Unit — это файл исходного кода (или двоичный, скомпилированный из этого файла), который был написан с использованием языка программирования Pascal и разработан как отдельный модуль в Приложении или Объектном модуле. Слово Unit — это зарезервированное слово.

Contents

Назначение

Модуль может использоваться там, где функциональность должна быть предоставлена прикладной программе или другим модулям. Он позволяет писать код, который выполняет эту функцию один раз и может использоваться во многих местах. Это может снизить вероятность ошибок и увеличить повторное использование кода.

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

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

Модуль, которому требуется доступ, например, процедуры и типы данных в другом модуле, должен указывать те модули, к которым он должен получить доступ, в разделе uses (но связывание выполняется без необходимости писать make-файл, как в C).

Модуль также можно использовать для объявления серии глобальных констант или переменных для использования всем приложением без фактического содержания исполняемого кода. Это похоже на ключевое слово common в языке программирования Fortran.

Формат

Модуль задается с помощью ключевого слова unit , за которым следует идентификатор модуля. Идентификатор модуля (в следующем примере имя модуля — «minimalunit») должен соответствовать имени файла, в котором он записан. Минимальный рабочий пример (который ничего не делает):

где часть после раздела interface соответствует public -части других языков и раздел implementation делает это для private .

Более продвинутая базовая структура:

Необязательные разделы initialization и finalization могут следовать за кодом, который выполняется в начале/конце программы.

Подробный пример модуля

Чтобы подключить модуль, просто используйте оператор uses .

При компиляции FPC проверяет эту программу на зависимости модулей. Он должен быть в состоянии найти модуль «randomunit».

Самый простой способ удовлетворить это — иметь модуль, имя которого совпадает с именем файла, в котором он записан (добавление .pas — это нормально и приветствуется). Файл модуля может находиться в том же каталоге, где находится исходник программы, или в пути к модулю, по которым FPC ищет модули.

Приоритетность модуля

Когда в разделе uses описано несколько модулей, могут возникнуть конфликты с идентификаторами (процедурами, типами, функциями и т.д.), которые имеют одно и то же имя в нескольких модулях. В FreePascal последний упомянутый модуль становится «победителем» и предоставляет код для модуля, в который он включен.

Если вы хотите добиться другого поведения, вы можете явно добавить unitname.identifier, чтобы указать модуль, который вы хотите использовать, или изменить порядок модулей. Первый вариант часто оказывается наиболее очевидным.

Явное указание объявленного модуля:

Обратите внимание, что модуль interestCalculations по-прежнему будет выполнять свои собственные вычисления со своим собственным basisType (здесь currency ). Вы можете изменять («тень») объявления только в текущей области видимости (и по убыванию).

Модуль в паскале как пишется

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

23.1. Назначение и структура модулей

Модулями называют заранее скомпилированные библиотеки подпрограмм, которые программист может использовать для создания новых программ. При программировании на Паскале модули подключаются из специальных библиотечных файлов, имеющих тип *. tpu ( Turbo Pascal Unit ). Модуль сам по себе не является выполняемой программой, но его подпрограммы используются другими программами.

Для того чтобы создать модуль, нужно написать файл с расширением *. pas , соблюдающий описанную далее структуру модуля, затем в меню Compile оболочки Паскаля установить переключатель Destination в значение Disk (как мы помним из гл. 6, это же нужно сделать, если вы собираетесь получить из своей программы на Паскале приложение *. exe ), затем собрать модуль, выбрав в меню Compile пункт Build . После устранения ошибок компиляции готовый модуль (файл с расширением *. tpu ) будет находиться в папке Паскаля.

Подробно рассмотрим общую структуру модуля.

Модуль открывается заголовком, именующим его. По этому имени модуль может быть подключен из программы оператором uses ИмяМодуля; . Имена составляются по обычным для языка правилам.

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

Раздел интерфейса является общим. В нем можно определить то, что будет видимо и доступно для любой другой программы (или модуля), использующей данный модуль. В интерфейсной части может находиться раздел us es , если модуль подключает другие модули. В таком случае ключевое слово u ses должно следовать сразу за словом i nterface .

В разделе реализации модуля находятся тела процедур и функций, объявленных в интерфейсной части. Раздел реализации является частным. Все объявления, сделанные здесь, могут быть видимы только внутри данного раздела модуля. При этом все константы, типы, переменные, процедуры и функции, объявленные в интерфейсной части видимы и в разделе реализации.

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

Раздел u ses может находиться в части реализации сразу после зарезервированного слова i mplementation .

Заголовки процедур или функций в разделе реализации должна соответствовать их объявлениям в разделе интерфейса.

Наконец, главная программа модуля, ограниченная операторными скобками begin . end. , обычно пуста. Тем не менее, в ней можно давать начальные значения данным модуля, открывать используемые им файлы, если таковые есть и т. п.

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

type point = array [1..2] of real;

procedure put (var p:point;x,y:real);

function distance (p1,p2:point):real;

function corner (p1:point):integer;

procedure put (var p:point;x,y:real);

function distance (p1,p2:point):real;

function corner (p1:point):integer;

if p1[1]>0 then begin

if p1[2]>0 then corner:=1

else if p1[2]<0 then corner:=4

else if p1[1]<0 then begin

if p1[2]>0 then corner:=2

else if p1[2]<0 then corner:=3

Наш модуль определяет тип данных Point ("точка") как массив из двух вещественных чисел. Процедура put позволяет задать для точки значения x — и y -координаты, функция distance возвращает расстояние между двумя точками, а функция corner — номер координатной четверти, в которой находится точка, или 0, если точка лежит на одной из осей координат. Разумеется, реальные модули могут включать сотни функций, если предметная область, которую они моделируют, достаточно сложна. Теперь напишем маленькую тестовую программу, использующую наш модуль:

writeln (‘Расстояние от A до B =’,

writeln (‘Номер четверти для A=’,

Оператор uses , подключающий модуль, указан в первой строке программы. Во время компиляции этой программы в текущем каталоге должен присутствовать файл points . tpu , содержащий созданный ранее модуль points .

При сборке сложной программы Паскаль ищет модули только в тех папках, которые перечислены в поле ввода Unit directories окна Directories верхнего меню Options , поэтому все готовые модули следует либо помещать в одну из этих папок, либо дописать в поле ввода нужные пути к папкам. В Приложении 4 приводится полный листинг модуля для работы с "мышью" из программы на Паскале и тесты для него.

23.2. Стандартные модули Паскаля

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

· dos — в модуле dos находятся подпрограммы взаимодействия с операционной системой и обработки файлов;

· strings — модуль обеспечивает поддержку символьных строк, завершающихся нулевым байтом;

· graph — в модуле находится библиотека, состоящая из более, чем 50 графических подпрограмм для рисования различных геометрических фигур;

· crt — подпрограммы модуля обеспечивают контроль над текстовыми режимами экрана, расширенными кодами клавиатуры, цветами, окнами и звуком;

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

Чтобы использовать любой из этих модулей, его достаточно подключить оператором uses .

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

Урок 11 — Пользовательские модули

Модули в Паскале по отношению к основной части программы напоминают подпрограммы (процедуры и функции). Но по определению они являются самостоятельными программами, ресурсы которых могут быть задействованы в других программах. Кроме того описание модулей происходит вне вызывающего приложения, а в отдельном файле, поэтому модуль – это отдельно компилируемая программа. Файл скомпилированного модуля (именно такой нужен для использования) будет иметь расширение предусмотренное средой программирования (например, .tpu , .ppu , .pcu ).

Модули создаются, как правило, для обеспечения компактности кода, о чем приходиться заботиться крупным проектам. Стоит также отметить, что использование модулей в каком-то смысле снимает ограничение на сегментацию памяти, так как код каждого модуля располагается в отдельном сегменте.

Структура модуля выглядит так:

Далее мы поочередно рассмотрим каждый из данных разделов.

Имя модуля ( Unit )

Имя модуля, следующее после ключевого слова Unit , должно совпадать с названием файла (без .pas ), в котором находиться его код. Также с помощью имени, модуль подключается к другому модулю, либо к основной программе. Для этого необходимо указать служебное слово Uses, и перечислить через запятую список подключаемых модулей:

В интерфейсной части описываются заголовки объектов, к которым будут иметь доступ другие модули и программы. Это константы, типы, переменные и подпрограммы. Например, так может выглядеть интерфейсная часть модуля Search , содержащего в себе алгоритмы поиска элементов в массиве.

Для объявления данного модуля, в программе нужно указать его имя:

После чего станет возможным использование всех описанных в интерфейсной части объектов.

Исполняемая часть ( Implementation )

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

Инициирующая часть начинает свою работу до начала выполнения основной программы. В ней (между Begin и End ), как правило, описываются операторы, предназначенные для разного рода вспомогательной работы. Данная часть может отсутствовать, либо не иметь в себе никакого кода. В первом случае нужно указать End с точкой, во втором – оставить пустое место внутри Begin и End .

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

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

компиляция модулей в Turbo Pascal

Итогом компиляции модуля в Turbo Pascal, будет файл с расширением .tpu (Turbo Pascal Unit), хранящий его код.

компиляция модулей в Free Pascal

После компиляции модуля в среде Free Pascal, создаются два файла с разными разрешениями: .ppu и .o. Первый содержит интерфейсную часть модуля, а второй (необходим для компоновки программы) – часть реализаций.

компиляция модулей в Pascal ABC.NET

Pascal ABC.Net во время компиляции модуля не генерирует код на машинном языке. В случае, если компиляция выполнена успешна код сохраняется в файле с разрешением .pcu.

Для сред программирования Turbo Pascal и Free Pascal предусмотрены три режима компиляции: Compile, Make и Build. В режиме Compile все используемые в программе модули должны быть заранее скомпилированы. Приложение в режим Make-компиляции проверяет все подключенные модули на наличие файлов с соответствующим для среды программирования разрешением (.tpu или .o). Если какой-то из них не найден, то происходит поиск файла с названием ненайденного модуля и расширением .pas. Самый надежный из режимов – Build. Поиск и компиляция файлов (с расширением .pas) в данном режиме происходит даже тогда, когда модульные файлы уже имеются.

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

Весь этот код должен находиться в отдельном файле. Теперь напишем основную программу, в которую подключим наш модуль Search .

После компиляции файлов данное приложение должно исправно работать. Конечно, если вы, отвечая на вопрос “Этот массив упорядочен?” укажите программе ложную информацию, то и она может ответить тем же.

Related Posts