Реферат: Лабораторная работа №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.
Рис.11. Детализация блока 2 схемы алгоритма.
После каждой подпрограммы производится отладочная печать, представленная отдельной подпрограммой, структурограмма которой изображена на рис. 18.
Министерство образования РФ Рязанская государственная радиотехническая академия Кафедра ВПМ Отчет о лабораторной работе № 12: «ПРОЦЕДУРЫ И ФУНКЦИИ»
Выполнил: ст. гр. 316 Позднышев А.А. Проверил: Новичков В.С. Рязань 2004 |