в
з
(- п 1)))))
ПЕРЕНЕСЕННЯ
(defun виведи (з в)
(format t "~ S -> ~ S ~%" з в))
виведемо
Виклик функції В«ханойські вежіВ» дає таке рішення:
(ханойські-башти 3)
А-> В
А-> С
В-> C
А-> В
З-> А
З-> У
А-> В
ГОТОВО
Можна переконатися, що визначена нами функція дає правильне рішення для довільного числа дисків, однак час вирішення завдання зі збільшенням числа дисків швидко зростає.
ВЛАСТИВОСТІ СИМВОЛІВ
У Ліспі можуть бути визначені, так звані, властивості символів. Список властивостей має вигляд:
(імя_свойства1 значеніє1 імя_свойства2 значеніе2 ... імя_свойстваN значеніеN).
Присвоєння нового властивості або зміна значення існуючого здійснюється за допомогою функції PUTPROP (або просто PUT):
(PUTPROP символ властивість значення).
З'ясувати значення властивості, пов'язаного з символом, можна за допомогою функції GET:
(GET символ властивість).
З використанням цієї функції можна також присвоювати властивості символам:
(SETF (GET символ властивість) значення).
Властивості символів глобальні Ця конструкція мови Лісп корисна в багатьох типових випадках подання даних, у тому числі семантичних мереж, фреймів і об'єктів об'єктно-орієнтованого програмування.
7.2 Логічне програмування на мові ПРОЛОГ
Мова Пролог являє ся представником сімейства мов логічного програмування і порівняно з традиційними мовами програмування, призначеними для запису алгоритмів, такими як Бейсік, Фортран, Паскаль, Сі, володіє істотними особливостями:
програма на Пролозі не є алгоритмом, а являє собою запис умови задачі на мові формальної логіки (тобто це дескриптивний, описовий мова програмування);
мову Пролог призначений не для вирішення обчислювальних або графічних завдань, а для вирішення логічних завдань, для моделювання процесу логічного умовиводу людини; обчислення ж і графічні побудови виконуються в Пролозі як побічний продукт логічного висновку;
Пролог вимагає особливого стилю мислення програміста, що ускладнює вивчення його тими, хто вже звик до процедурним програмування, тому, так звані, практичні програмісти не прагнуть переходити на цю мову, що заважає зростанню популярності Прологу; однак у багатьох країнах (Японії, Англії, Франції, Німеччині, Ізраїлі і т.д.) розширюється практика застосування Прологу в освіті як першого досліджуваного мови програмування; перехід до процедурних мов типу Паскаля в цьому випадку труднощів не викликає .
Все це дозволяє віднести Пролог в існуючому розподілі мов програмування на мови низького і високого рівня до мов надвисокого рівня. У японському проекті створення в 90-х роках XX століття комп'ютерів 5-го покоління (що володіють штучним інтелектом) Пролог покладений в основу апаратної організації та розробки програмного забезпечення. Нинішній Пролог, безумовно, не є остаточним варіантом мови програмування ЕОМ 5-го покоління і в найближчі роки отримає суттєвий розвиток. Мабуть, він зіграє роль Бейсика дескриптивного програмування: його значення і можливості в популяризації та поширенні ідей логічного програмування надзвичайно великі. p align="justify"> Вивченню мови Пролог дуже сприяє попереднє вивчення математичної логіки, понятійної системою якою він користується.
Програмування на Пролозі включає в себе наступні етапи:
) оголошення фактів про об'єкти і відносинах між ними;
) визначення правил взаємозв'язку об'єктів і відносин між ними;
) формулювання питання про об'єкти та відносини між ними.
Імена - це послідовності букв і цифр, що починаються з літери (рядкової!). Системи програмування на Пролозі для комп'ютерів допускають використання лише латинських малих і великих літер: а .. z, A .. Z. Використання російських малих і великих літер: а .. я, А .. Я не допускається. При практичній роботі з інтерпретатором рекомендується, щоб сенс імен залишався зрозумілим, використовувати як імена запис російських слів латинськими літерами. У цьому параграфі ми будемо запи...