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

UNIT Globals;

INTERFACE

Const

Len=100;

Type

Tvector=array[1..len] of integer;

IMPLEMENTATION

END.

UNIT VService;

INTERFACE

{ Список импортируемых модулей)

uses Globals;

{Достаточно указать только модуль Globals, т.к. в описаниях раздела interface информация из других

стандартных и пользовательских модулей не используется.}

{ Модули, описанные в interface, будут доступны также и в implementation}

{ Список экспортируемых процедур. }

procedure VectMax (Vect:TVector; N:Byte);{ Процедура нахождения и печати максимального элемента массива}

procedure VectMin (Vect:TVector; N:Byte);{ Процедура нахождения и печати минимального элемента массива}

procedure VectInverse (var Vect:TVector; N:Byte); { Процедура переворота элементов массива в обратном порядке }

IMPLEMENTATION

{ Список "личного" импорта модуля }

uses Crt;

{ Для рассматриваемого примера здесь

необходимо указать только модуль Crt. Хотя информация из модуля Globals используется в implementation, указывать его в этом списке недопустимо, т.к. каждый модульможет быть указан толькоодин раз — или в interface, илив implementation }

{Модуль Crt вместо implementation можно было бы описать в interface. Однако это считается плохим стилем написания модулей, т.к. информация из Crt в описаниях interface не используется.}

procedure PrintVect (Vect:TVector; N:Byte);

{Локальная (внутренняя) для модуля процедура, выполняющая печать элементов вектора}

{Заголовки внутренних процедур и функций описываются всегда полностью (с параметрами).}

var

i:Byte;

begin

writeln('Элементы вектора:');

fori:= 1 to N do

write (Vect[i]:5,' ');

writeln;

{!!! Заголовки процедур и функций, которые уже }

{!!! описаны в разделе interface, в разделе }

{!!! реализации можно указывать без параметров.)

End;

procedure VectMax;

var

Max: Integer;

i: Byte;

begin

Max:= Vect[1];

for i:= 2 toN do

if Vect[i] > Max then Max:= Vect[i];

ClrScr;

PrintVect (Vect, N);

writeln('Максимальный элемент вектора:', Max)

end;

procedure VectMin;

var

Min: Integer;

i Byte;

begin

Min:= Vect[l];

for i:= 2 to N do

if Vect[i] < Min then Min: = Vect[i];

ClrScr;

PrintVect (Vect, N);

writeln('Минимальный элемент вектора:', Min)

end;

procedure VectInverse;

var

Temp: Integer;

i: Byte;

begin

ClrScr;

writeln('Вектор до переворота:');

PrintVect (Vect,N);

for i:= 1 to N div 2 do

begin

Temp:= Vect[i];

Vect[i]:=Vect[N-i+1];

Vect[N-i+1]:= Temp;

end;

writeln('Вектор после переворота:’);

PrintVect(Vect,N);

end;

{Раздел инициализации отсутствует.}

END.

Program Main;

{ Главная программа }

uses Crt, Globals, VService;

var

A: TVector;

i, n: Byte;

begin

ClrScr;

writeln('Введите длину массива <= 100: ');

readln(N);

writeln('Введите элементы массива: ');

fori:= 1 to N do

read(A[i]);

readln;

VectMax (A, N);

readln;{ Задержка результата на экране до нажатия Enter }

VectMin (A, N);

readln; { Задержка результата на экране до нажатия Enter }

VectInverse (А, N)

end.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: