Придержан стандарт ГОСТ 19.404–79 к содержанию и оформлению программного документа «Пояснительная записка», входящего в состав документов на стадиях разработки эскизного и технического проектов программы.
Тема: Разработка приложения для Windows, представляющего собой выполнение операции над матрицами.
Условие задачи:
Составить программу, проверяющую, образуют ли элементы двумерного массива магический квадрат. В магическом квадрате суммы чисел по всем вертикалям, всем горизонталям и двум диагоналям одинаковы.
Составить контрольный пример.
Необходимо разработать программу выполнения действий над элементами матрицы, учитывая условия магического квадрата.
Программа может быть использована в учебном процессе в качестве наглядного пособия.
Поскольку ставится задача разработать приложение для Windows, то использоваться программа может только под управлением ОС Windows.
Постановка задачи – разработать проект, который обеспечивает проверку, является ли заданная квадратная матрица магическим квадратом.
Программа должна осуществить сложение элементов матрицы по вертикали, по горизонтали и по диагоналям.
Входная информация по задаче – целочисленная квадратная матрица. Выходная информация – сообщение о том, что матрица является или не является магическим квадратом.
Также входными данными являются количество строк и столбцов матрицы.
Для программирования данной задачи используются структура данных – массив. Использованы конструкции разветвляющиеся и циклические конструкции.
Массив – совокупность однотипных элементов. Двумерный массив называются матрицей. Матрица определяется именем, размерность и типом. Например А [4,4] – матрица из 4 строк и 4 столбцов. Доступ к элементам массива осуществляется с помощью индексов. Для доступа к элементам матрицы используются два индекса. Например A [I, j] – элемент на пересечений i – строки, j – столбца.
В программе для удобства пользователю исходная матрица формируется с помощью генерации случайных чисел. Использованы случайные числа в пределах от 0 до 5.
Размерность матрицы вводится в поле ввода. Ограничение на размерность матрицы в пределах <30.
По условию поставленной задачи необходимо программировать проверку выполнения условий магического квадрата для исходной матрицы.
Операцию размернорсть матрицы должен выбрать пользователь.
Элементы матрицы формируются с помощью функции случайных чисел.
Проверка проверка условий магического квадрата выполняется вызовом отдельной процедуры, т.е. нажатием на button1.
1. Формирование матрицы.
2. Суммирование элементов по строкам, по столбцам, по двум диагоналям и проверка условий.
|
Сложение элементов матрицы по строкам
Вначале проверяется равность суммы элементов двух диагоналей, если они равны по циклу проверяются равность сумм элементов строк, столбцов.
Входными данными в данной задаче являютсячисло n – размер и матрица размером nхn. Для условий задачи подходит квадратная матрица. Выходными данными является сообщение, о результате «матрица является магическим квадратом» или «матрица не является магическим квадратом».
В программе для удобства исходная матрица формируется случайными числами.
Размер поля StringGridменяется в зависимости от значения n.
Задание на курсовую работу – разработка приложения для Windows, поэтому использована среда разработки приложений Delphi.
Delphi – это среда быстрой разработки, в которой в качестве языка программирования используется ObjectPascal. В основе идеологии Delphi лежит технология визуального программирования и методология объектно-ориентированного программирования. В курсовом проекте использованы три формы и следующие визуальные компоненты.
Над объектами проекта использованы события Show, Create, onClick, Close.
Для полноценной работы данной программы необходимы следующие ресурсы компьютера: процессор PentiumIVили Celeron 2.0Ghz.
Оперативная память не менее 512 Мбайт, достаточное количество свободного места на диске – порядка 1 Гбайт.
Проект программы содержит три окна:
1. Form1 – главное окно (выполнение операции над матрицами).
2. Form2 – справка о разработчике.
Окно Form1.
Главное окно программы – Form1
Ниже приведены описание компонентов, некоторые похожие компоненты не описаны.
Компонент Form1
Свойства:
Сaption – Магический квадрат;
Border – bsSingle;
BiSystemMenu – false;
BiMinimaze – false;
BiHelp – False;
События: нет.
1 – компонент TМainMenu
Свойства:
object MainMenu1: TMainMenu
Items
Справка (N1) О программе(N4)
Выход (N2)
События:
Для N1 – событие BitBtn1Click (приводится ниже).
N2Click – закончить работу с приложением.
N1Click – перейти к работе со второй формой.
2 – компонентStringGrid1
Свойства
Left = 152
Top = 42
Width = 220
Height = 180
DefaultColWidth = 20
DefaultRowHeight = 16
FixedCols = 0
FixedRows = 0
3 – компонентButton1
Caption = 'Магический квадрат?'
событие
OnClick = Button1Click
4 – компонентLabel6:
Свойства
Left = 96
Top = 400
Width = 196
Height = 24
Caption = «Контрольный пример»
Font. Charset = DEFAULT_CHARSET
OnClick = Label6Click
5 – компонент Edit1:
Свойства
Left = 232
Top = 48
Width = 41
Height = 32
Нижеприводитсяокно Form2.
Окно Form2
компонент Form2
Свойства
Caption Справка
1-компонент Label1
Для решения поставленной задачи в программе был объявлен двумерный массив(матрица)
x:array [0.. 10,0..10] of integer;
Доступ к элементам массива осуществляется с помощью индексов, поэтому были объявлены целочисленные простые переменные.
k, s, c, i, j, n:integer;
В программе используются циклические конструкции. Кроме вложенных циклов с параметром программа содержит сложную конструкцию Условие [Цикл[Условие]].
// процедура формирования матрицы x
procedureTForm1. Label3Click(Sender: TObject);
begin
if edit1. Text='' then showmessage ('введите размер матрицы') else
randomize;
n:=strtoint (edit1. Text);
stringgrid1. Visible:=true;
n:=n-1;
StringGrid1. Height:=StringGrid1. DefaultRowHeight* (strtoint (edit1.text)+1);
StringGrid1. Width:=StringGrid1. DefaultColWidth* (strtoint (edit1.text)+1);
StringGrid1. ColCount:=strtoint (edit1.text);
StringGrid1. RowCount:=strtoint (edit1.text);
for i:=0 to n do
for j:=0 to n do
begin
x [i, j]:=random(5)+1;
end;
for i:=0 to n do
for j:=0 to n do
begin
stringgrid1. Cells [j, i]:=inttostr (x[i, j]);
end;
end;
// процедура вычисления суммы элементов матрицы и проверки
procedure TForm1. Button1Click (Sender: TObject);
begin
s:=0;
for i:=0 to n do
s:= s+x [i, i];
c:=0;
for j:=n downto 0 do
c:= c+x [n-j, j];
for i:=0 to n do
begin
x [i, n+1]:=0;
for j:=0 to n do
x [i, n+1]:=x [i, n+1]+x [i, j];
end;
for i:=0 to n do
begin
x [n+1, i]:=0;
for j:=0 to n do
x [n+1, i]:=x [n+1, i]+x [j, i];
end;
k:=0;
if c=s then begin
for i:=0 to n do
if (c=x [n+1, i]) and (c=x [i, n+1]) then k:=k+1; end;
ifk=n+1 thenlabel4.caption:='Данная матрица является магичесим квадратом'
elselabel4.caption:='Эта матрица не является магическим квадратом';
end;
// Вывод в StringGrid3 контрольной матрицы
procedure TForm1. Label6Click (Sender: TObject);
begin
randomize;
n:=strtoint (edit1. Text);
stringgrid1. Visible:=true;
n:=n-1;
StringGrid1. Height:=StringGrid1. DefaultRowHeight* (strtoint (edit1.text)+1);
StringGrid1. Width:=StringGrid1. DefaultColWidth* (strtoint (edit1.text)+1);
StringGrid1. ColCount:=strtoint (edit1.text);
StringGrid1. RowCount:=strtoint (edit1.text);
for i:=0 to n do
for j:=0 to n do
begin
x [i, j]:=random(1)+1;
end;
for i:=0 to n do
for j:=0 to n do
begin
stringgrid1. Cells [j, i]:=inttostr (x[i, j]);
end;
end;
Исполняемый файл программы выполнения операции над матрицами имеет название Matr.exe и расположен на компакт-диске в каталоге Matr1\Magi. Состав проекта.
Наименование | Обозначение | Примечания |
Magi.res | Файл ресурсов | Содержит пиктограммы, графические изображения |
Magi.dpr | Файл проекта | Связывает все файлы из которых состоит приложение |
Magi.dof | Файл параметров проекта | Содержит текущие установки проекта: настройки компилятора и компоновщика, имена служебных каталогов, условные директивы |
Magi.cfg | Файл, содержащий конфигурационную информацию о проекте | Содержит информацию о том какие окна открыты и в каких позициях они расположены |
Unit2.pas | Файл программного модуля для формы №2 | Определяет функциональность формы №2 |
Unit2.dfm | Файл формы №2 | Содержит список свойств всех компонентов, включенных в форму №2 |
Unit2.dcu | Объектный файл для Unit2.pas | Откомпилированная версия Unit2.pas |
Unit1.pas | Файл программного модуля для формы №1 | Определяет функциональность формы №1 |
Unit1.dfm | Файл формы №1 | Содержит список свойств всех компонентов, включенных в форму №1 |
Unit1.dcu | Объектный файл для Unit1.pas | Откомпилированная версия Unit2.pas |
Листинг программы.