Програмирование на языке Паскаль

Автор работы: Пользователь скрыл имя, 31 Января 2011 в 15:52, курсовая работа

Описание работы

Процедуры и функции представляют собой важный инструмент Турбо Паскаля, позволяющий писать хорошо структурированные программы. В структурированных программах обычно легко прослеживается основной алгоритм, их нетрудно понять любому читателю, они проще в отладке и менее чувствительны к ошибкам программирования. Все эти свойства являются следствием важной особенности процедур (функций), каждая из которых представляет собой во многом самостоятельный фрагмент программы, связанный с основной программой лишь с помощью нескольких параметров.

Содержание работы

Введение______________________________________________________________3

1.Задание на курсовую работу ________________________________________3
2.Анализ задания ___________________________________________________3
3.Разработка структур данных ________________________________________4
4.Разработка алгоритмов_____________________________________________5
5.Текст программы__________________________________________________9
6.Тестирование программы___________________________________________20
7.Руководство пользователя __________________________________________22
Заключение____________________________________________________________26

Список использованных источников_______________________________________

Файлы: 1 файл

Курсовик.doc

— 601.50 Кб (Скачать файл)

inc(l);

end;

{_______________________________________________}

procedure PrintSubMatrix(n_1,m_1,n_2,m_2:integer); {выводим в окно результирующую матрицу}

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,n+3+i+7);

    insert(new(pstatictext,init(r,sr)));

end;

end;

end;

readkey;

end;

{_______________________________________________}

procedure PrintSubMatrixfile(n_1,m_1,n_2,m_2:integer); {выводим в файл результ-щую матрицу}

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)-1,(Smm+Sm)-1); {определение эл-ов по периметру подматриц}

if f then {по условию}

begin

if GeomProg then {геометрическая прогрессия}

if fil then {в файл}

PrintSubMatrixfile(Snn,Smm,(Snn+Sn)-1,(Smm+Sm)-1)

else {в окно}

PrintSubMatrix(Snn,Smm,(Snn+Sn)-1,(Smm+Sm)-1);

end

else {все подматрицы}

if fil then {в файл}

PrintSubMatrixfile(Snn,Smm,(Snn+Sn)-1,(Smm+Sm)-1)

else {в окно}

PrintSubMatrix(Snn,Smm,(Snn+Sn)-1,(Smm+Sm)-1);

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.cmfileopen then

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(true);

cmfilv: tmatrix.fileoutputv(false);

cmvvod:tmatrix.inputmatrix;

cmvval:tmatrix.getrandommatrix;

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 – Окно программы

    Это меню содержит:

  1. Ввод: «Ручной», «Автоматический», «Из файла» и «Выход» (рисунок 9).

Рисунок 9

  1. Результат: «Все подматрицы», «По условию», «Записать все» и «Записать по условию» (рисунок 10).

Рисунок 10

  1. О программе (рисунок 11).

Рисунок 11

    Перемещение по кнопкам осуществляется клавишами  клавиатуры, а именно стрелками вверх ­ , вниз ¯, вправо ®, влево ¬, либо мышкой.

    Ввод  данных можно осуществлять вводом вручную, автоматически и из файла.

    При нажатии клавиши Enter по кнопке с надписью «Ручной», появится окно (рисунок 12):

Рисунок 12 – Ручной ввод

    Необходимо будет ввести количество строк и столбцов матрицы. Затем нажимаем клавишу «ОК», появляется окно (рисунок 13) и вводим элементы матрицы.

Рисунок 13 – Ввод элемента матрицы

    По  окончанию ввода элементов матрицы  результат появится в окне (рисунок  14).

Рисунок 14 – Рабочая матрица

    При нажатии клавиши Enter по кнопке с надписью «Автоматический», появится окно (рисунок 15):

Рисунок 15 – Автоматический ввод

    Необходимо  будет ввести количество строк и  столбцов матрицы, а также максимальное значение элемента. Затем нажимаем клавишу «ОК» и результат автоматического заполнения элементов матрицы появится в окне (рисунок 14).

    При нажатии клавиши Enter по кнопке с надписью «Из файла», появится окно (рисунок 16):

Рисунок 16 – Из файла

    Необходимо  будет выбрать текстовый файл с матрицей. Затем нажимаем клавишу «Open» и результат появится в окне (рисунок 14).

    После ввода данных можно приступать к обработке.

    При нажатии клавиши Enter по кнопке с надписью «Все подматрицы», будут появляться все подматрицы рабочей матрицы в окне, нажимая любую кнопку клавиатуры (рисунок 17).

Рисунок 17 – Все подматрицы   

    При нажатии клавиши Enter по кнопке с надписью «По условию», будут появляться все подматрицы, по периметру которых расположены элементы, из которых можно образовать геометрическую прогрессию, нажимая любую кнопку клавиатуры (рисунок 18).

Информация о работе Програмирование на языке Паскаль