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

Автор работы: Пользователь скрыл имя, 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 Кб (Скачать файл)

СОДЕРЖАНИЕ

ВВЕДЕНИЕ 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

 

 

 

ВВЕДЕНИЕ

Большинству людей казалось, что геометрия в природе ограничивается такими простыми фигурами, как линия, круг, коническое сечение, многоугольник, сфера, квадратичная поверхность, а также их комбинациями.

Однако  многие природные системы настолько  сложны и нерегулярны, что использование  только знакомых объектов классической геометрии для их моделирования  представляется безнадежным. Как, к примеру, построить модель горного хребта или кроны дерева в терминах геометрии?

Фракталы  и математический хаос – подходящие средства для исследования поставленных вопросов. Термин фрактал относится к некоторой статичной геометрической конфигурации, такой как мгновенный снимок водопада. Хаос – термин динамики, используемый для описания явлений, подобных турбулентному поведению погоды. Нередко то, что мы наблюдаем в природе, интригует нас бесконечным повторением одного и того же узора, увеличенного или уменьшенного во сколько угодно раз.

Роль  фракталов в машинной графике  сегодня достаточно велика. Они приходят на помощь, например, когда требуется, с помощью нескольких коэффициентов, задать линии и поверхности очень  сложной формы. С точки зрения машинной графики, фрактальная геометрия  незаменима при генерации искусственных  облаков, гор, поверхности моря. Фактически найден способ легкого представления  сложных неевклидовых объектов, образы которых весьма похожи на природные.

Актуальность  данной курсовой работы в широком использовании фракталов в компьютерных системах для лучшего сжатия данных, в телекоммуникациях для антенн, в биологии, теории жидкостей и физике поверхностей для моделирования.

Цель  курсовой работы – смоделировать фрактал «Драконова ломаная» при помощи среды объектно-ориентированного программирования Delphi.

Для достижения названной цели в исследовании необходимо решить следующие задачи:

- осуществить постановку задач;

- создать блок-схемы алгоритмов;

- осуществить описание объектов, свойств, методов;

- разработать формы и представить текст программы;

- привести результаты тестирования программного продукта.

  Для  выполнения этих задач будем  использовать среду объектно-ориентированного  программирования Delphi.

  Основные достоинства Delphi в том, что здесь удобная среда разработки, включающая функциональный отладчик, доступный в любой момент; контекстная справочная система, по которой можно изучать язык без обращения к сторонним источникам; высокая скорость компиляции, высокая скорость выполнения откомпилированных программ; встроенная возможность использовать вставки на языке ассемблера.

  Курсовая работа состоит из теоретической и практической части. Теоретическая часть состоит из: постановки задачи; математической модели; алгоритма решения задачи и блок. Практическая часть состоит из: описания объектов, свойств и методов; формы и основных модулей текста программы в среде Delphi; результата тестирования программного продукта; графического представления результатов; анализа полученных результатов.

К работе прилагается электронный  носитель информации.

 

1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

1.1  Постановка задачи

В данной курсовой требуется создать Windows-приложение на алгоритмическом языке Object Pascal в среде визуального программирования Delphi, которое генерирует фрактал «Драконовая ломаная».

1.2  Математическая модель

Фракталы  – геометрические объекты с дробной  размерностью. К примеру, размерность  линии – 1, площади – 2, объема – 3. У фрактала же значение размерности  может быть между 1 и 2 или между 2 и 3. К примеру, фрактальная размерность  скомканного бумажного шарика приблизительно равна 2,5. В математике существует специальная  сложная формула для вычисления размерности фракталов. Разветвления трубочек трахей, листья на деревьях, вены в руке, река - это фракталы. Говоря простым языком, фрактал - это геометрическая фигура, определенная часть которой  повторяется снова и снова, изменяясь  в размерах - это и есть принцип  самоподобия. Фракталы подобны самим себе, они похожи сами на себя на всех уровнях (т.е. в любом масштабе). [7]

Примеры фрактала показаны на рисунках 1.1, 1.2 и 1.3.

Рисунок 1.1 – Фрактальное дерево

Рисунок 1.2 – Губка Менгера

Рисунок 1.3 – Множество Жюлиа

Из определения  фрактала мы видим, что его основное свойство – самоподобие. При моделировании фракталов при помощи языков программирования будет использован такой метод решения задачи, как рекурсия.

В программировании рекурсия — вызов функции (процедуры) из неё же самой, непосредственно (простая  рекурсия) или через другие функции (сложная или косвенная рекурсия), например, функция  А вызывает функцию В, а функция В — функцию А. Количество вложенных вызовов функции или процедуры называется глубиной рекурсии.

Преимущество  рекурсивного определения объекта  заключается в том, что такое  конечное определение теоретически способно описывать бесконечно большое  число объектов. С помощью рекурсивной  программы же возможно описать бесконечное  вычисление, причём без явных повторений частей программы.

Реализация  рекурсивных вызовов функций  в практически применяемых языках и средах программирования, как правило, опирается на механизм стека вызовов  — адрес возврата и локальные  переменные функции записываются в  стек, благодаря чему каждый следующий  рекурсивный вызов этой функции  пользуется своим набором локальных  переменных и за счёт этого работает корректно. Оборотной стороной этого  довольно простого по структуре механизма  является то, что на каждый рекурсивный  вызов требуется некоторое количество оперативной памяти компьютера, и  при чрезмерно большой глубине  рекурсии может наступить переполнение стека вызовов. Вследствие этого, обычно рекомендуется избегать рекурсивных  программ, которые приводят (или  в некоторых условиях могут приводить) к слишком большой глубине  рекурсии. [4]

1.3 Алгоритм решения

