Засоби керування

Факти та правила Прологу отримують інформацію, якщо вони викликаються з аргументами, які є або ж константами, або ж зв`язаними змінними. Вони повертають інформацію в процедуру виклику шляхом зв`язування змінних аргументів, які не були зв`язані.

Унифікація - це процес обробки на співпадання двох предикатів і призначення вільних змінних. Вона включає наступні кроки:

1.Пролог пробує задовільнити ціль. починаючи з початку програми шукати відповідність.

2.Коли запитується новий виклик, пошук також починається з початку програми.

3.Коли виклик знаходить успішно відповідність (кажуть виклик повертається), викликається наступна підціль.

4.Якщо змінні зв`язані в підпункті, тоді єдиний шлях звільнить їх - бектрекінг.

Можна виділити чотири основні пункти бектрекінгу:

1.Підцілі повинні бути задоволені в послідовності зверху вниз.

2.Пункти предикату тестуються в тому порядку, в якому вони з`являються в програмі при перегляді зверху - вниз.

3.Ціль буде задоволена, якщо буде знайдена відповідність для кожного рівня відповідного дерева.

4.Виклик, який породжує множину рішень, є недетермінованим.

Узагальнення.

1.Пролог має три предикати для контролю напрямку логічного пошуку вашої програми:

* failє завідомо невдачею. За допомогою його включається механізм бектрекінгу для пошуку альтернативних рішень;

* not приймає значення істина, коли для асоційованої з ним підцілі не може бути доведено істинність.

* cut - виключає бектрекінг.

2.Можна розглядати, що правила Прологу є визначеннями процедур з точки зору процедурної перспективи. З точки зору процедурної перспективи, правила можна розглядати як варіанти оператору caseПаскалю.

Вправи.

4.1.Нехай маємо програму

P: - a, b.

P: - c.

Декларативна сутність якої наступна: р буде істинним тоді і тільки тоді, коли будуть істинні одночасно і а іb, або буде істинним с.

Яким буде декларативна сутність програм?

а)р: - а, ! , b.

P: - c

б) р: - с

р: - a, ! , b.

4.2.Наступні відношення розподіляють числа на три класи - додатні, нуль і від`ємні:

клас (Число, додатні): - Число>0.

Клас (0, нуль).

клас (Число, від`ємні): - Число<0.

Зробіть цю процедуру більш ефективною за допомогою відтинання.

4.3.Нехай маємо програму

Р(4)

р(5): - !

Р(6).

Напишіть відповіді пролог-системи на наступні питання:

а) goal: p(X).

б) goal: p(X), p(Y).

c) goal: p(X), !, p(Y)

4.4.Напишіть програму знаходження максимума двох чисел, використовуючи предикат відтинання.

5.ПРОСТІ ТА СКЛАДНІ ОБ'ЄКТИ.

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

5.1 Прості дані.

В якості простих даних виступають змінні або ж константи. Константа може бути або ж символьною (char), або ж числовою (integer, real), атомарною (symbol, string).

Змінна позначається ідентифікатором. Ідентифікатор починається з великої букви у діапазоні від А доZ, або ж символом підкреслення (_). Як ми вже зазначали, єдиний символ підчеркування позначає анонімну змінну. В Пролозі змінна може зв'язуватись з любим допустимим аргументом або об'єктом даних. Відмітимо, що змінні Прологу є локальними, а не глобальними. Іншими словами, якщо два пункти мають змінну Х, тоді ці Хє різними змінними.

5.1.1. Константи як об'єкти даних.

Константи включають символи, числа і атоми. Значення константи міститься в її імені. Так константа 2 може символізувати тільки число 2, а константа abracadabra може символізувати тільки стрічку abracadabra.

Наши рекомендации