- •Курсовая работа
- •Задание
- •2.3 Компиляция и использование модулей 22
- •2.5 Пример модуля 30
- •Перемножение двух матриц 35
- •2.1 Общая структура модуля
- •2.3 Компиляция и использование модулей
- •Компиляция модулей: tpu-файлы
- •Компиляция: поиск модулей. Файл turbo.Tpl
- •2.4 Стандартные модули
- •2.5 Пример модуля
- •2.5 Синтаксические диаграммы
- •I, j: byte;
2.4 Стандартные модули
Turbo Pascal имеет восемь стандартных модулей, в которых, собственно, и содержатся все упоминаемые в книге системные процедуры и функции. Имена этих модулей следующие:
SYSTEM
DOS
CRT
PRINTER
OVERLAY
GRAPH
TORBO3
GRAPHS
Программные ресурсы, сосредоточенные в стандартных модулях, образуют мощные пакеты системных средств, которые обеспечивают высокую эффективность и широкий спектр применений системы 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 и т.п. как для монохромных, так и для цветных дисплеев, и позволяет создавать разнообразные и эффективные графические программы.
Модули Turbo3 и Graph3 обеспечивают совместимость с данной версией системы Turbo Pascal тех программ, которые были разработаны для ранней версии 3.0.
2.5 Пример модуля
В данном разделе содержится законченный пример модуля, в котором сосредоточены средства работы с памятью типа "стек". Обратите внимание, что способ конкретной реализации стека скрыт в разделе 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 Top>Max then Exit;
Stack[Top] := Elem;
inc(Top)
end;
function Pop; { извлечение элемента из вершины стека }
begin
Рop := 0 ;
if Top=1 then Exit;
dec(Top);
Pop := Stack[Top]
end;
function Empty; { проверка на пустоту стека }
begin
Empty := (Top=1)
end;
function Full; { проверка на заполненность стека }
begin
Full := (Тор>Мах)
end;
begin
{ инициализация: первоначально стек пуст }
Тор := 1
end.
