РефератыИнформатика, программированиеЛаЛабораторная работа №12

Лабораторная работа №12

Цель работы:
Изучение правил
описания и
вызова подпрограмм:
процедур и
функций. Получение
навыков и овладение
приемами работы
над подпрограммами.



Задание№ 17.
Посчитать сумму
элементов
лежащих выше
главной диагонали
матрицы для
матрицы Z=X2+Y2.



Программа на
Turbo Pascal


{Программа:
Kyrsaсh

}


{Цель:
Найти сумму
элементов выше
главной диагонали
}


{Переменные:

}


{
X,Y
- вводимые
массивы
}


{
N, M, A,B,
Z
- промежуточные
массивы
}


{
t
- Размер массива
}


{
i, j - переменные
цикла
}


{Программист:
Позднышев А.А.
группа 316
}


{Проверил:
Новичков В.С.
}


Program
Lab_12;


uses
crt;


Const


Nmax=10;
{Максимальный
размер массива}


Type



Matrics=array[1..Nmax,1..Nmax] of integer;


Masiv=array[1..Nmax]
of integer;


Var


X,Y,Z,A,B:matrics;


M,N:masiv;


i,j,t:integer;


{Процедура
ввода элементов
массива}


{Параметры:
t - размер массива,
X - массив}


Procedure
Vvod (t:integer; Var X:matrics);


Var


i,j:integer;


Begin{Vvod}


For
i:=1 to t do


For
j:=1 to t do



Begin {Ввод
элементов}



Write ('[',i,',',j,']=');


Read
(X[i,j]);



End; {Ввод
элементов}


For
i:=1 to t do



Begin {Вывод
элементов}



For j:=1 to t do



Write (X[i,j]:5);



Writeln



End {Вывод
элементов}


End;{Vvod}


{Процедура
вывода элеменов
матриц}


{Параметры:
X,Y - матрицы, t - размер}


Procedure
Echo (t:integer; X:matrics);


var


i,j:byte;


begin
{Echo}


For
i:=1 to t do


Begin


For
j:=1 to t do


Write
(X[i,j]:5);



Writeln


End


end;
{Echo}


{Процедура
умножения
матриц}


{Параметры:
X,Y - начальные
массивы, Z - массив
результат,t -
размер}


Procedure
Umn (X,Y:matrics;
t:integer; Var Z:matrics);


var


i,j,k,s:integer;


begin
{Umno}


for
i:=1 to t do


for
j:=1 to t do


begin


S:=0;


for
k:=1 to t do



s:=s+X[k,i]*Y[j,k];


Z[i,j]:=s;


end;


end;
{Umno}


{Процедура
сложения массивов}


{Параметры:
X,Y - начальные
массивы, Z - массив
результат, t -
размер}


Procedure
Summa(X,Y:matrics; t:integer; Var Z:matrics);


var


i,j:integer;


begin
{Summa}


for
i:=1 to t do


for
j:=1 to t do



Z[i,j]:=X[i,j]+Y[i,j]


end;
{Summa}


{Процедура
для нахождения
суммы ниже
главной диагонали}


{Параметры:
X - начальные
массивы, Y - массив
результат, t -
размер}


Procedure
Under (X:matrics; t:integer; Var Y:masiv);


var


s:real;


Begin


S
:= 0;


For
i := 2 to t do


For
j := 1 to i-1 do



S:=S + X[i, j];



WriteLn('Сумма элементов,
лежащих ниже
главной диагонали=',
S:5:1);


End;


{Процедура
для нахождения
суммы выше
главной диагонали}


{Параметры:
X - начальные
массивы, Y - массив
результат, t -
размер}


Procedure
Over (X:matrics; t:integer; Var Y:masiv);


var


s:real;


Begin


S :=
0;


For
i := 1 to t-1 do


For
j := i+1 to t do



S := S + X[i, j];



WriteLn('Сумма элементов,
лежащих выше
главной диагонали=',
S:5:1);



ReadLn


End;


begin{lab_12}


clrscr;


