Смекни!
smekni.com

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

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

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

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

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

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

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

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

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

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

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

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

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

ProgramLab_12;

usescrt;

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 - массив}

ProcedureVvod (t:integer; Var X:matrics);

Var

i,j:integer;

Begin{Vvod}

Fori:=1 to t do

Forj:=1 to t do

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

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

Read(X[i,j]);

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

Fori:=1 to t do

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

For j:=1 to t do

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

Writeln

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

End;{Vvod}

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

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

ProcedureEcho (t:integer; X:matrics);

var

i,j:byte;

begin{Echo}

Fori:=1 to t do

Begin

Forj:=1 to t do

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

Writeln

End

end;{Echo}

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

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

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

var

i,j,k,s:integer;

begin{Umno}

fori:=1 to t do

forj:=1 to t do

begin

S:=0;

fork:=1 to t do

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

Z[i,j]:=s;

end;

end; {Umno}

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

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

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

var

i,j:integer;

begin{Summa}

fori:=1 to t do

forj:=1 to t do

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

end; {Summa}

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

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

ProcedureUnder (X:matrics; t:integer; Var Y:masiv);

var

s:real;

Begin

S:= 0;

Fori := 2 to t do

Forj := 1 to i-1 do

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

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

End;

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

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

ProcedureOver (X:matrics; t:integer; Var Y:masiv);

var

s:real;

Begin

S :=0;

Fori := 1 to t-1 do

Forj := 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.

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

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

J=1(1)t

Вводэлементов
Выходныепараметры:X– матрицаразмером t*t.

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

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


  1. Имяподпрограммы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значений длякаждого массива.
  2. Печать элементовматриц X,Y (а также отладочнаяпечать). В данномблоке определёнапечать значенийэлементовквадратныхматриц X,Yразмером t*t.

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

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


  1. Подпрограммыформированиявектораиз сумм элементоввыше и нижеглавной диагоналипредставленаструктурограммойна рисунке 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