p align="left">N2Click - закончить работу с приложением. N3Click - перейти к работе со второй формой. N4Click - перейти к работе с третьей формой. 2- компонент StringGrid1 Left = 152 Top = 42 Width = 220 Height = 180 DefaultColWidth = 20 DefaultRowHeight = 16 FixedCols = 0 FixedRows = 0 3- компонент Button2 Caption = '-' событие OnClick = Button2Click 4- компонент Button4 Left = 200 Top = 336 Width = 121 Height = 25 Caption = контрольный пример событие OnClick = Button4Click 5 - компонент TLabel1 Свойства: Caption = Матрица 1 События OnClick = Label2Click Ниже приводится окно Form2 (рисунок 4) Рисунок 4. окно Form2 компонент Form2 Свойства Caption Справка о разработчике 1-компонент Label1 Свойства Сaption Курсовой проект по дисциплине «Программирование» 2-компонент Label1 Свойства Сaption Программу разработал студент группы Узин-709-02 КРУ г.Астана 3-компонент Label1 Свойства Сaption Садреев Иван Событие OnClick Компонент Form3 Рисунок 5 1- компонент Мемо1 2- компонент Button1 свойство Сaption Назад Написание программыДля решения поставленной задачи в программе были объявлены двумерные массивы(матрицы) D,A,B,C:Array[0..20,0..20] of integer; Доступ к элементам массива осуществляется с помощью индексов, поэтому были объявлены целочисленные простые переменные. m,n,k,i,j,p:integer; В программе используются циклические конструкции. Кроме вложенных циклов с параметром программа не содержит сложных конструкции. // процедура формирования матрицы А procedure TForm1.Label2Click(Sender: TObject); begin for i:=0 to stringGrid1.ColCount-1 do for j:=0 to stringgrid1.RowCount-1 do begin stringGrid3.Cells[i,j]:=''; end; for i:=0 to stringGrid1.ColCount-1 do for j:=0 to stringgrid1.RowCount-1 do begin a[i,j]:=random(9); stringGrid1.Cells[j,i]:=inttostr(a[i,j]); end; end; // процедура умножения матриц procedure TForm1.Button3Click(Sender: TObject); begin // обнуление матрицы D for k:=0 to stringGrid1.ColCount-1 do for i:=0 to stringGrid1.ColCount-1 do d[k,i]:=0; for k:=0 to stringGrid1.ColCount-1 do for i:=0 to stringGrid1.ColCount-1 do begin for j:=0 to stringgrid1.RowCount-1 do d[k,i]:=d[k,i]+a[k,j]*b[j,i]; end; // Вывод результатов в StringGrid3 for i:=0 to 9 do for j:=0 to 9 do stringgrid3.Cells[j,i]:=inttostr(d[i,j]); end; 2.2 Спецификация программыИсполняемый файл программы выполнения операции над матрицами имеет название Matr.exe и расположен на компакт-диске в каталоге Matr1\Matriz. Состав проекта.|
Наименование | Обозначение | Примечания | | Matriz.res | Файл ресурсов | Содержит пиктограммы, графические изображения | | Matriz.dpr | Файл проекта | Связывает все файлы из которых состоит приложение | | Matriz.dof | Файл параметров проекта | Содержит текущие установки проекта: настройки компилятора и компоновщика, имена служебных каталогов, условные директивы | | Matriz.cfg | Файл, содержащий конфигурационную информацию о проекте | Содержит информацию о том какие окна открыты и в каких позициях они расположены | | Unit3.pas | Файл программного модуля для формы №3 | Определяет функциональность формы №3 | | Unit3.dfm | Файл формы №3 | Содержит список свойств всех компонентов, включенных в форму №3 | | Unit3.dcu | Объектный файл для Unit3.pas | Откомпилированная версия Unit3.pas | | 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 | | | 2.3 Текст программыЛистинг программы.unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, Menus;type TForm1 = class(TForm) MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; StringGrid1: TStringGrid; StringGrid2: TStringGrid; Button1: TButton; Button2: TButton; Button3: TButton; Label1: TLabel; StringGrid3: TStringGrid; Label2: TLabel; Label3: TLabel; N5: TMenuItem; Button4: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure Label2Click(Sender: TObject); procedure Label3Click(Sender: TObject); procedure N4Click(Sender: TObject); procedure N2Click(Sender: TObject);procedure N5Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1; d,A,B,C:array[0..20,0..20] of integer; m,n,k,i,j,p:integer;implementationuses Unit2, Unit3;{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);beginrandomize; //генератор случайных чисел// установление свойств компонента Stringrid2, Stringgrid3 присваивается количество строк и //столбцов компонент StringGrid1stringgrid2.ColCount:= stringgrid1.ColCount;stringgrid2.RowCount:= stringgrid1.RowCount; stringgrid2.DefaultColWidth:=stringgrid1.DefaultColWidth; stringgrid2.DefaultRowHeight:= stringgrid1.DefaultRowHeight; stringgrid2.FixedCols:= stringgrid1.FixedCols; stringgrid2.FixedRows:= stringgrid1.FixedRows;stringgrid2.Height:=stringgrid1.Height; stringgrid2.Width:= stringgrid1.Width; stringgrid3.ColCount:= stringgrid1.ColCount;stringgrid3.RowCount:= stringgrid1.RowCount; stringgrid3.DefaultColWidth:=stringgrid1.DefaultColWidth; stringgrid3.DefaultRowHeight:= stringgrid1.DefaultRowHeight; stringgrid3.FixedCols:= stringgrid1.FixedCols; stringgrid3.FixedRows:= stringgrid1.FixedRows; stringgrid3.Height:=stringgrid1.Height; stringgrid3.Width:= stringgrid1.Width; for i:=0 to stringgrid1.RowCount-1 do for j:=0 to stringgrid1.colCount-1 do begin stringGrid1.Cells[i,j]:=''; stringGrid2.Cells[i,j]:=''; end; end;// процедура сложения матрицprocedure TForm1.Button1Click(Sender: TObject);beginfor i:=0 to stringGrid1.RowCount-1 dofor j:=0 to stringgrid1.ColCount-1 dobeginc[i,j]:=a[i,j]+b[i,j];end;for i:=0 to stringGrid1.RowCount-1 dofor j:=0 to stringgrid1.ColCount-1 dostringgrid3.Cells[j,i]:=inttostr( c[i,j]); end;//процедура вычитания матрицprocedure TForm1.Button2Click(Sender: TObject);beginfor i:=0 to stringGrid1.ColCount-1 dofor j:=0 to stringgrid1.RowCount-1 do beginc[i,j]:=a[i,j]-b[i,j];end;for i:=0 to stringGrid1.ColCount-1 dofor j:=0 to stringgrid1.RowCount-1 dostringgrid3.Cells[j,i]:=inttostr( c[i,j]);end; // процедура умножения матрицprocedure TForm1.Button3Click(Sender: TObject);begin // инициализация матрицы D for k:=0 to stringGrid1.ColCount-1 do for i:=0 to stringGrid1.ColCount-1 do d[k,i]:=0; // Умножение for k:=0 to stringGrid1.ColCount-1 do for i:=0 to stringGrid1.ColCount-1 do begin for j:=0 to stringgrid1.RowCount-1 do d[k,i]:=d[k,i]+a[k,j]*b[j,i]; end; // Вывод результата в Stringrid for i:=0 to 9 do for j:=0 to 9 do stringgrid3.Cells[j,i]:=inttostr(d[i,j]); end;// запуск формы 2 Справка о разработчикеprocedure TForm1.N3Click(Sender: TObject);begin form2.Show;end;//формирование матрицы Аprocedure TForm1.Label2Click(Sender: TObject);begin for i:=0 to stringGrid1.ColCount-1 do for j:=0 to stringgrid1.RowCount-1 do begin stringGrid3.Cells[i,j]:=''; end; for i:=0 to stringGrid1.ColCount-1 do for j:=0 to stringgrid1.RowCount-1 do begin a[i,j]:=random(9); stringGrid1.Cells[j,i]:=inttostr(a[i,j]); end; end;//формирование матрицы Вprocedure TForm1.Label3Click(Sender: TObject);begin for i:=0 to stringGrid1.ColCount-1 do for j:=0 to stringgrid1.RowCount-1 do begin stringGrid3.Cells[i,j]:=''; end; for i:=0 to stringGrid1.ColCount-1 do for j:=0 to stringgrid1.RowCount-1 do begin b[i,j]:=random(9); stringGrid2.Cells[j,i]:=inttostr(b[i,j]); end;end;//запуск формы 3 Справка о программеprocedure TForm1.N4Click(Sender: TObject);beginform3.show;end;//Выход из программыprocedure TForm1.N2Click(Sender: TObject);beginform1.close;form2.Close;form3.Close;end;//Сообщение оператору `Помощь'procedure TForm1.N5Click(Sender: TObject);begin Showmessage('Нажмите на кнопки Матрица 1 и Матрица 2 для формирования матриц');end;//Контрольный пример procedure TForm1.Button4Click(Sender: TObject);begin for i:=0 to stringGrid1.ColCount-1 do for j:=0 to stringgrid1.RowCount-1 do begin????a[i,j]:=1; b[i,j]:=random(2); end; for j:=0 to stringGrid1.ColCount-1 do for i:=0 to stringgrid1.RowCount-1 do begin stringGrid2.Cells[j,i]:=inttostr(b[i,j]);stringGrid1.Cells[j,i]:=inttostr(a[i,j]); end; for i:=0 to stringGrid1.ColCount-1 do for j:=0 to stringgrid1.RowCount-1 do begin C[i,j]:=0; d[i,j]:=0; stringGrid3.Cells[j,i]:=inttostr(C[i,j]); end;end;end. 2.4 Описание программыПрограмма предназначена для выполнения операции сложения, вычитания и умножения матриц. Программа написана на языке Object Pascal. Работает в среде операционных систем Widows 2000/XP. Для полноценной работы данной программы необходимы следующие ресурсы компьютера: процессор Pentium IV или Celeron 2.0Ghz.Оперативная память не менее 512 Мбайт, достаточное количество свободного места на диске - порядка 1 Гбайт.Программа запускается нажатием на файл Matriz.exe. На открывающем окне формы расположен меню MainMenu, через которого можно открыть справки, помощь и закрыть программу. Ввод данных осуществляется с помощью случайных чисел. Нажатие на метки Матрица 1 и Матрица 2 вызывает процедуры формирования матриц. Элементы исходных матриц загружаются для отображения на форме в компонент StringGrid1 и StringGrid2. Выходная информация размещается в поле StringGrid3. Пользователю предлагается выбрать одну операцию нажатием на соответствующую кнопку. Программа загружается нажатием на файл Matriz.exe из папки Matr1.Исходные матрицы описаны как квадратные целочисленные, диапазон значений элементов от 0 до 10. Такое ограничение обусловливается предотврощением перегруза памяти компьютера и ошибок связанные размерностью матриц. Значения для StringGrid1.ColCount и StringGrid1.RowCount задаются в окне ObjectInspektor. Эти значения в программе присваиваются для StringGrid2 и StringGrid3.2.5 Тестирование программыПравильность программы легко проверяется для операции сложения и вычитания, так как это производится покомпонентно (см. рисунки 6 и 7). Рисунок 6. Результат сложения Рисунок 7. Результат вычитания
Рисунок 8. Результат умножения Перечисляются требования, подлежащие проверке при испытании программы, а также порядок и методика их контроля. Приводятся исходные данные для решения контрольного примера и ожидаемые результаты. Прилагается распечатка решения контрольного примера и снимки экрана с результатами тестирования. 2.6 Внедрение В разделе описываются (руководство оператора ГОСТ 19.505-79): · условия выполнения программы; · выполнение программы; · сообщения оператору. В разделе “Условия выполнения программы” должны быть указаны условия, необходимые для выполнения программы (минимальный и/или максимальный состав аппаратурных и программных средств и т.п.). В разделе “Выполнение программы” должна быть указана последовательность действий оператора, обеспечивающих загрузку, запуск, выполнение и завершение программы. В разделе приводятся сведения для проверки, обеспечения функционирования и настройки программы на условия конкретного применения. Перечисляется порядок и последовательность ввода исходных данных и получения результатов расчета. В разделе “Сообщения оператору” должны быть приведены тексты сообщений, выдаваемых в ходе выполнения программы, описание их содержания и соответствующие действия оператора. Содержание разделов допускается иллюстрировать поясняющими примерами, таблицами, схемами. Список использованных источников Немнюгин С.А. Turbo Pascal: Учебник для вуэов, СПб.: «Питер», 2007. Немнюгин С.А. Turbo Pascal: практикум:. СПб.: Издательство «Питер», 2001. Вирт Н. Алгоритмы и структуры данных. М., Мир, 2007. Лабораторный практикум по информатике. Учебное пособие для вузов, СПб.: Питер,2007 Фараонов В.В. Турбо Паскаль7.0. Практика программирования. М., Нолидж, 2001. Архангельский, А. Я. Приемы программирования в Delphi на основе VCL [Текст] / А. Я. Архангельский. - М. : Бином-Пресс,2006. - 933 с. Павловская, Т. А. Паскаль. Программирование на языке высокого уровня - СПб. : Питер, 2004. (допущен Министерством образования). Культин, Н. Б. Основы программирования в Delphi 7 - СПб. : БХВ-Петербург, 2003. Зубов, А. В. Программирование на Delphi. Трюки и эффекты. - СПб. : Питер, 2005. Павловская, Т. А. Паскаль. Программирование на языке высокого уровня. - СПб. : Питер, 2004. (допущен Министерством образования).
Страницы: 1, 2
|