Автор работы: Пользователь скрыл имя, 31 Января 2011 в 15:52, курсовая работа
Процедуры и функции представляют собой важный инструмент Турбо Паскаля, позволяющий писать хорошо структурированные программы. В структурированных программах обычно легко прослеживается основной алгоритм, их нетрудно понять любому читателю, они проще в отладке и менее чувствительны к ошибкам программирования. Все эти свойства являются следствием важной особенности процедур (функций), каждая из которых представляет собой во многом самостоятельный фрагмент программы, связанный с основной программой лишь с помощью нескольких параметров.
Введение______________________________________________________________3
1.Задание на курсовую работу ________________________________________3
2.Анализ задания ___________________________________________________3
3.Разработка структур данных ________________________________________4
4.Разработка алгоритмов_____________________________________________5
5.Текст программы__________________________________________________9
6.Тестирование программы___________________________________________20
7.Руководство пользователя __________________________________________22
Заключение____________________________________________________________26
Список использованных источников_______________________________________
inc(l);
end;
{_____________________________
procedure PrintSubMatrix(n_1,m_1,n_2,m_
var
i,j,k,l:integer;
r:trect;
s,sr:string;
begin
with wind^ do
begin
r.assign(2,n+4,70,n+20);
insert(new(pstatictext,init(r,
end;
for i:=n_1 to n_2 do
begin
for j:=m_1 to m_2 do
begin
str(mxx[i,j],sr);
with wind^ do
begin
r.assign(1+j*4,1+i+n+6,4+j*4,
insert(new(pstatictext,init(r,
end;
end;
end;
readkey;
end;
{_____________________________
procedure PrintSubMatrixfile(n_1,m_1,n_
var
i,j,k,l:integer;
begin
for i:=n_1 to n_2 do
begin
for j:=m_1 to m_2 do
write(fileresu,mxx[i,j]:3,' ');
writeln(fileresu);
end;
writeln(fileresu);
writeln(fileresu);
end;
{_____________________________
function GeomProg:boolean; {функция вычисления геометрической прогрессии}
var
i:integer;
dv:real;
begin
Sort; {сортируем по возрастанию}
GeomProg:=true; {образует геометрическую прогрессию}
dv:=per[2]/per[1];
for i:= 2 to l-1 do
if per[i+1]/per[i]<>dv then
begin
GeomProg:=false; {не образует геометрическую прогрессию}
break;
end;
end;
{_____________________________
procedure tmatrix.Main(f:boolean); {вывод результата}
var
Sn,Sm,Snn,Smm:integer; {угловые счётчики периметра}
begin
Sn:=2;
Sm:=2;
Snn:=1;
Smm:=1;
while (Sn<>N) or (Sm<>M) do {перебираем подматрицы}
begin
GetPerimetr(Snn,Smm,(Snn+Sn)-
if f then {по условию}
begin
if GeomProg then {геометрическая прогрессия}
if fil then {в файл}
PrintSubMatrixfile(Snn,Smm,(
else {в окно}
PrintSubMatrix(Snn,Smm,(Snn+
end
else {все подматрицы}
if fil then {в файл}
PrintSubMatrixfile(Snn,Smm,(
else {в окно}
PrintSubMatrix(Snn,Smm,(Snn+
if (Smm+Sm)<=M then
inc(Smm)
else
begin
if (Snn+Sn)<=N then
begin
inc(Snn);
Smm:=1;
end
else
begin
if Sm = M then
begin
Sm:=2;
inc(Sn);
snn:=1;
smm:=1;
end
else
begin
snn:=1;
smm:=1;
inc(sm)
end;
end;
end;
end;
GetPerimetr(1,1,N,M); {определение элементов по периметру матрицы}
if f then {по условию}
begin
if GeomProg then {геометрическая прогрессия}
if fil then {в файл}
PrintSubMatrixfile(1,1,n,m)
else {в окно}
PrintSubMatrix(1,1,N,M);
end
else {все подматрицы}
if fil then {в файл}
PrintSubMatrixfile(1,1,n,m)
Else {в окно}
begin
PrintSubMatrix(1,1,N,M);
readkey;
end;
end;
{_____________________________
procedure tmatrix.fileoutputv(f:boolean)
var
pf:pfiledialog;
s:pathstr;
x:char;
i,j:integer;
begin
new(pf,init('*.txt','Выберите нужный файл:','Имя файла',fdopenbutton,0));
if desktop^.execview(pf)=stddlg.
begin
pf^.getfilename(s);
assign(fileresu,s);
rewrite(fileresu); {открываем файл для записи}
fil:=true;
if f then {по условию}
tmatrix.main(true)
else {все подматрицы}
tmatrix.main(false);
dispose(pf,done);
close (fileresu); {закрываем файл}
end;
fil:=false;
end;
{_____________________________
procedure tmatrix.handleevent(var event:tevent);
var
r:trect;
i:integer;
begin
if event.what=evcommand then
case event.command of
cmisfl:tmatrix.fileinput;
cmfilu:tmatrix.fileoutputv(
cmfilv: tmatrix.fileoutputv(false);
cmvvod:tmatrix.inputmatrix;
cmvval:tmatrix.
cmvhel:messagebox(#3'Вывод подматриц,'#13+#3'периметр которых -'#13+#3'геометрическая прогрессия'#13+ #3'Алексей 2010',nil,mfinformation or mfokbutton);
cmvvse:
begin
with wind^ do
begin
r.assign(2,n+3,70,n+5);
insert(new(pstatictext,init(r,
end;
tmatrix.main(false);
end;
cmvusl:
begin
with wind^ do
begin
r.assign(2,n+3,70,n+5 );
insert(new(pstatictext,init(r,
end;
tmatrix.main(true);
end;
cmQuit: if messagebox(#3'Завершить работу?',nil,mfconfirmation or mfokcancel)=cmcancel then clearevent(event);
else
exit
end;
inherited handleevent(event);
end;
{_____________________________
end.
6 Тестирование программы
Объектом испытаний является разработанная программа. Целью испытаний является проверка соответствия программного продукта поставленным требованиям.
Для проведения испытаний данные вводились с клавиатуры. Размерность тестируемой матрицы 3 – строки, 4 – столбца. Исходная матрица (рисунок 6):
Рисунок 6 – Исходная рабочая матрица
На рисунке 7 представлен результат работы программы по условию (рисунок 2).
Рисунок 7 – Результат работы программы в текстовом виде
Также, проводилось тестирование с различными примерами, которые здесь не приведены, но которые также показали верный результат.
Таким образом, тестирование прошло успешно.
7 Руководство пользователя
Запуск программы осуществляется нажатием Enter на имени файла: A:\ matr.exe.
После запуска программы появится пользовательское меню, которое показано на рисунке 8.
Рисунок 8 – Окно программы
Это меню содержит:
Рисунок 9
Рисунок 10
Рисунок 11
Перемещение по кнопкам осуществляется клавишами клавиатуры, а именно стрелками вверх , вниз ¯, вправо ®, влево ¬, либо мышкой.
Ввод данных можно осуществлять вводом вручную, автоматически и из файла.
При нажатии клавиши Enter по кнопке с надписью «Ручной», появится окно (рисунок 12):
Рисунок 12 – Ручной ввод
Необходимо будет ввести количество строк и столбцов матрицы. Затем нажимаем клавишу «ОК», появляется окно (рисунок 13) и вводим элементы матрицы.
Рисунок 13 – Ввод элемента матрицы
По
окончанию ввода элементов
Рисунок 14 – Рабочая матрица
При нажатии клавиши Enter по кнопке с надписью «Автоматический», появится окно (рисунок 15):
Рисунок 15 – Автоматический ввод
Необходимо будет ввести количество строк и столбцов матрицы, а также максимальное значение элемента. Затем нажимаем клавишу «ОК» и результат автоматического заполнения элементов матрицы появится в окне (рисунок 14).
При нажатии клавиши Enter по кнопке с надписью «Из файла», появится окно (рисунок 16):
Рисунок 16 – Из файла
Необходимо будет выбрать текстовый файл с матрицей. Затем нажимаем клавишу «Open» и результат появится в окне (рисунок 14).
После ввода данных можно приступать к обработке.
При нажатии клавиши Enter по кнопке с надписью «Все подматрицы», будут появляться все подматрицы рабочей матрицы в окне, нажимая любую кнопку клавиатуры (рисунок 17).
Рисунок 17 – Все подматрицы
При нажатии клавиши Enter по кнопке с надписью «По условию», будут появляться все подматрицы, по периметру которых расположены элементы, из которых можно образовать геометрическую прогрессию, нажимая любую кнопку клавиатуры (рисунок 18).