Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Пример разработки собственного модуля




Разработку собственного модуля рассмотрим на следующем примере:

Пусть дано задание: разработать личную библиотеку, включив в нее процедуры:

· ввода элементов числовой матрицы размером N*N;

· транспонирования матрицы;

· вывода результирующей матрицы.

В основной программе ввести размер матрицы N.

Начнем разработку модуля, который будет носить название Matrix. Программно это будет выглядеть так:

Unit Matrix;

{Зарезервированное слово Unit служит для указания имени библиотеки. Это имя

должно совпадать с именем PAS-файла библиотеки (т.е библиотека Matrix должна

находиться с файле Matrix.Pas), а иначе компилятор даст ошибку при попытке

использования такой библиотеки}

Interface

{Секция Interface содержит описания общедоступных типов данных, констант,

процедур и функций. Т.е. все, что будет здесь находиться можно будет

использовать при подключении данной библиотеки.}

Type

TMatrix = array [1..10,1..10] of Integer; { Квадратная матрица }

procedure MatrInput (Var m: TMatrix; n: Integer); { ввод матрицы }

procedure MatrOutput (Var m: TMatrix; n: Integer); { вывод матрицы }

procedure MatrTransp (Var m: TMatrix; n: Integer); { транспонирование }

Implementation

{Секция 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.

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...