Для создания фрактала будем использовать рекурсивную функцию, которая будет обращаться сама к себе. Суть построения изображения такова: пусть образующим элементом будут два равных отрезка, соединенных под прямым углом. В нулевом поколении заменим единичный отрезок на этот образующий элемент так, чтобы угол был сверху. Можно сказать, что при такой замене происходит смещение середины звена. При построении следующих поколений выполняется правило: самое первое слева звено заменяется на образующий элемент так, чтобы середина звена смещалась влево от направления движения, а при замене следующих звеньев, направления смещения середин отрезков должны чередоваться. На рисунке 1.4 представлены несколько первых поколений, а на рисунке 1.5 – 11-е поколение кривой, построенной по вышеописанному принципу.

Рисунок 1.4 – Алгоритм построения фрактала «Драконова ломаная»

 

Рисунок 1.5 – 11-ое поколение фрактала «Драконова ломаная»

1.4 Блок-схема

На рисунке 1.6 представлена блок-схема процесса генерации фрактала, где x1, y1, x2, y2 – начальные значения для прямой,  k – количество итераций для моделирования фрактала, Paint – рекурсивная функция для рисования фрактала, tx и ty – новые координаты, полученные путем вычислений в функции Paint.

Рисунок 1.6 — Блок-схема алгоритма генерации фрактала

 

На рисунке 1.7 показана блок-схема рекурсивной  функции Paint.

Рисунок 1.7 — Блок-схема рекурсивной функции Paint.

 

 

 

2. ПРАКТИЧЕСКАЯ ЧАСТЬ

2.1. Описание объектов, свойств и методов

В ходе составления программы были использованы следующие объекты с их свойствами:

Компонент Button представляет собой командную кнопку. Свойства компонента приведены в таблице 2.1.

Таблица 2.1 – Свойства компонента Button (командная кнопка)

Name

Имя компонента. Используется в программе  для доступа к компоненту и  его свойствам

Caption

Текст на кнопке

Left

Расстояние  от левой границы кнопки до левой  границы формы

Top

Расстояние  от верхней границы кнопки до верхней границы формы

Height

Высота кнопки

Width

Ширина кнопки

Enabled

Признак доступности кнопки. Если значение свойства равно True, то кнопка доступна. Если значение свойства равно False, то кнопка не доступна, например, в результате щелчка на кнопке событие Click не возникает

Visible

Позволяет скрыть кнопку (False) или сделать ее видимой (True)

Hint

Подсказка — текст, который появляется рядом  с указателем мыши при позиционировании указателя на командной кнопке

ShowHint

Разрешает (True) или запрещает (False) отображение подсказки при позиционировании указателя на кнопке


 

Компонент Image обеспечивает вывод на поверхность формы иллюстраций. Свойства компонента Image приведены в таблице 2.2.

Таблица 2.2 – Свойства компонента Image

Свойство

Описание

Picture

Иллюстрация, которая отображается в поле компонента

Width, Height

Размер  компонента. Если размер компонента меньше размера иллюстрации, и значение свойств AutoSize, Strech и Proportional равно False,то отображается часть иллюстрации

Proportional

Признак автоматического масштабирования  картинки без искажения. Чтобы масштабирование было выполнено, значение свойства AutoSize должно быть False

Strech

Признак автоматического масштабирования (сжатия или растяжения) иллюстрации в  соответствии с реальным размером компонента. Если размер компонента не пропорционален размеру иллюстрации, то иллюстрация будет искажена

AutoSize

Признак автоматического изменения размера компонента в соответствии с реальным размером иллюстрации


 

Продолжение таблицы 2.2

Center

Признак определяет расположение картинки в поле компонента по горизонтали, если ширина картинки меньше ширины поля компонента. Если значение свойства равно False, то картинка прижата к правой границе компонента, если True —то картинка располагается по центру

Visible

Отображается  ли компонент и, соответственно, иллюстрация на поверхности формы

Canvas

Поверхность, на которую можно вывести графику

Свойство

Описание

Picture

Иллюстрация, которая отображается в поле компонента

Width, Height

Размер компонента. Если размер компонента меньше размера иллюстрации, и значение свойств AutoSize, Strech и Proportional равно False,то отображается часть иллюстрации

Proportional

Признак автоматического  масштабирования картинки без искажения. Чтобы масштабирование было выполнено, значение свойства AutoSize должно быть False

Strech

Признак автоматического  масштабирования (сжатия или растяжения) иллюстрации в соответствии с  реальным размером компонента. Если размер компонента не пропорционален размеру иллюстрации, то иллюстрация будет искажена

AutoSize

Признак автоматического  изменения размера компонента в соответствии с реальным размером иллюстрации

Center

Признак определяет расположение картинки вполе компонента по горизонтали, если ширина картинки меньше ширины поля компонента. Еслизначение свойства равно False, то картинка прижата к правой границе компонента, если True —то картинка располагается по центру

Visible

Отображается ли компонент  и, соответственно, иллюстрация на поверхности формы

Canvas

Поверхность, на которую  можно вывести графику


 

Компонент Delphi Bevel предназначен в приложении для простого обведения чего-либо рамкой. Это прозрачная рамка, но если вы поставите её поверх строки ввода, то эта строка будет видна сквозь Bevel, а вот доступ к ней получить будет невозможно. В Bevel два важных свойства, определяющие внешний вид компонента это

 

1)Shape, может принимать значение:

 bsBottomLine — линия снизу,

 bsFrame — рамка,

 bsBox -прямоугольник,

 bsLeftLine — линия слева,

 bsTopLine — линия сверху,

 bsRightLine — линия справа,

 bsSpacer — область, используемая для разметки, видна только во время проектирования;

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