Моделирование логических программ
Автор работы: Пользователь скрыл имя, 05 Июня 2013 в 22:27, курсовая работа
Описание работы
НЦель курсовой работы – смоделировать фрактал «Драконова ломаная» при помощи среды объектно-ориентированного программирования Delphi.
Для достижения названной цели в исследовании необходимо решить следующие задачи:
- осуществить постановку задач;
- создать блок-схемы алгоритмов;
- осуществить описание объектов, свойств, методов;
- разработать формы и представить текст программы;
- привести результаты тестирования программного продукта.
Содержание работы
ВВЕДЕНИЕ 6
1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 8
1.1 Постановка задачи 8
1.2 Математическая модель 8
1.3 Алгоритм решения 10
1.4 Блок-схема 12
2. ПРАКТИЧЕСКАЯ ЧАСТЬ 14
2.1. Описание объектов, свойств и методов 14
2.2 Формы и основные модули текста программы в среде Delphi 17
2.3 Результат тестирования программного продукта 23
2.4 Анализ полученных результатов 25
ЗАКЛЮЧЕНИЕ 26
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 27
ПРИЛОЖЕНИЕ А 28
Файлы: 1 файл
Отчет.docx
— 748.72 Кб (Скачать файл)2)Style (свойство задает внешний вид фаски) может принимать значения:
bsLowerd вогнутая фаска по отношению к поверхности на которой размещен компонент,
bsRaised выпуклая фаска по отношению к поверхности на которой размещен компонент.
Компонент Delphi MainMenu предназначен для добавления к программе главного меню.
При добавлении к меню нового элемента дизайнер создает экземпляр объекта MenuItem. У каждого объекта MenuItem имеются собственные свойства и члены, которые устанавливают в окне Properties. Свойство Text определяет текст данного элемента меню, отображаемый во время выполнения. В это свойство автоматически заносится текст, введенный в поле компонента MainMenu во время разработки. Свойство Name определяет имя объекта меню, которое будет использоваться для ссылок на него в коде. При создании объекта это свойство автоматически получает значение по умолчанию, которое разрешается изменять впоследствии.
MainMenu обладает также возможностью сопровождать названия опций меню пиктограммами. Для этого нужно из редактора меню перейти к самому компоненту, и в Инспекторе объектов его свойству Image присвоить значение одного из компонентов ImageList, который необходимо предварительно поместить на Форму, и наполнить нужными пиктограммами (компонент ImageList описывается на странице Win32). Далее, выбрав нужный пункт меню в редакторе меню, его свойству ImageIndex нужно присвоить номер пиктограммы, который она имеет в компоненте ImageList. Для удобства выбора свойство ImageIndex имеет раскрывающийся список, содержащий пиктограммы, находящиеся в компоненте ImageList. Значение -1 означает отсутствие пиктограммы.
Есть более простой
Компонент Delphi XPManifest служит для того чтобы оформление вашей программы было такое же как и остальные программы, которые отображаются с использование текущей XP Theme, т.е. темы Windows XP. Если у вас Windows ХР, то вы увидите, что стиль компонентов вашего приложения будет такие же как у окон ХР.
2.2 Формы и основные модули текста программы в среде Delphi
При решении поставленной задачи будут использованы следующие объекты (рисунок 2.1)
Рисунок 2.1 – Объекты программы
Примечание – источник: собственная разработка
Bevel1 – прямоугольная рамка;
BitBtn1, BitBtn2 – командные кнопки;
Image1 – объект для рисования на ограниченной области (Canvas);
MainMenu1 – главное меню программы;
SavePictureDialog1 – диалоговое окно для сохранения изображений;
XPManifest1 – компонент для оформления программы в стиле Windows XP.
Данные объекты размещены нами на форме пользовательского интерфейса, которая представлена на рисунке 2.2.
Рисунок 2.2 – Форма пользовательского интерфейса
Главной кнопке «Построить фрактал» назначим программный код:
procedure TForm1.BitBtn1Click(Sender: TObject);
Var x1,y1,x2,y2,k: Integer;
begin
image1.Width := 800;
image1.Height:= 600;
image1.Canvas.Brush.Color := clWhite;
image1.Canvas.Rectangle(0,0,
x1 := 200;
y1 := 200;
x2 := 500;
y2 := 500;
k := k2;
Paint(x1,y1,x2,y2,k);
k1:=true;
end;
Данная кнопка вызывает рекурсивную функцию Paint с начальными фактическими параметрами и следующим программным кодом:
procedure TForm1.Paint(x1,y1,x2,y2,k:
var tx,ty:Longint;
begin
image1.Canvas.Pen.Color:=
if k=0 then
begin
image1.Canvas.MoveTo(x1,y1);
image1.Canvas.LineTo(x2,y2);
Exit;
end;
tx := (x1+x2) div 2 + (y2-y1) div 2;
ty := (y1+y2) div 2 - (x2-x1) div 2;
Paint(x2,y2,tx,ty,k-1);
Paint(x1,y1,tx,ty,k-1);
end;
Полный текст программы находится в Приложении А.
Главное меню программы состоит разделов Меню, которое содержит команды «Смоделировать», «Кол-во итераций», «Сохранить рисунок как», «Выход», и «О программе» (рисунок 2.3).
Рисунок 2.3 – Главное меню программы
Команда
«Смоделировать» равнозначна
С помощью команды «Кол-во итераций» можем изменить кол-во итераций для построения фрактала (рисунок 2.4).
Рисунок 2.4 – Выбор количества итераций
Команда
«Сохранить рисунок как» позволяет
сохранить изображение
Команда «Выход» завершает программу, а в разделе «О программе» выводится окошко с описанием команд и указанием авторства (рисунок 2.5).
Рисунок 2.5 – Окошко с информацией о программе
После создания приложения приступим к его тестированию.
2.3 Результат тестирования программного продукта
Для построения фрактала, нажмем кнопку «Построить фрактал». Результат выполнения программы можно увидеть на рисунке 2.6.
Рисунок 2.6 – Генерация фрактала «Драконова ломаная»
Произведем очистку области для рисования, нажав кнопку «Очистить». Результат выполнения видим на рисунке 2.7.
Рисунок 2.7 – Очистка области для рисования
Установим с помощью пункта меню – Меню – Кол-во итераций равным 10 и смоделируем фрактал (рисунок 2.8).
Рисунок 2.8 – Фрактал «Драконова ломаная» в 10-ом поколении
Сохраним результат построения в файл. Для этого перейдем в Меню и выберем опцию Сохранить рисунок как, сохраним рисунок под именем «пример». Затем откроем его программой для просмотра изображений. Как видно из рисунка 2.9, сохранение изображения было успешно выполнено.
Рисунок 2.9 – Сохраненное изображение, открытое программой для просмотра изображений ACDSee
2.4 Анализ полученных результатов
Анализируя результаты, полученные при выполнении программы, приходим к выводу, что программа способна генерировать фрактал «Драконова ломаная» с выбранным количеством итераций, производить очистку области для рисования, а также сохранение изображения в файл. Все перечисленные функции программы работают корректно.
ЗАКЛЮЧЕНИЕ
В результате выполнения данной курсовой работы была изучена работа с формами и окнами в приложении Delphi.
Целью курсовой работы было осуществление генерации фрактала «Драконова ломаная» при помощи среды объектно-ориентированного программирования Delphi.
При выполнении курсовой работы:
- была изучена теория и технология работы с средой программирования Borland Delphi7;
- была изучена и проанализирована соответствующая литература;
- была составлена программа для генерации фрактального дерева.
Полученная нами программа способна смоделировать фрактал «Драконова ломаная» и сохранить его в графический файл.
Знания, полученные в результате работы над курсовым проектом, позволят в дальнейшем использовать Delphi для решения технических задач.
Умение создавать проекты в Delphi пригодится в любой сфере деятельности, к тому же освоить визуальное программирование в Delphi гораздо проще, чем, например в С.
К данной курсовой работе предоставлено также приложение с полным кодом программы и электронный носитель с программой.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
- Архангельский, А.Я. 100 компонентов общего назначения библиотеки Delphi / А. Я. Архангельский. — Москва : Бином, 2002. – 272 с.
- Бобровский, С.И. Delphi 7. Учебный курс/ С. И. Бобровский – СПб.: Питер, 2004. – 736 с.
- Культин, Н.Б. Основы программирования в Delphi 7/ Н. Б. Культин – СПб.: БХВ.- СПб, 2003. – 608 с.
- Рекурсия [Электронный ресурс]. – Режим доступа: http://ru.wikipedia.org/wiki/Р
екурсия - Дата доступа: 24.04.2013 - Фаронов, В.В. Delphi. Программирование на языке высокого уровня: Учебник для вузов/ В. В. Фаронов – СПб.: Питер, 2006. – 640 с.
- Фрактал [Электронный ресурс]. – Режим доступа: http://ru.wikipedia.org/wiki/Ф
рактал - Дата доступа: 24.04.2013 - Фрактал – это что [Электронный ресурс]. – Режим доступа: http://karev.narod.ru/fraktal.
htm – Дата доступа: 24.04.2013
ПРИЛОЖЕНИЕ А
Листинг программы в Delphi
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, Menus, ExtDlgs, XPMan;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
BitBtn2: TBitBtn;
Image1: TImage;
SavePictureDialog1: TSavePictureDialog;
Bevel1: TBevel;
XPManifest1: TXPManifest;
N6: TMenuItem;
procedure Paint(x1,y1,x2,y2,k:Longint);
procedure BitBtn1Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure N6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var k1:boolean;
k2:byte;
// рекурсивная функция рисования кривой
procedure TForm1.Paint(x1,y1,x2,y2,k:
var tx,ty:Longint;
begin
image1.Canvas.Pen.Color:=
if k=0 then
begin
image1.Canvas.MoveTo(x1,y1);
image1.Canvas.LineTo(x2,y2);
Exit;
end;
// формулы вычисления координат
точки, находящейся на
// чтобы при соединении этой
точки с концами отрезка
tx := (x1+x2) div 2 + (y2-y1) div 2;
ty := (y1+y2) div 2 - (x2-x1) div 2;
// рекурсивный вызов функций, соединяющих концы отрезка с данной точкой
Paint(x2,y2,tx,ty,k-1);
Paint(x1,y1,tx,ty,k-1);
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
Var x1,y1,x2,y2,k: Integer;
begin
image1.Width := 800;
image1.Height:= 600;
image1.Canvas.Brush.Color := clWhite;
image1.Canvas.Rectangle(0,0,
// задаем начальные значения для прямой
x1 := 200;
y1 := 200;
x2 := 500;
y2 := 500;
k := k2;
Paint(x1,y1,x2,y2,k);
k1:=true;
end;
procedure TForm1.N4Click(Sender: TObject);
begin
bitbtn1.Click;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
form1.Close;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
MessageDlg('
'Чтобы построить фрактал,
'Для ввода количества
'Для сохранения полученного
результата в файл с
'Для выхода из программы
'Программа была разработана
студентом 1-го курса
end;
procedure TForm1.N3Click(Sender: TObject);
var Name:string;
begin
SavePictureDialog1.FileName := Name;
if k1=false then showmessage('Фрактал еще не построен') else begin
if SavePictureDialog1.Execute then begin
Name := SavePictureDialog1.FileName;
image1.Picture.Bitmap.
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
image1.Picture:=nil;
k1:=false;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
k2:=18;
end;
procedure TForm1.N6Click(Sender: TObject);
begin
k2:=strtoint(InputBox('
end;
end.