- •Саратовский государственный технический университет
- •Паскаль: модули, стандартный модуль Crt
- •Лабораторная работа № 7 Цель работы
- •Теоретическая часть
- •Заголовок модуля
- •Интерфейс модуля
- •Исполнительная часть модуля
- •Секция инициализации
- •Использование модуля в основной программе
- •Стандартные модули
- •Модуль Crt
- •Варианты заданий
- •Содержание и оформление отчета
- •Литература
- •Паскаль: модули, стандартный модуль Crt
Секция инициализации
Операторы секции инициализации (initialization) выполняются единственный раз в момент запуска программы. Например, можно установить связь с каким-либо файлом, необходимым для работы модуля, с помощью процедуры Assign.
Секция начинается словом begin, после которой идут исполняемые операторы, заканчивается словом end. (с точкой).
В примере 1 приведены три модуля. Каждый модуль хранится в отдельном файле с именем, совпадающем с именем модуля. Первый модуль (MTypes.pas) содержит описание новых типов и используемых констант, второй (AddFuncs.pas) – процедуру, меняющую значения двух переменных целого типа, третий (Funcs.pas) - процедуру, меняющую максимальный и минимальный элемент массива местами с использованием процедуры, описанной во втором модуле.
Пример 1:
unit MTypes; {первый модуль} interface {интерфейсная часть} const NMax = 5; type Mass=array [1..Nmax] of Integer; implementation {исполнительная часть – в данном случае пустая} end.
unit AddFuncs; {второй модуль} interface {интерфейсная часть} procedure Swap(var A, B : Integer); implementation {исполнительная часть } procedure Swap; var X : Integer; begin X := A; A := B; B := X; end; end.
unit Funcs; {третий модуль} interface {интерфейсная часть} uses MTypes; var HelloStr : String; procedure SwapMinMax(var A : Mass); implementation {исполнительная часть } uses AddFuncs; procedure SwapMinMax; var I, i_max, i_min : Integer; begin i_max := 1; i_min := 1; for I := 2 to Nmax do begin {поиск максимального и минимального элемента в массиве} if A[I] > A[i_max] then i_max := I; if A[I] < A[i_min] then i_min := I; end; if i_max <> i_min then Swap(A[i_max], A[i_min]); {замена элементов с использованием процедуры из модуля AddFuncs} end; initialization {выполняется в момент запуска программы} HelloStr := 'Привет МИР!'; {присвоение значения строковой переменной} end. |
Использование модуля в основной программе
Для использования подпрограмм, констант, типов, переменных, описанных в интерфейсе модуля в основной программе, нужно поместить имя модуля в раздел используемых модулей, который начинается зарезервированным словом uses, после которого указываются через запятую имена используемых модулей. После этого в программе можно использовать идентификаторы, указанные в интерфейсах перечислены модулей.
Пример 2:
program Example; uses MTypes, Funcs; const Arr : Mass=(0,-9,1,7,2); var i : Integer; NMax : Integer; begin writeln('В переменной HelloStr хранится: ', HelloStr); NMax := 25; SwapMinMax(Arr); for I := 1 to MTypes.NMax do write(Arr[i],' '); writeln; readln; {задержка для просмотра} end. |
В примере 2 показано использование процедур, описанных в модулях. Сначала выводится значение переменной HelloStr, которое было присвоено ей в момент запуска программы в разделе инициализации модуля Funcs. Затем с помощью процедуры SwapMinMax, описанной в модуле Funcs, меняются местами максимальный и минимальный элементы массива. Процедура SwapMinMax в свою очередь использует процедуру Swap, описанную в модуле AddFuncs. Основная программа и модули Funcs, AddFuncs используют тип данных Arr и константу NMax, описанные в модуле MTypes.
Иногда идентификатор элемента модуля может совпадать с идентификатором использующей его программы, как, например, идентификатор NMax. Для их различия используется квалификатор, в качестве которого выступает имя модуля: MTypes.NMax.
