{Секция Implementation содержит реализацию тел процедур и функций, описанных
в Interface. Также здесь могут содержаться типы данных, константы, процедуры
и функции, необходимые для работы, но которые не будут видны программе при
подключении библиотеки.}
{Процедура обмена местами двух элементов матрицы (x1,y1) и (x2,y2).
Эта процедура используется при транспонировании матрицы, но ее
нельзя вызвать при подключении библиотеки, т.к. она не объявлена
в секции Interface. }
procedure Swap (Var m: TMatrix; x1,y1,x2,y2: Integer);
var
temp: Integer;
begin
temp:= m[x1,y1];
m[x1,y1]:= m[x2,y2];
m[x2,y2]:= temp;
end;
{Ввод матрицы с клавиатуры. Параметры процедуры здесь не указаны, т.к. они есть в секции Interface }
procedure MatrInput;
var
i,j: Integer;
begin
for i:=1 to n do
begin
Write(i:3,'-я строка: ');
for j:=1 to n do Read(m[i,j]);
ReadLn;
end;
end;
{Транспонирование матрицы.}
procedure MatrTransp;
var
i,j: Integer;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
Swap (m,i,j,j,i);
end;
{Вывод матрицы на экран.}
procedure MatrOutput;
var
i,j: Integer;
begin
for i:=1 to n do
begin
Write(i:3,'-я строка: ');
for j:=1 to n do Write (m[i,j]:4);
WriteLn;
end;
end;
{Эта секция может использоваться для инициализации работы библиотеки.}
|
|
Begin
End.
Создание модуля закончено. Теперь необходимо создать файл, который будет содержать текст основной программы, в которой будет подключаться разработанный выше модуль.
{Это отдельный файл, содержащий основную программу}
Uses
Crt, { Библиотека стандартных процедур управления экраном и клавиатурой }
Matrix; {Наш разработанный модуль-библиотека работы с квадратными матрицами (личная)}
Var
m: TMatrix; { Объявляем матрицу - максимальный размер 10*10 }
n: Integer; { Размер матрицы }
Begin
{ Повторяем ввод размера, пока не будет введено корректное значение}
repeat
ClrScr;
Write('Введите размер матрицы (1..10): ');
ReadLn(n);
until (n >= 1) and (n <= 10);
WriteLn;
WriteLn('Введите матрицу размера',n,'*',n,'по строкам:');
MatrInput (m,n); {вызов процедуры ввода матрицы, определенной в модуле Matrix}
{Транспонируем ее }
MatrTransp (m,n); {вызов процедуры транспонирования матрицы, определенной в модуле Matrix}
{ Выведем результат на экран }
WriteLn;
WriteLn('Транспонированная матрица:');
MatrOutput (m,n); {вызов процедуры вывода матрицы, определенной в модуле Matrix}
End.
Порядок выполнения работы
1. Изучить теоретические сведения по теме “ Модули в Паскале”.
2. Получить у преподавателя индивидуальное задание. Разработать личную библиотеку, включив в нее процедуры, определенные в задании.
3. Показать работающую программу преподавателю.
4. Ответить на контрольные вопросы.
Контрольные вопросы
1. Стандартные модули в Паскале.
2. Структура модуля.
3. Ключевые слова Unit, Interface, Implementation. Описание каждого раздела.
4. Концепция разработки собственного модуля. Пример программы.