Обоснование выбора типа подпрограмм для решения задачи




Для решения поставленной задачи целесообразно использовать подпрограммы-процедуры, так как процедуры используются в тех случаях, когда в подпрограмме нужно вычислить и передать в основную программу несколько результатов.


Таблицы соответствия обозначений

 

Таблица 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 г.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-03-31 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: