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.