Моделирование логических программ

Автор работы: Пользователь скрыл имя, 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 означает отсутствие пиктограммы.

    Есть более простой альтернативный  способ задать пиктограмму для  пункта меню - через свойство BitMap этого пункта. Щёлкните по кнопочке, появляющейся при переходе в эту строку Инспектора объектов. Появится окно выбора файла, где можно выбрать и загрузить нужную пиктограмму.

Компонент 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,image1.width,image1.height);

     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:Longint);

  var tx,ty:Longint;

  begin

image1.Canvas.Pen.Color:=clblue; 

   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 гораздо проще, чем, например в С.

К данной курсовой работе предоставлено также приложение с полным кодом программы и электронный носитель с программой.

 

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Архангельский, А.Я. 100 компонентов общего назначения библиотеки Delphi / А. Я. Архангельский. — Москва : Бином, 2002. – 272 с.
  2. Бобровский, С.И. Delphi 7. Учебный курс/ С. И. Бобровский – СПб.: Питер, 2004. – 736 с.
  3. Культин, Н.Б. Основы программирования в Delphi 7/ Н. Б. Культин – СПб.: БХВ.- СПб, 2003. – 608 с.
  4. Рекурсия [Электронный ресурс].  – Режим доступа: http://ru.wikipedia.org/wiki/Рекурсия - Дата доступа: 24.04.2013
  5. Фаронов, В.В. Delphi. Программирование на языке высокого уровня: Учебник для вузов/ В. В. Фаронов – СПб.: Питер, 2006. – 640 с.
  6. Фрактал [Электронный ресурс].  – Режим доступа: http://ru.wikipedia.org/wiki/Фрактал - Дата доступа: 24.04.2013
  7. Фрактал – это что [Электронный ресурс]. – Режим доступа: 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:Longint);

  var tx,ty:Longint;

  begin

 

image1.Canvas.Pen.Color:=clblue;  // задаем цвет кривой

 

   if k=0 then

    begin

     image1.Canvas.MoveTo(x1,y1);

     image1.Canvas.LineTo(x2,y2);

     Exit;

    end;

// формулы вычисления координат  точки, находящейся на середине  отрезка и удаленной от прямой на такое расстояние,

// чтобы при соединении этой  точки с концами отрезка получился  угол в 90 градусов

   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,image1.width,image1.height);

// задаем начальные значения  для прямой

     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('                                      Программа для построения фрактала "Драконова ломаная" '+ #13#10+#13#10+

'Чтобы построить фрактал, нажмите  на кнопку "Построить фрактал" '+ #13#10+

'Для ввода количества итераций  выберете в меню "Кол-во итераций"'+#13#10+

'Для сохранения полученного  результата в файл с расширением  jpg выберете в меню "Сохранить рисунок как" '+#13#10+

'Для выхода из программы выберете  в меню "Выход" '+#13#10+#13#10+

'Программа была разработана  студентом 1-го курса инженерного  факультета группы ИСТ-11 Пахомовым  Андреем Игоревичем',mtInformation,[mbOK],0 );

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.SaveToFile(name+'.jpg');end; end;

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('Количество итераций', 'Введите кол-во иттераций', '18'));

end;

 

end.

 


Информация о работе Моделирование логических программ