Моделирование логических программ
Автор работы: Пользователь скрыл имя, 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; результата тестирования программного продукта; графического представления результатов; анализа полученных результатов.
К работе прилагается электронный носитель информации.
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 – Множество Жюлиа
Из определения фрактала мы видим, что его основное свойство – самоподобие. При моделировании фракталов при помощи языков программирования будет использован такой метод решения задачи, как рекурсия.
В программировании
рекурсия — вызов функции (процедуры)
из неё же самой, непосредственно (простая
рекурсия) или через другие функции
(сложная или косвенная
Преимущество рекурсивного определения объекта заключается в том, что такое конечное определение теоретически способно описывать бесконечно большое число объектов. С помощью рекурсивной программы же возможно описать бесконечное вычисление, причём без явных повторений частей программы.
Реализация
рекурсивных вызовов функций
в практически применяемых
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 |
Признак
автоматического |
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 — область, используемая для разметки, видна только во время проектирования;