writeln('Введите
размеры матриц
X,Y:');read(t);


writeln('Введите
',t*t,' элемента для
каждой матрицы:');


writeln('Введите
матрицу X:');vvod(t,X);


writeln('Введите
матрицу Y:');vvod(t,Y);


writeln('Результат
возведения
матрицы X в
квадрат:');


Umn(X,X,t,A);


Echo(t,A);


writeln('Результат
возведения
матрицы Y в
квадрат:');


Umn(Y,Y,t,B);


Echo(t,B);


writeln('Полученный
массив после
преобразований:');


summa(A,B,t,Z);


Echo(t,Z);


under(Z,t,M);


over(Z,t,N);


end.{lab_12}



Блок-схема



Проведём
детализацию
в последовательности,
определяемой
нумерацией
блоков на рис.
1.



Ввод размеров
матриц X,
Y.
В данном блоке
определён ввод
размеров квадратных
матриц X,
Y
(t
– размер матриц).
























Имя подпрограммы:
VVOD
Входные
параметры:
количество
элементов
t*t
I=1(1)t
J=1(1)t
Ввод
элементов
Выходные
параметры:
X
– матрица
размером t*t.


Рис.11. Детализация
блока 2



схемы алгоритма.



























































Имя
подпрограммы
UMN
Входные
параметры:
X,
Y
– матрицы
размером t*t
I=1(1)t
J=1(1)t
S=0
K=1(1)t
S=S+X[i,k]*Y[k,j]
C[i,j]=S
Выходные
параметры:
матрица Z
размером t*t

Рис.
13. Детализация
блока 4


схемы
алгоритма
Ввод элементов
можно представить
соответствующей
подпрограммой,
структурограмма
которой приведена
на рис.11. Всего
должно быть
выведено t*t
значений для
каждого массива.



Печать элементов
матриц X,
Y
(а также отладочная
печать). В данном
блоке определёна
печать значений
элементов
квадратных
матриц X,
Y
размером t*t.



Умножение
матриц
удобно представить
следующей
подпрограммой,
структурограмма
которой приведена
на рисунке 13.



Сложение
матрицы
X
и матрицы Y
представлено
в виде подпрограммы
на рис.15.



Подпрограммы
формирования
вектора
из сумм элементов
выше и ниже
главной диагонали
представлена
структурограммой
на рисунке 16
и 17.


































Имя
подпрограммы
OVER
Входные
параметры:
X
– матрица,
размером t*t
S=0
I=1(1)t–1
J=i+1(1)t
S=S+X[i,j]


Выходные
параметры:


Y
– матрица
размером t.


Рис.
16. Детализация
блока 8
схемы
алгоритма

























Имя подпрограммы:
SUMMA
Входные
параметры:
X,
Y
– матрицы,
размером t*t
I=1(1)t
J=1(1)t

Z[i,j]=X[i,j]+Y[i,j]


Выходные
параметры:
Z
– матрица
размером t*t.
Рис.
15. Детализация
блока 7 схемы
алгоритма

После
каждой подпрограммы
производится
отладочная
печать, представленная
отдельной
подпрограммой,
структурограмма
которой изображена
на рис. 18.
































Имя
подпрограммы
UNDER
Входные
параметры:
X
– матрица,
размером t*t
S=0
I=2(1)t
J=1(1)i-1
S=S+X[i,j]


Выходные
параметры:


Y
– матрица
размером t.


Рис.
17. Детализация
блока 8
схемы
алгоритма


























Имя подпрограммы:
Echo
Входные
параметры:
X
– матрица,
размером t*t
I=1(1)t
J=1(1)t
Вывод
элементов
Выходные
параметры:
Y
– матрица
размером t*t.
Рис.
18. Детализация
подпрограммы
вывода элементов



Министерство
образования
РФ


Рязанская
государственная
радиотехническая
академия


Кафедра ВПМ


Отчет о



лабораторной
работе № 12:



«ПРОЦЕДУРЫ
И ФУНКЦИИ»




Выполнил: ст.
гр. 316



Позднышев
А.А.


Проверил:
Новичков В.С.


Рязань 2004


Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Лабораторная работа №12

Слов:2373
Символов:14819
Размер:28.94 Кб.