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

Begin

End.

Begin

Implementation

Type

Interface

{Секция Interface содержит описания общедоступных типов данных, констант, процедур и функций. Т.е. все, что будет здесь находиться можно будет использовать при подключении данной библиотеки.}

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 содержит реализацию тел процедур и функций, описанных в 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;

{Эта секция может использоваться для инициализации работы библиотеки.}

Создание модуля закончено. Теперь необходимо создать файл, который будет содержать текст основной программы, в которой будет подключаться разработанный выше модуль.

{Это отдельный файл, содержащий основную программу}

Uses Crt, { Библиотека стандартных процедур управления экраном и клавиатурой }

Matrix; {Наш разработанный модуль-библиотека работы с квадратными матрицами (личная)}

Var m: TMatrix; { Объявляем матрицу - максимальный размер 10*10 }

n: Integer; { Размер матрицы }

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.

Например, создаем модуль, реализующий арифметику комплексных чисел (такая арифметика ни в стандартном Паскале, ни в Турбо Паскале не предусмотрена). К сожалению, в Турбо Паскале нельзя использовать функции, значения которых имели бы структурированный тип (запись, например), поэтому арифметика комплексных чисел реализуется четырьмя процедурами:

UNIT Cmplx;

INTERFACE

type complex = record

re, im:real

end;

Procedure AddC (x, у: complex; var z: complex);

Procedure SubC (x, у: complex; var z: complex);

Procedure MulC (x, у: complex; var z: complex);

Procedure DivC (x, у: complex; var z: complex);

Const с: complex = (re:0.1; im:-1);

IMPLEMENTATION

Procedure AddC;

begin

z.re:= x.re + y.re; z. im:= x.im + y. im

end {AddC};

Procedure SubC;

begin

z.re:= x.re - y. re;

z.im:= x.im - y.im

end {SubC};

Procedure MulC;

begin

z.re:= x.re*y.re - x.im*y. im;

z.im:= x.re*у.im + x.im*y.re

end {MulC};

Procedure DivC;

var zz: real;

begin

zz:= sqr(y.re) + sqr(y.im);

z. re:= (x.re * y.re + x.im * y.im) / zz;

z.im:= (x.re * y.im - x.im * y.re) / zz

end {DivC};

begin

end.

Текст этого модуля следует поместить в файл CMPLX.PAS. Вы можете его откомпилировать, создав TPU-файл, после чего вашей программе станут доступны процедуры из новой библиотеки. Например, в следующей программе осуществляются четыре арифметические операции над парой комплексных чисел.

Uses Cmplx;

var а, Ь, с: complex;


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



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