Использование идентификаторов элементов модуля

Использование модуля в основной программе

Секция инициализации

В некоторых случаях перед обращением к модулю следует провести его инициализацию (например, установить связь с теми или иными файлами с помощью процедуры Assign, инициализировать какие-то переменные и т. д.). Необходимые действия можно выполнить в секции инициализации модуля. Эта секция начинается словом begin, после которого идут исполняемые операторы, а затем помещается слово «end..» (с точкой), например:

begin

Assign (Fl, 'FILE1.DAT')

end.

Следует иметь в виду, что операторы секции инициализации выполняются единственный раз в момент запуска программы.

Если инициализация модуля не нужна, то в секции помещается лишь слово end. (с точкой).

Чтобы использовать подпрограммы, константы, типы, переменные, описанные в интерфейсе модуля, в основной программе следует записать слово uses, после которого указать имя (имена) модуля (модулей). После этого в основной программе можно использовать любые идентификаторы (констант, типов, переменных, подпрограмм), указанные в интерфейсах перечисленных модулей.

Пример. Программа, меняющая в массиве максимальное и минимальное числа.

program EXAMPLE26; {заголовок программы}

uses Unitl, Unit2; {используемые модули}

var i: Integer;

begin

Change(Arr); {процедура замены в Unitl,

массив Arr - в Unit2}

for i := 1 to N do {N-B Unit2}

WriteLn(Arr(i])

end.

 

{модули, расположенные в других файлах}

unit Unitl; {модуль с основной подпрограммой}

interface {интерфейс первого модуля}

uses Unit2; {использование модуля с параметрами}

procedure Change (var Arr: Mass); {заголовок процедуры}

implementation {исполнительная часть}

uses UnitS; {использование модуля с вспомогательной

подпрограммой}

procedure Change; {сокращенный заголовок}

var Max, Min, i; Integer;

begin

Max := 1; Min := 1;

for i := 1 to N do {N-в Units}

begin

if Arr[i] > Arr[Max]

then Max := i;

if Arrti] < Arr[Min]

then Min := i

end;

Swap(Arr[Max], Arr[Min]) {замена местами макс.и мин.чисел, процедура в Units}

end

end. {конец Unitl}

 

 

unit Unit2; {модуль с параметрами}

interface {интерфейс второго модуля}

const N = 5; {число элементов}

type Mass = array!1..N] of Real; {тип массива}

const Arr: Mass = (0.5, -2.0, 1.0, 3.5, 7.0);

{типизированная константа}

implementation {исполнительная часть}

end. {конец UNIT2}

 

 

unit UnitS; {модуль с вспомогательной подпрограммой}

interface {интерфейс третьего модуля}

procedure Swap(var X, Y: Real}

implementation {исполнительная часть}

procedure Swap(var X, Y: Real) {перемещение двух чисел}

var Z: Real;

begin

Z := X; X :- Y; Y := Z

end

end. {конец UNITS}

Как правило, идентификаторы объектов модуля используются в основной программе (или другом модуле) обычным образом. Однако может оказаться, что используемый идентификатор элемента модуля совпадает с идентификатором использующей его программы. Чтобы различить их, при обращении к элементу модуля указывается имя модуля, а затем через точку - идентификатор объекта (аналогично использованию полей записи).

Пример,

program EXAMPLE;

uses Unitl;

var Result, X: Real;

begin

Read (X); {чтение переменной программы}

Read (Unitl.X); {чтение переменной модуля}

Result := X {переменная программы}

+Unitl.X {переменная модуля}

end

 

.

unit Unitl;

interface

var X: Real; {переменная модуля}

implementation

end.

Литература:

1. Острейковский В.А. Информатика. М. – Высшая школа. 200г.

2. Информатика. Макарова

3. Симонович.

4. Лекции по общей информатике. Под ред. проф. Атрощенко В.А. КубГТУ, Краснодар 2004г.

5. Не знаю,что.

6. А. Епанешников, В. Епанешников. Программирование в среде Turbo Pascal 7.0. М.: «Диалог-МИФИ», 1993. 288 с.

7. Зуев Е.А. Язык программирования Turbo Pascal 6.0., 7.0. М.: Веста, Радио и связь, 1993.- 384 с.: ил.