Курсовая работа: Розробка програми Sierpins, яка реалізує побудову рекурсивних кривих Серпінського

( 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 . Її задача - установити початкову точку (центр) кривої, тобто вихідні координати пера (Px і Py ) і одиничну довжину збільшення h . Квадрат, де малюється крива, міститься в середині екрана заданої ширини і висоти.

Графічне зображення отриманого алгоритму представлено в додатку А.

В порівнянні з такою рекурсивною побудовою еквівалентні програми, де уникали вживання рекурсії, виглядають украй складними й заплутаними.


Розділ 3. Практична реалізація розв'язку задачі

Програма рисування кривих Серпінського реалізована мовою Lisp. Текст програми наведено в додатку Б.

Програма на мові Lisp прдставляє собою рекурсивну функцію символьних виразів‚ яка будується аналогічно до арифметичних функцій з допомогою умовного оператора та оператора суперпозиції. Умовний оператор має вигляд

( p 1 l 1 ;→ ... ; pn ln )

Результатом його виконання буде p і ‚ якщо l і прийме істине значення. В мові є п'ять елементарних функцій:

- atom - логична функция‚ яка визначає чи є досліджуваний вираз атомом - неподільною частиною інформації;

- eq - логична функцияё яка встановлює рівність двох атомів;

- car , cdr -функції, які виділяють зі списку перший елемент‚ та елементи‚ що залишились;

- cons - об'єднання двох списків у один.

Крім елементарних‚ в мові Lisp є ряд більш складних функцій‚ які будуються з них‚ наприклад‚ підстановка в у вираз z замість всіх входжень символу y виразу x запишеться у вигляді наступної функції

цей запис представляє собою приклад програми на мові Lisp.

В даному курсовому проекті на мови Lisp розроблено програму Sierpins, яка реалізує побудову рекурсивних кривих Серінського.

На початку програми встановлюється значення змінної *VMode* ‚ яка керує установкою відео режиму, і за замовчуванням встановлена в значення 18. Ця установка відповідає режиму 640x480 Color, і працює на більшості систем. У випадку проблеми з установкою цього режиму необхідно вибрати значення цієї змінної відповідно до документації на устаткування. Розмір області для побудови кривих встановлюється константою * SquareZize * , значення якої в даному випадку становить 256.

Далі з допомогою операцій

h = SquareSize /4

x 0 = MaxX /2

y 0 = MaxY /2

обчислюється довжина лінії h та координати початкової точки (x0 ,y0 ) для малювання кривої .

К-во Просмотров: 212
Бесплатно скачать Курсовая работа: Розробка програми Sierpins, яка реалізує побудову рекурсивних кривих Серпінського