Использование модулей
Модуль компилируется так же, как и обычные программы, но так как модуль сам по себе не выполняем, то в результате получается специальный файл с расширением TPU (Turbo Pascal Unit).
Для того чтобы получить доступ к интерфейсным объектам модуля, необходимо указать в программе имя нужного TPU-файла в разделе спецификаций используемых модулей, идущего сразу за заголовком:
USES <список модулей>;
При ее наличии в программе считаются известными все описания из интерфейсной части подключенного модуля, и к ним можно обращаться так же, как если бы они были описаны в самой этой программе:
Program Prim;
Uses Complex;
Var R,X,Y,Z: Complex;
Begin
Read (X.RE,X.IM,Y.RE,Y.IM,Z.RE,Z.IM);
R := CADD(CMUL(X,Y),CADD(CMUL(X,Z),CMUL(Y,Z)));
Writeln(R.RE,'+',R.IM,'i')
end.
Правила использования.
1. Иногда некоторые имена используемого модуля могут совпадать с именами использующей его программы. Тогда интерфейсные имена модуля, указанного в списке первым, образуют самый внешний блок программы, имена второго модуля образуют блок, вложенный в первый и т.д.
Например, в программе есть спецификация:
Uses A,B;
то вложенность блоков будет следующей:
То есть имена выполняемой программы «экранируют» одинаковые имена модулей А и В. Получить доступ к одноименным переменным модуля можно, используя составное имя.
Пусть есть модуль:
Unit A;
Interface
Var X:Real;
Procedure Pr(Y:integer);
implementation
... ...
end.
Пусть программа, использующая этот модуль, так же содержит переменную Х:
Program P;
Uses A;
Var X:Integer;
Begin
... ...
X:=8; { определение внутренней целой переменной }
A.X:=2.5; { переменная модуля (составное имя) }
Pr(X); { X - фактический целый параметр-значение }
... ...
end.
2. Разрешены косвенные использования модулей. Причем в спецификации использования указываются только модули, непосредственно используемые в программе. Пример косвенного использования модуля А в программе Р:
Unit A; Unit B; Program P;
Interfase Interfase Uses B;
... ... Uses A; ... ..
end. ... ... end.
end.
3. Схема взаимного использования модулей может иметь структуру любой сложности, но недопустимо явное или косвенное обращение модуля к самому себе.
Unit A; Unit B;
Interfase Interfase
Uses B; Uses A; <- недопустимо
... ... ... ...
4. При наличии раздела инициализации операторы модуля выполняются первыми в порядке описания:
Program P;
Uses A,B;
... ...
Выполняются:
1. операторы модуля А;
2. операторы модуля В;
3. операторы программы Р.
5. Рекомендуется, чтобы имя модуля совпадало с именем файла на внешнем носителе информации, например:
Unit Module1;
... ...
Текст программы необходимо поместить в файл Module1.pas, а оттранслированный модуль будет находиться в файле Module1.tpu. При необходимости хранить код модуля в файле с другим именем используют директиву компилятора $U. Она имеет параметр дискового имени файла с данным модулем и должна находится непосредственно перед именем модуля в спецификации пользователя. Например, запись
Uses {$U MY} MyUnit;
приведет к тому, что компилятор будет искать код модуля MyUnit в файле MY.TPU.
Стандартные модули
Обычно все используемые модули находятся в текущем каталоге или в системном библиотечном файле TURBO.TPL (Turbo Pascal Library). В этот файл можно добавлять и свои модули, но в стандартном варианте там находятся 5 модулей, содержащих все системные константы, типы, процедуры и функции:
SYSTEM,
DOS,
CRT,
PRINTER,
OVERLAY.
Остальные модули
GRAPH,
STRINGS,
WINDOS,
TURBO3 и GRAPH3
размещаются в отдельных файлах TPU.
В модуле System находятся все процедуры и функции стандартного языка Паскаль и расширения для Турбо Паскаля, относящиеся к типам и операторам. Этот модуль подключается к любой программе автоматически, то есть считается, что в каждой программе есть строка
Uses SYSTEM;
Модули Dos и WinDos содержат средства доступа к основным функциям операционной системы и обработки файлов.
Модуль Crt обеспечивает работу с экраном дисплея в текстовом режиме, работу с клавиатурой и простейшее управление звуком.
Модуль Printer содержит единственный интерфейсный элемент – файловую переменную Lst стандартного типа Text, системно связанную с печатающим устройством. Ее использование в стандартных процедурах приводит к выводу информации не на экран, а на печать.
Модуль Overlay предоставляет средства для организации программ, размер которых превышает объем доступной оперативной памяти.
Модуль Graph объединяет многочисленные программные средства управления графическим режимом работы дисплея.
Модуль Strings позволяет использовать строки с завершающим нулем, что вместе с расширенным синтаксисом позволяет создавать Windows-приложения.
Модули Turbo3 и Graph3 предназначены для обеспечения совместимости программ, созданных на ранних версиях Турбо Паскаля и сейчас не используются.
Модуль Crt
Формирование изображения на экране монитора происходит с помощью дисплейного адаптера (видеокарты). В зависимости от него дисплей может работать в разных текстовых и графических режимах.
Текстовый режим поддерживают все типы адаптеров. В этом режиме каждый символ кодируется одним байтом и занимает от 16х16 до 8х8 точек или пикселов, чем существенно экономится память. В зависимости от типа адаптера и включенного режима количество строк на экране и символов в строке может быть разным: от 40х25 до 120х50, но стандартным является размер экрана в 25 строк по 80 символов.
Черно-белый текстовый режим является частным случаем цветного. Для последнего совместно с кодом самого символа задается байт атрибута цвета. Каждый символ имеет цвет начертания, или цвет переднего плана и цвет фона. Кроме этого символ может мерцать. Эта информация кодируется в байте атрибута символа:
Биты | ||
Бит мерцания | ||
Красный | ||
Цвет фона | Зеленый | |
Голубой | ||
Яркость | ||
Цвет символа | Красный | |
Зеленый | ||
Голубой |
Таким образом, цвет фона может задаваться восьмью темными тонами, а цвет символа 16-ю, и каждому из них соответствует константа со стандартным именем.
Темные цвета:
0 (Black) – черный;
1 (Blue) – синий;
2 (Green) – зеленый;
3 (Cyan) – голубой;
4 (Red) – красный;
5 (Magenta) – фиолетовый;
6 (Brown) – коричневый;
7 (LightGrau) – светло-серый.
Светлые цвета:
8 (DarkGray) – темно-серый;
9 (LightBlue) – светло-синий;
10 (LightGreen) – светло-зеленый;
11 (LightCyan) – светло-голубой;
12 (LightRed) – светло-красный;
13 (LightMagenta) – светло-фиолетовый;
14 (Yellow) – желтый;
15 (White) – белый.
Начальная координата экрана находится в левом верхнем углу, а увеличение идет по осям Х и Y аналогично записи на бумаге по позициям и строкам. То есть экран в стандартном текстовом режиме выглядит в соответствии с рис. 9.1.
Рис. 9.1. Координаты знакомест в стандартном текстовом режиме монитора
То есть увеличение Х соответствует перебору символов в одной строке слева направо, а увеличение Y – перебору строк сверху вниз.
Дата добавления: 2016-06-29; просмотров: 1788;