Автор работы: Пользователь скрыл имя, 31 Января 2011 в 15:52, курсовая работа
Процедуры и функции представляют собой важный инструмент Турбо Паскаля, позволяющий писать хорошо структурированные программы. В структурированных программах обычно легко прослеживается основной алгоритм, их нетрудно понять любому читателю, они проще в отладке и менее чувствительны к ошибкам программирования. Все эти свойства являются следствием важной особенности процедур (функций), каждая из которых представляет собой во многом самостоятельный фрагмент программы, связанный с основной программой лишь с помощью нескольких параметров.
Введение______________________________________________________________3
1.Задание на курсовую работу ________________________________________3
2.Анализ задания ___________________________________________________3
3.Разработка структур данных ________________________________________4
4.Разработка алгоритмов_____________________________________________5
5.Текст программы__________________________________________________9
6.Тестирование программы___________________________________________20
7.Руководство пользователя __________________________________________22
Заключение____________________________________________________________26
Список использованных источников_______________________________________
Программирование на языке ПАСКАЛЬ
Содержание
Введение______________________
Заключение____________________
Список использованных
источников____________________
Введение
Система
программирования Турбо Паскаль
представляет собой единство двух в
известной степени
Процедуры и функции представляют собой важный инструмент Турбо Паскаля, позволяющий писать хорошо структурированные программы. В структурированных программах обычно легко прослеживается основной алгоритм, их нетрудно понять любому читателю, они проще в отладке и менее чувствительны к ошибкам программирования. Все эти свойства являются следствием важной особенности процедур (функций), каждая из которых представляет собой во многом самостоятельный фрагмент программы, связанный с основной программой лишь с помощью нескольких параметров.
Модули представляют собой прекрасный инструмент для разработки библиотек прикладных программ и мощное средство модульного программирования. В Турбо Паскале имеется 8 стандартных модулей, в которых содержится большое число разнообразных типов, констант, процедур и функций.
1 Задание на курсовую работу
В прямоугольной матрице выявить все подматрицы, по периметру которых расположены элементы, из которых можно образовать геометрическую прогрессию.
2 Анализ задания
Задачей курсового проектирования является разработка программного продукта, который позволил бы выявить в прямоугольной матрице все подматрицы, по периметру которых расположены элементы, из которых можно образовать геометрическую прогрессию.
Должен быть разработан пользовательский интерфейс, который бы обеспечил более удобную и наглядную работу с программой. Данная программа должна выполнять следующие действия:
3 Разработка структур данных
Основные переменные:
Mxx – исходная целочисленная матрица (максимум 10х10);
Per – целочисленные элементы периметра;
N, M – количество строк и столбцов матрицы;
L – количество элементов по периметру подматрицы;
mf – флаг ввода исходной матрицы – true, false – матрица не введена;
fileresu, filework – текстовые файлы с исходной матрицей и с результатом соответственно;
fil – способ вывода результата true – в файл, false – на экране в окне;
f – способ получения результата false – все подматрицы или true – по условию.
Стандартные
модули: crt, app, objects, menus, drivers, views, dialogs, msgbox,
memory, dos, stddlg, editors и собственный модуль:
mod_matr.
4 Разработка алгоритмов
Опишем основные процедуры и функции программы.
Процедура GetRandomMatrix.
Процедура автоматического ввода матрицы со значениями.
Схема алгоритма данной процедуры представлена на рисунке 1.
Рисунок 1 – Схема алгоритма процедуры GetRandomMatrix.
3
блок – вводим количество
Процедура InputMatrix.
Процедура ввода матрицы со значениями вручную.
Схема алгоритма данной процедуры представлена на рисунке 2.
Рисунок 2 – Схема алгоритма процедуры InputMatrix.
3 блок – вводим количество строк n, количество столбцов m, 4-6 блоки – вводим элементы матрицы, 7 блок – устанавливаем флаг в true, т. е. матрица введена, 8 блок – выводим матрицу в окне программы.
Процедура Sort.
Процедура сортировки значений периметра подматрицы по возрастанию.
Схема алгоритма данной процедуры представлена на рисунке 3.
Рисунок 3 – Схема алгоритма процедуры Sort.
2, 3 блок – перебираем элементы периметра подматрицы, 4 блок – сравниваем текущее значение элемента матрицы меньше следующего, если да то переходим к 5 блоку, иначе к 3, 5 блок – меняем значения местами.
Процедура GetPerimetr.
Процедура определения элементов подматрицы по периметру.
Схема алгоритма данной процедуры представлена на рисунке 4.
Рисунок 4 – Схема алгоритма процедуры GetPerimetr.
2,
3 блок – обнуляем значения элементов
периметра, 4 блок – количество элементов
в перимерте = 1, 5, 6 блоки – перебираем
элементы столбца периметра и заносим
в массив per, 7, 8 блоки – перебираем элементы
строки периметра и заносим в массив per,
9 блок – заносим в переменную l количество
элементов в периметре подматрицы.
Функция GeomProg.
Функция
определения геометрической прогрессии
из элементов периметра
Схема алгоритма данной функции представлена на рисунке 5.
Рисунок 5 – Схема алгоритма процедуры GeomProg.
2 блок – вызов процедуры сортировки, 3 блок – флаг образования геометрической прогрессии, 4 блок – второе значение элемента массива периметра делим на первое, 5 блок – перебираем элементы массива периметра, 6 блок – следующее значение элемента массива делим на текущее и сравниваем с dv, 7 блок – не геометрическая прогрессия.
5 Текст программы
program MTRKW; {программа}
uses
mod_matr;
begin
Randomize;
matrix_perim.init;
matrix_perim.run;
matrix_perim.done;
end.
Unit mod_matr; {модуль программы}
interface
uses
crt,app,objects,menus,drivers,
const
cmwork=203; cmvvod=206; cmvval=207; cmvvse=204; cmvusl=205; cmvhel=257; cmisfl=208;
cmfilv=209; cmfilu=210;
wincoml:Tcommandset=[cmvvse,
wincom2:tcommandset=[cmvvod,
type
pinputwindow=^tinputwindow;
tinputwindow=object(tdialog)
procedure handleevent(var event:tevent);virtual;
end;
pwind=^twin;
twin=object(twindow)
constructor init(bounds:trect);
end;
pinterior=^tinterior;
tinterior=object(tscroller)
constructor init(var bounds:trect; hs,vs:pscrollbar);
procedure handleevent(var event:tevent);virtual;
end;
tmatrix=object(tapplication)
procedure initstatusline; virtual;
procedure initmenubar; virtual;
procedure handleevent(var event:tevent); virtual;
procedure inputmatrix;
procedure getrandommatrix;
procedure main(f:boolean);
procedure PrintMatrix ;
procedure fileinput;
procedure fileoutputv(f:boolean);
end;
tdata=record
col:string[4];
row:string[4];
max:string[4];
end;
var
matrix_perim:Tmatrix;
x,y:integer;
const
MAX = 10; {максимально матрица 10 на 10}
type
Matrix = array [1..MAX,1..MAX] of integer;
Perim = array [1..MAX*4] of integer;
var
wind:pwind;
Mxx:Matrix; {исходная матрица}
N,M:integer; {количество строк и столбцов}
l:integer; {количество элементов по периметру подматрицы}
per:Perim; {элементы периметра}
mf:boolean; {флаг ввода исходной матрицы - true}
data:tdata;
matr_v:array[1..10] of string;
fileresu,filework:text; {текстовые файлы с исходной матрицей и с результатом}
fil:boolean; {способ
вывода результата true
– в файл, false – на экране
в окне}
implementation
procedure readmas; {очистка матрицы}
var
i,j:integer;
s:string;
sr:string[3];
begin
s:='';
for i:=1 to n do
begin
for j:=1 to m do
begin
str(mxx[i,j],sr);
s:=s+sr+' ';
end;
matr_v[i]:=s;
s:='';
end;
end;
{_____________________________
constructor tinterior.init; {инициализация}
begin
tscroller.init(bounds,hs,vs);
growmode:=gfgrowhix+gfgrowhiy;
setlimit(8000,7000);
end;
{_____________________________
procedure tinterior.handleevent(var event:tevent); {движение мыши}
var
r:tpoint;
location:word;
begin
location:=0;
tscroller.handleevent(event);
case event.what of