Для решения поставленной задачи целесообразно использовать подпрограммы-процедуры, так как процедуры используются в тех случаях, когда в подпрограмме нужно вычислить и передать в основную программу несколько результатов.
Таблицы соответствия обозначений
Таблица 1 - Описание идентификаторов процедуры form
Идентификатор | Назначение |
m, n | Размер матрицы (строк, столбцов) |
a, b, c | Матрицы |
i | Текущий номер строки |
j | Текущий номер столбца |
Таблица 2 - Описание идентификаторов процедуры vivod
Идентификатор | Назначение |
x | Выводимая матрица |
i | Текущий номер строки |
j | Текущий номер столбца |
m, n | Размер матрицы (строк, столбцов) |
Таблица 3 - Описание идентификаторов процедуры poisk
Идентификатор | Назначение |
b | Исходная матрица |
k | Номер строки |
l | Номер столбца |
i | Текущий номер строки |
j | Текущий номер столбца |
m, n | Размер матрицы (строк, столбцов) |
Таблица 4 - Описание идентификаторов функции razm_trans
Идентификатор | Назначение |
l | Номер столбца нуля |
m | Количество строк |
k | Номер строки нуля |
Таблица 5 - Описание идентификаторов процедуры trans
Идентификатор | Назначение |
i | Текущий номер строки |
j | Текущий номер столбца |
g | Размер транспонирования |
v | Временная переменная при транспонировании |
b | Матрица |
k | Номер строки нуля |
l | Номер столбца нуля |
Таблица 6 - Описание идентификаторов функции koli
Идентификатор | Назначение |
i | Текущий номер строки |
j | Текущий номер столбца |
с | Матрица |
s | Счетчик суммы |
m, n | Размер матрицы (строк, столбцов) |
Таблица 7 - Описание идентификаторов процедуры zamena
ИдентификаторНазначение | |
i | Текущий номер строки |
j | Текущий номер столбца |
m, n | Размер матрицы (строк, столбцов) |
c | Матрица |
Текст программы
|
Текст модуля stas
unit stas;p=10;matr=array [1..p, 1..p] of integer;form (m, n:integer; var a, b, c:matr);vivod (m, n:integer; x:matr);poisk (b:matr; m, n:integer; var k, l:integer);razm_trans (b:matr; m, n, k, l:integer):integer;trans (m, n, k, l:integer; var b:matr);koli (c:matr; m, n:integer):integer;zamena (m, n:integer; var c:matr);form;i, j:integer;i:=1 to m doj:=1 to n do begin[i, j]:=random(20) - 10;[i, j]:=a [i, j];[i, j]:=a [i, j];;;vivod;i, j:integer;i:=1 to m do beginj:=1 to n do(x[i, j]:4);;;;poisk;11;i, j:integer;i:=1 to m doj:=1 to n dob [i, j]=0 then begin:=i;:=j;11;;
:end;razm_trans;l<m-k+1 then razm_trans:=l else razm_trans:=m-k+1;;trans;i, j, g, v:integer;:=razm_trans (b, m, n, k, l);i:=1 to g doj:=1 to i do:=b [k+i-1, l-g+j];[k+i-1, l-g+j]:=b [k+j-1, l-g+i];[k+j-1, l-g+i]:=v;;;koli;i, j, s:integer;:=0;i:=1 to m doj:=1 to n doc [i, j]=0 then s:=s+1;:=s;;zamena;i, j:integer;i:=1 to m doj:=1 to n doc [i, j]=0 then c [i, j]:=koli (c, m, n);
end;.
Текст программы, позволяющей отладить модуль
uses crt, stas;a, b:matr; k, l, m, n:integer;;;('Vvedite razmer matricy');(m, n);('ishodnaya matrica');(a, b, m, n);(m, n, a);(a, m, n, k, l);(m, n, k, l, b);('izmenennaya matrica');(m, n, b);koli (a, m, n)>m then(m, n, a);(m, n, a);else writeln ('Nuley menshe kolichestva strok');
readln;.
Текст программы, запускающей интерфейс
program kursovik;
uses crt, stas, graph;11;i, j, fl, m, n, k, l, x, gd, gm:integer;:text;, b, c:matr;, d:char;rezult (var f:text; a, b, c:matr);;(f);(f, 'Ishodnaya matrica');i:=1 to m do beginj:=1 to n do(f, a [i, j]:4);(f);;(f, 'Matrica s transponirorannym kvadratom');i:=1 to m do beginj:=1 to n do(f, b [i, j]:4);(f);;koli (c, m, n)>m then begin writeln (f, 'Matrica s zamenoy nuley');i:=1 to m do beginj:=1 to n do(f, c [i, j]:4);(f);;else writeln (f, 'Nuley menshe kolichestva strok');(f);;:=detect;(gd, gm, 'C:/bp/bgi');;(4);(20,20,630,450);(25,25,625,445);(1,4);(23,23,4);(0,0,2);(7);(30,30,'Kursovaya rabota po informatike');(30,90,'Vipolnil:student 1 kursa');(30,120,'FMRM C-610');(30,150,'Levinskiy Stanislav');(30,180,'Proverila: Lebedenko L.F.');(100,400,'Novosibirsk, 2007');;;;;:=' ';:=0;g<>'4' do;(20,10);('Menu');(20,12);('1. Vvod matricy');(20,14);('2. Obrabotka');(20,16);('3. Vivod');(20,18);('4. Vihod');(20,23);('Viberite punkt menu');:=readkey;g of
'1': begin
: clrscr;;:=' ';(20,10);('Kak vvodit matricu?');(20,12);('1. s klaviatury');(20,14);('2. sluchainimi chislami');(20,16);('3. iz faila');:=readkey;d of
|
'1': begin;('Vvedite razmer matricy');(m, n);;i:=1 to m doj:=1 to n do begin(a[i, j]);[i, j]:=a [i, j];[i, j]:=a [i, j];;;;
'2': begin;('Vvedite razmer matricy');(m, n);;(m, n, a, b, c);;;
'3': begin;(f, 'matr.txt');(f);('Vvedite razmer matricy');(m, n);i:=1 to m doj:=1 to n do begin(f, x);[i, j]:=x;[i, j]:=x;[i, j]:=x;;(f);;;;:=1;;
'2': begin;fl<>1 then('Matrica ne vvedena');('Dlya vvoda matricy nazhmite Enter');;11;(15,10);(a, m, n, k, l);(m, n, k, l, b);koli (c, m, n)>m then zamena (m, n, c);('Obrabotka dannyh zavershena');;;;
'3': begin;:=' ';(20,10);('Kuda vivodit rezultaty?');(20,12);('1. na ekran');(20,14);('2. v fail');(20,16);('3. na printer');:=readkey;d of
'1': assign (f, 'con');
'2': assign (f, 'rezultat.txt');
'3': assign (f, 'prn');;(f, a, b, c);d<>'1' then writeln ('dannye peredany po naznacheniu');;;;;.
Результаты работы программы
Исходная матрица
4 -10 -5 7
9 8 3 -5
2 -8 -2 -2
8 8 -2 3
-9 -10 -10 -8
6 9 -6 2
Матрица с транспонированным квадратом
4 -10 -5 7
9 8 3 -5
2 -8 -2 -2
8 8 -2 3
-9 -10 -10 -8
6 9 -6 2
Заключение
программа форма интерфейс пользователь
Выполнив данную работу, я закрепил свои навыки программирования на языке Turbo Pascal, рассмотрел многие вопросы, связанные с назначением, созданием и использованием модулей в Turbo Pascal.
В работе приведен результат работы программы.
Из моей работы видно, что использование модулей очень сильно облегчает процесс написания обширных комплексных программ.
Список литературы
1. Фаронов В.В. Turbo Pascal 7.0. - М.:Нолидж, 1998 г.
2. Турбо Паскаль 7.0. - К.: Торгово-издательское бюро BHV, 1997 г.
. Зуев В.А. Турбо Паскаль 6.0 7.0. - М.: Радио и Связь, 1993 г.
. Файсман А. Профессиональное программирование на Турбо-Паскале. - Info&F - Infomex - KoinKo, 1992 г.