Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Модули в Pascal и Delphi лекция.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
216 Кб
Скачать
☆

7 Стандартные модули

Turbo Pascal имеет восемь стандартных модулей, в которых, собственно, и содержатся все систем­ные процедуры и функции. Имена этих модулей следующие:

SYSTEM

DOS

CRT

PRINTER

OVERLAY

GRAPH

TURB03

GRAPH3

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

Каждый модуль хранится в одноименном TPU-файле в сис­темном каталоге Turbo Pascal. Кроме того, обычно модули System, Dos, Crt, Printer и Overlay входят в состав сис­темного библиотечного файла TURBO.TPL. Для того, чтобы воспользоваться ресурсами стандартного модуля, необходимо указать его имя в спецификации использования по обычным правилам. Исключение сделано для модуля System, имя кото­рого можно не указывать, так как содержащиеся в нем ресурсы подключаются автоматически к любой программе.

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

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

Модуль Dos содержит средства доступа к операционной системе и является программным представлени­ем системного интерфейса MS-DOS.

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

Модуль Printer содержит единственный интерфейсный элемент - переменную Lst стандартного типа text, системно связанную с логическим устройством PRN (то есть с печатаю­щим устройством, если оно имеется в конфигурации). Испо­льзование этой переменной в стандартных процедурах Write и WriteLn приводит к выводу информации на печать.

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

Модуль Graph объединяет многочисленные программ­ные средства управления графическим режимом работы дис­плея. Данный модуль обеспечивает использование всех воз­можностей наиболее распространенных типов дисплейных адаптеров - CGA, EGA, VGA, Hercules и т.п. как для монохро­мных, так и для цветных дисплеев, и позволяет создавать раз­нообразные и эффективные графические программы.

Модули ТигЬоЗ и Graph3 обеспечивают совместимость с данной версией системы Turbo Pascal тех программ, кото­рые были разработаны для ранней версии 3.0.

8 Пример модуля

Приведем законченный пример модуля, в котором сосредоточены средства работы с памятью типа "стек". Обратите внимание, что способ конкретной реализации стека скрыт в разделе implementation; поэтому переход к другой реализации стека (не в виде массива, а, например, виде связанного списка) не повлечет за собой необходимости изменения программ, использующих этот модуль (эти программы "не узнают" о таком изменении).

unit StackOps; { Операции над стеком целых }

interface

procedure Push ( Elem:integer );

function Pop : integer;

function Empty : boolean;

function Full : boolean;

implementation

{ Стек реализован в виде линейного массива элементов; переменная Тор отмечает текущую вершину стека }

const

Мах = 100;

var

Stack : array[1..Max] of integer; Top : integer;

procedure Push;

{ помещение элемента в вершину стека }

begin

if Тор>Мах then Exit; Stack[Top] := Elem; inc(Top)

end;

function Pop;

{ извлечение элемента из вершины стека }

begin

Pop := 0;

if Top=1 then

Exit;

dec(Top);

Pop := Stack[Top]

end;

function Empty;

{ проверка на пустоту стека }

begin

Empty := (Top=l)

end;

function Full;

{ проверка на заполненность стека }

begin

Full := (Тор>Мах)

end;

begin

{ инициализация: } { первоначально стек пуст } Тор := 1

end.