Мета роботи: Вивчення правил опису і виклику підпрограм: процедур іфункцій. Отримання навичок та оволодіння прийомами роботи над підпрограмами.
Завдання № 17. Порахувати суму елементів що лежать вище головної діагоналіматриці для матриці Z = X2 + Y2. p>
Программа на Turbo Pascal
(Програма: Kyrsaсh p>
)
(Мета: Знайти суму елементів вище головної діагоналі)
(Змінні: p>
)
(X, Y - вводяться масиви p>
)
(N, M, A, B, Z - проміжні масиви
)
(T - Розмір масиву p>
)
(I, j - змінні циклу p>
)
(Програміст: Позднишев А.А. група 316)
(Перевірив: Новачків В.С. p>
)
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); p>
Var i, j: integer;
Begin (Vvod) p>
For i: = 1 to t do p>
For j: = 1 to t do p>
Begin (Введення елементів) p>
Write ('[', i ,',', j ,']='); p>
Read (X [i, j ]); p>
End; ( Введення елементів) p>
For i: = 1 to t do p>
Begin (Висновок елементів) p>
For j: = 1 to t do p> < p> Write (X [i, j]: 5); p>
Writeln p>
End (Висновок елементів)
End; (Vvod)
(Процедура виведення елеменов матриць)
(Параметри: X, Y - матриці, t - розмір)
Procedure Echo (t: integer; X: matrics); var i, j: byte;begin (Echo) p>
For i: = 1 to t do p>
Begin p>
For j: = 1 to t do p>
Write (X [i, j]: 5); p>
Writeln p>
Endend; (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 p>
S: = 0; for k: = 1 to t do s: = s + X [k, i] * Y [j, k]; p>
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 p>
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; p>
Begin p>
S: = 0; p>
For i: = 2 to t do p>
For j: = 1 to i-1 do p>
S: = S + X [i, j]; p>
WriteLn ( 'Сума елементів, що лежать нижче головної діагоналі =', S: 5:1); p>
End;
(Процедура для знаходження суми вище головної діагоналі)
(Параметри: X - початкові масиви, Y - масив результат, t - розмір)
Procedure Over (X: matrics; t: integer; Var Y: masiv); var s: real; p>
Begin p>
S: = 0; p>
For i: = 1 to t-1 do p>
For j: = i +1 to t do p>
S: = S + X [i, j]; p> < p> WriteLn ( 'Сума елементів, що лежать вище головної діагоналі =', S: 5:1); p>
ReadLn p>
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 в квадрат :');< br>Umn (X, X, t, A);
Echo (t, A);writeln ( 'Результат зведення матриці Y в квадрат :');< br>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) p>
Блок-схема p>
Проведемо деталізацію у послідовності, яка визначається нумерацією блоківна рис. 1. P>
1. Введення розмірів матриць X, Y. В даному блоці визначено введення розмірів квадратних матриць X, Y (t - розмір матриць).
| Назва підпрограми: VVOD | |
| Вхідні параметри: | |
| кількість елементів t * t | |
| I = 1 (1) t | |
| | J = 1 (1) t | |
| | | Введення елементів | |
| Вихідні параметри: X - | |
| матриця розміром t * t. | | P>
Рис.11. Деталізація блоку 2 схеми алгоритму. P>
| Назва підпрограми 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 |
| схеми алгоритму | p>
2. Введення елементів можна представити відповідної підпрограмою, структурограмма якої наведена на рис.11. Загалом має бути виведено t * t значень для кожного масиву. P>
3. Друк елементів матриць X, Y (а також відлагоджувальна друк). В даному блоці визначена друк значень елементів квадратних матриць X, Y розміром t * t. p>
4. Множення матриць зручно представити наступного підпрограмою, структурограмма якої наведена на малюнку 13. P>
5. Складання матриці X і матриці Y представлено у вигляді підпрограми на рис.15. P>
6. Підпрограми формування вектора із сум елементів вище і нижче головної діагоналі представлена структурограммой на малюнку 16 і 17. P>
| Назва підпрограми 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 схеми алгоритму | p>
Після кожної підпрограми здійснюється відлагоджувальна друк, представленаокремої підпрограмою, структурограмма якій зображена на рис. 18. P>
| Назва підпрограми UNDER |
| Вхідні параметри: X - |
| матриця, розміром t * t |
| | S = 0 |
| | I = 2 (1) t |
| | | J = 1 (1) i-1 |
| | | S = S + X [i, j] |
| | | Вихідні параметри: |
| | | Y - матриця розміром t. |
| Рис. 17. Деталізація блоку 8 |
| схеми алгоритму | p>
| Назва підпрограми: Echo |
| Вхідні параметри: X - |
| матриця, розміром t * t |
| I = 1 (1) t |
| | J = 1 (1) t |
| | | Висновок елементів |
| Вихідні параметри: Y - |
| матриця розміром t * t. |
| Рис. 18. Деталізація |
| підпрограми виводу елементів | p>
----------------------- p>
Кінець p>
Вектор із сум елементів вище і нижче діагоналі p>
Z = A + B p>
B = Y * Y p>
A = X * X p>
Введення елементів p>
Друк елементів X, Y p>
Введення розміру p>
початок p>
p>