Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы Алгоритм и Програм.doc
Скачиваний:
5
Добавлен:
14.09.2019
Размер:
407.04 Кб
Скачать

Исходные данные

Матрица A(3,4) Матрица B(3,3)

5.0 -4.1 9.2 -1.0 -9.0 3.0 4.5

7.3 3.6 8.0 2.2 5.2 -3.8 2.0

-4.7 7.0 6.3 5.2 -4.1 6.0 7.8

Результаты

Массив Z

z[1]= -4.1

z[2]= -1.0

z[3]= -4.7

z[4]= -9.0

z[5]= -3.8

z[6]= -4.1

6. Модули в языке Pascal

Недостатком рассмотренных ранее процедур и функций является необходимость включения их в текст программы.

Для часто используемых численных методов разрабатываются подпрограммы (процедуры и функции), которые хранятся в библиотеках, называемых в языке Pascal модулями [Л1, стр. 65-70].

Каждый модуль должен иметь уникальное имя, используя которое в программе пользователя можно обращаться к библиотеке (модулю).

Заголовок в программной единице, называемой модулем, имеет вид:

Unit имя-модуля;

Например, unit unitmatr;

Следует помнить, что имя файла, в котором записан модуль на языке Pascal, должно совпадать с именем модуля, указанного в заголовке модуля, т.е. для данного примера оно должно иметь вид unitmatr.pas.

После компиляции такой модуль получает имя unitmatr.tpu и хранится на диске.

Для подключения модуля к программе пользователя после заголовка программы нужно записать фразу:

Uses имя-модуля1, имя-модуля2, …, имя-модуляN;

Пример 25. Пусть имеется модуль с именем Unitmatr, содержащий процедуры ввода матрицы, вывода матрицы, вычисления суммы двух матриц, транспонирования матрицы.

Рассмотрим пример рабочей программы, использующей процедуры этого модуля и стандартного модуля Crt.

Пример модуля (библиотеки) с именем Unitmatr

unit unitmatr;

interface

const n=10;

type tmtr=array[1..n,1..n] of real;

procedure inmtr(var x: tmtr; k: integer);

procedure outmtr(x: tmtr; k: integer);

procedure summtr(x1,x2: tmtr; var x3: tmtr; k: integer);

procedure trmtr(x1: tmtr; var x2: tmtr; k : integer);

implementation

var i, j : integer;

procedure inmtr(var x: tmtr; k: integer); {Процедура ввода матрицы}

begin

writeln(k,'x',k);

for i:=1 to k do

for j:=1 to k do read(x[i,j]);

end;

procedure outmtr(x: tmtr; k: integer); {Процедура вывода матрицы}

begin

writeln('Матрица');

for i:=1 to k do

begin

for j:=1 to k do

write(x[i,j]:5:1,' ');

writeln;

end;

end;

procedure summtr(x1,x2: tmtr; var x3: tmtr; k: integer); { Процедура, вычисляющая сумму двух матриц}

begin

for i:=1 to k do

begin

for j:=1 to k do

x3[i,j]:=x1[i,j]+x2[i,j];

end;

end;

procedure trmtr(x1:tmtr;var x2:tmtr;k:integer); { Процедура, выполняющая транспонирование матрицы }

begin

for i:=1 to k do

for j:=1 to k do

x2[i,j]:=x1[j,i];

end;

end.

Пример рабочей программы (программы пользователя)

program usmatr;

uses unitmatr, crt; {Обращение к библиотекам (модулям)}

var d, a, b, c : tmtr;

m : integer;

begin

clrscr; { Обращение к процедуре очистки экрана, содержащейся в

модуле crt}

writeln(‘Ввести размерность матрицы m’);

readln(m);

inmtr(a,m); {Обращение к процедуре ввода матрицы а(m,m)}

inmtr(b,m); {Обращение к процедуре ввода матрицы b(m,m)}

trmtr(b,c,m); { Обращение к процедуре транспонирования матрицы

b(m,m) и записи результата в матрицу c(m,m)}

outmtr(c,m); { Обращение к процедуре вывода матрицы c(m,m)}

summtr(a,b,d,m); { Обращение к процедуре вычисления суммы двух матриц

a(m,m) и b(m,m) и записи результата в матрицу d(m,m)}

outmtr(d,m); { Обращение к процедуре вывода матрицы d(m,m)}

readln;

end.

Исходные данные Результаты

m=4