Внешние модули (unit) в Тurbo Pascal Модуль (unit) в системе Тurbo Pascal – автономно компилируемая именованная программная единица, не выполняющаяся самостоятельно. Для использования модуля в вызывающей программе необходимо указать его имя в uses-части. Отличия модуля unit от процедуры: • модуль может включать более одной процедуры; • модуль может включать не только процедуры. Поэтому модуль не вызывается как процедура, а подключается, т. е. становится доступным, объединяется с вызывающей программой. Таким образом, модуль в системе турбо-Паскаль - средство более мощное, чем механизм внешних процедур.
● Структура модуля имя должно совпадать с именем файла unit <имя модуля>; {интерфейсная часть - описания глобальных объектов} interface Для процедур и функций <uses-часть> записываются только <описания глобальных констант, типов, переменных> заголовки <описания глобальных процедур и функций> {исполняемая часть} В заголовках можно опустить список формальных implementation <описания локальных объектов> параметров и тип результата для функции <описания глобальных процедур и функций в порядке их перечисления в разделе interface> Исполняется до передачи управления {инициирующая часть} основной программе. Может [begin отсутствовать. <операторы для подготовки программы к работе> ] end. В инициирующую часть можно включать вспомогательные операции, подготавливающие программу к работе, например, операции подготовки файлов assign, reset, rewrite.
Использование модулей Подключение модуля к программе происходит по директиве: Uses «имя 1» , «имя 2» ; где «имя 1» , «имя 2» - имена модулей. Uses может использоваться в разделах interface и implementation. Примеры модулей. Unit Student; Interface Const F=20; N=15; BL=5; Type TF=string[F]; TN=string[N]; TO=string[N]; Stud=record Fam: TF; Name, Otch: TN; Ball: array[1. . BL]of 1. . 5; End; implementation End. {Основная или вызывающая программа} Uses Student; Var S: array[1. . 60] of Stud; Begin ………………… End.
Пример 2. Модуль с интерфейсным и реализующим разделами. (Модуль арифметических действий над комплексными числами) Unit Compl; Interface Type Complex= record Re, Im: real; End; Procedure Readc (Var c: Complex); Procedure ADDc ( c 1, c 2: Complex ; Var c: Complex); Procedure UMNc ( c 1, c 2: Complex ; Var c: Complex); ……………………. Implementation Procedure Readc; Begin Writeln(‘ Введите действительную и мнимую части’); Readln (Re, Im); End; Procedure ADDc; Begin ………………. . End; Procedure UMNc; Begin ………………. . . End; ………………………. . End.
Схема доступности объектов внешних модулей Файл с произвольным именем program. . . (. . . ); uses <имя 1>, <имя 2>; . . . Файл <имя 1>. pas unit <имя 1> interface uses <имя 2>; доступны <объявления (видимы глобальных вне модуля) объектов>. . . Файл <имя 2>. pas unit <имя 2> interface доступны (видимы вне модуля) <объявления глобальных объектов> . . . доступны (видимы вне модуля)
Компиляция модулей компиляция Текст модуля ( «имя» . PAS) ( «имя» . TPU) Результатом компиляции программной единицы program является . exe-модуль. Результатом компиляции программной единицы unit является специфический для турбо-Паскаля tpu-модуль. К моменту компиляции программы program все используемые ею модули должны быть откомпилированы, так компилятор ищет готовые. tpu-файлы. Возможные режимы компиляции: Compile, Make, Build. Опция Compile – компиляция файла, находящегося в текущем окне. Если в компилируемой программе содержатся обращения к нестандартным модулям, последние должны быть заранее откомпилированы и храниться на диске в виде. tpu -файлов.
Для сохранение результатов компиляции на диске следует: • в поле опции Options/Directories/Exe&Tpu directory задать имя директории, где будет сохранен результат компиляции; • проверить значение опции Compile/Destination: если это значение – Disk, то нажать Esc; значение сохранится; если значение – Memory, то нажать Enter; значение изменится на Disk. Опция Make – компилируется файл, заданный опцией Compile/Primary file или, если он не указан, последний редактировавшийся файл; при этом предварительно компилируются все модули, упомянутые в Uses и нескомпилированные или измененные. Опция Build – перекомпилируются все файлы с расширением. pas, имена которых указаны в операторе Uses компилируемого модуля. ● Реально существует только две схемы компиляции многомодульных программ, которыми и следует пользоваться. Компиляция снизу (раздельная) В режиме Compile компилируются все модули Unit (результат компиляции – файлы. tpu на диске), а затем - Program (результат компиляции и одновременного редактирования связей -. exe). Компиляция сверху В режиме Build или Make инициируется компиляция головного модуля (Program). Используемые им модули Unit автоматически компилируются по цепочке.