Курсовая: Разработка программы на языке LISP для построения кривых Серпинского i-го порядка - текст курсовой. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Курсовая

Разработка программы на языке LISP для построения кривых Серпинского i-го порядка

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Курсовая работа
Язык курсовой: Русский
Дата добавления:   
 
Скачать
Microsoft Word, 3721 kb, скачать бесплатно
Обойти Антиплагиат
Повысьте уникальность файла до 80-100% здесь.
Промокод referatbank - cкидка 20%!
Заказать
Узнать стоимость написания уникальной курсовой работы

Узнайте стоимость написания уникальной работы

2 МИНИСТЕРСТВО ВЫСШЕГО И СРЕДНЕГО СПЕЦИАЛЬНОГО ОБРАЗОВАНИЯ РФ М ОСКОВСКИЙ ИНСТИТУТ РАДИОТЕХНИКИ , ЭЛЕКТРОНИКИ И АВТОМАТИКИ Курсовой проект Тема : «Разработка программы на языке LISP для построения кривых Серпинского i -го порядка » Факультет : ВАВТ Дисциплина : ФПО Студент : Группа : Специально сть : 2202 Преподаватель : Яшин Л.З. МОСКВА март 2015 15 Оглавление Задание 3 Формализация задачи 4 Схема алгоритма 6 Текст программы 8 Руководство пользователя 11 Тест программы 12 Литература 14 4 Задание Ориги нальный узор на рисунке 1 состоит из суперпозиции четырех кривых . Эти кривые соответствуют некоторому регулярному образу . Алгоритм для построения этих кривых на экране монитора или на графопостроителе под управлением вычислительной машины описан в [1]. Зад ача проекта – реализовать этот алгоритм в виде программы на функциональном языке программирования Lisp . Рисунок 1 Формализация задачи Анализируя рисунок 1, можно обнаружить , что он получен путем наложения друг на друга нескольких кривых . Первые две из них показаны на рисунке 2. Кривая S i называется кривой Серпинского i -го порядка . Необходимо выяснить , ка кова рекурсивная схема этих кривых. Рисунок 2 Главная особенность кривой Серпинского состоит в том , что она замкнута и в ней нет пересечений . Это означает , что основная рекурсивная схема должна давать разомкнутую кривую линию , четыре части которой соединяются линиями , не принадлежащими самому рекурсивному образу . И действительно , эти замыкающие линии представляют собой отрезки прямых в четырех вне ш них углах , на рисунке 2 они выделены жирными линиями . Можно считать , что они принадлежат к непустой начальной кривой S – квадрату , «стоящему» на одном углу . Теперь достаточно легко составить рекурсивную схему. Четыре составляющих образа , для наглядности , о бозначим через A , B , C , D , а процедуры , рисующие соединительные прямые , будем обозначать стрелками , указывающими соответствующем направлении . Надо отметить , что четыре рекурсивных образа по существу идентичны , но лишь повертываются на 90 . Основной образ кривых Серпинского задается схемой : S : A B C D а рекурсивные составляющие (горизонт альные и вертикальные отрезки – двойной длины ): A: A B D A B: B C A B C: C D B C D : D A C D Предположим , что для построения части прямой в нашем распоряжении есть процедура Line , передвигающая перо в заданном направлении на заданное расстояние , причем направление задается целочисленным параметром i , как градусов . Если единичную прямую обозначить через h , то с помощью рекурсивных обращений к аналогично составленным процедурам для B и D и к самой A довольно просто написат ь процедуру , соответствующую схеме А . ( defun A ( k ) ( cond ( ( > k 0 ) ( A ( - k 1 ) ) ( Line 1 h ) ( B ( - k 1 ) ) ( Line 0 ( * 2 h ) ) ( D ( - k 1 ) ) ( Line 7 h ) ( A ( - k 1 ) )))) Эта проц едура инициируется главной программой по одному разу для каждой кривой Серпинского , образующих приведенный рисунок . Употребление явного параметра для уровня гарантирует окончание работы , так как глубина рекурсии не может быть больше k . Главная программа ст роится по образцу S . Ее задача - установить начальную точку кривой , т.е . исходные координаты пера ( P x и P y ) и единичную длину приращения h . Квадрат , где рисуется кривая , помещается в середине экрана , заданной ширины и высоты. Графическое изображение получе нного алгоритма представлено в следующем разделе (Рисунок 3). По сравнению с таким рекурсивным построением эквивалентные программы , где избегали употребления рекурсии , выглядят крайне сложными и запутанными. Схема алгоритма Рисунок 3 Схема алгоритма главной процедуры Рисунок 4 Схема алгоритма процедуры A Схемы алгоритмов процедур B , C и D аналогичны A , и поэтому , в их изображении нет необходимости. Текст программы ;; SIERPINS.LSP для XLISP в ерсии 2.1 ;; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;; Программа построения кривых Серпинского i-го порядка. ;; ;; ЗАПУСК : > (SierpinskiCurve 4) ;; ;; Замечание : Переменная *VMode* управляет установкой видео режима, ;; и по умолчанию установлена в з начение 18. ;; Эта установка соответствует режиму 640x480 Color, ;; и работает на большинстве систем . В случае проблемы ;; с установкой этого режима необходимо выбрать ;; значение этой переменной в соответствии с документацией ;; на оборудование. ;; ( defvar *VMode* 18 ) ;Видео режим по умолчанию ( defvar *MaxX* 640 ) ;Максимальная ширина экрана по умолчанию ( defvar *MaxY* 480 ) ;Максимальная высота экрана по умолчанию ( defvar *Squa reSize* 256 ) ;Размер области для построения ;; ;; Функция инициализирует графический режим , устанавливает переменные ;; *MaxX* *MaxY* *SquareSize* в соответствии с выбранным режимом ;; ( defun InitGraph() ( case *VMode* ( 4 ;320x200 Color ( mode 4 ) ( setq *MaxX* 320 *MaxY* 200 *SquareSize* 128 ) ) ( 16 ;640x350 Color ( mode 16 ) ( setq *MaxX* 640 *MaxY* 350 *SquareSize* 128 ) ) ( 18 ;640x480 Color ( mode 18 ) ) ( 106 ;800x600 Color ( mode 106 106 800 600 ) ( setq *MaxX* 800 *MaxY* 600 *SquareSize* 512 ) ) ( t ( error Unsupported graphics mode: *VMode* ) ) ) ) ;; ;; Функция реализует задержку на заданное время ;; ( defun pause ( time ) ( let ( ( fintime ( + ( * time internal-time-units-per-se cond ) ( get-internal-run-time ) ) ) ) ( loop ( when ( > ( get-internal-run-t ime) fintime ) ( return-from pause ) ) ) ) ) ;; ;; Функция целочисленного деления ;; ( defun div ( a b ) ( round ( / a b ) ) ) ;; ;; Функция рисования прямой : ;; Параметры : - направление рисования (0-7) ;; - длинна прямой ;; ( defun Line( Direction Size ) ( setq x Px y Py ) ( case Direction ( 0 ( setq x ( + x Size) ) ) ( 1 ( setq x ( + x Size ) y ( - y Size ) ) ) ( 2 ( setq y ( - y Size) ) ) ( 3 ( setq x ( - x Size ) y ( - y Size ) ) ) ( 4 ( setq x ( - x Size) ) ) ( 5 ( setq x ( - x Size ) y ( + y Size ) ) ) ( 6 ( setq y ( + y Size) ) ) ( 7 ( setq x ( + x Size ) y ( + y Size ) ) ) ) ( move Px Py x y ) ( setq Px x Py y ) ) ;; ;; Функции A, B, C, D - рекурсивные функции рисования ;; ( defun A ( k ) ( cond ( ( > k 0 ) ( A ( - k 1 ) ) ( Line 1 h ) ( B ( - k 1 ) ) ( Line 0 ( * 2 h ) ) ( D ( - k 1 ) ) ( Line 7 h ) ( A ( - k 1 ) ) ) ) ) ( defun B ( k ) ( cond ( ( > k 0 ) ( B ( - k 1 ) ) ( Line 3 h ) ( C ( - k 1 ) ) ( Line 2 ( * 2 h ) ) ( A ( - k 1 ) ) ( Line 1 h ) ( B ( - k 1 ) ) ) ) ) ( defun C ( k ) ( cond ( ( > k 0 ) ( C ( - k 1 ) ) ( Line 5 h ) ( D ( - k 1 ) ) ( Line 4 ( * 2 h ) ) ( B ( - k 1 ) ) ( Line 3 h ) ( C ( - k 1 ) ) ) ) ) ( defun D ( k ) ( cond ( ( > k 0 ) ( D ( - k 1 ) ) ( Line 7 h ) ( A ( - k 1 ) ) ( Line 6 ( * 2 h ) ) ( C ( - k 1 ) ) ( Line 5 h ) ( D ( - k 1 ) ) ) ) ) ;; ;; Главная процедура ;; Параметры : - количество итераций ;; ( defun Sierpins kiCurve ( Count ) ( InitGraph ) ;Установка графического режима ( setq h ( div *SquareSize* 4 ) ) ;Вычисление длины линии ( setq x0 ( div *MaxX* 2 ) ) ;Вычисление начальной точки ( setq y0 ( + ( div *MaxY* 2 ) h ) ) ;для рисов ания ( ;Основной цикл do (( i 1 )) ;Инициализация счетчика (( eql i ( + Count 1 ) ) 'Done ) ;Условие завершения ( setq x0 ( - x0 h ) ) ;Вычисление координат начальной ( setq h ( div h 2 ) ) ;точки для рисования и ( setq y0 ( + y0 h ) ) ;единичной длины линии ( setq Px x0 Py y0 ) ;Установка пера ( color i ) ;Установка цв ета для рисования ( A i ) ( Line 1 h ) ; Рисование ( B i ) ( Line 3 h ) ( C i ) ( Line 5 h ) ( D i ) ( Line 7 h ) ( pause 1.0 ) ;Задержка ( setq i ( + i 1 )) ;Инкримент счетчика ) ;Конец основного цикла ) ( print Try ( SierpinskiCurve 4) ) ; Подсказка Руководство пользователя Требования к системе : ь x86 персональ ный компьютер (386 минимум ; 486, Pentium, или Pentium Pro рекомендуется ) ь Microsoft DOS 3.30 или выше ь Microsoft Windows 3.1, Microsoft Windows for Workgroups, Microsoft Windows 95, Microsoft Windows NT 3.51 или 4.0 ь 512 Kb RAM ь 5 Kb свободного про странства на жестком диске ь Установленный интерпретатор XLisp версии 2.1 или выше Для запуска программы необходимо : q Включить компьютер q Загрузить интерпретатор XLisp c параметром « Sierpins . lsp » : C :\ XLISP \ XLISP . EXE SIERPINS . LSP Данный пример предп олагает , что XLisp установлен в каталоге C :\ XLISP и его запуск производится в режиме MS - DOS . q В ответ на приглашение XLisp ввести : ( SierpinskiCurve 4) Т ест программы Тест проводился на рабочей станции со следующей конфигурацией : q Pentium 166 q 32 Mb RAM q SyncMaster 17Glsi q S3 Trio64V+ q Windows 95 Интерпретатор XLisp был запущен в окне MS - DOS . Программа тестировалась при значениях параметра Count от 1 до 4. В результате тестов были получены следующие изображения на экране монитора В программе был установлен графический видео режим с разрешением 640 x 480 256 Color : Рисунок 5 Рисунок 6 Рисунок 7 Рисунок 8 Литература q “Алгоритм + структура данных = программа” , H .Вирт q “ XLisp-Plus 2.1 Programmers Manual” , David Michael Betz
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
У нас всё платно: родиться, учиться, жениться, лечиться, умереть.
Бесплатно разрешается только работать.
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, курсовая по программированию "Разработка программы на языке LISP для построения кривых Серпинского i-го порядка", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2017
Рейтинг@Mail.ru