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

Курсовая

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

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

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

закрыть
Категория: Курсовая работа
Язык курсовой: Русский
Дата добавления:   
 
Скачать
Microsoft Word, 3721 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникальной курсовой работы

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

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 - 2016
Рейтинг@Mail.ru