Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AlgStr / Библиотека / ЛЕКЦИИ / POSIBNIK / ПРОГР НА ПРОЛОГЕ.doc
Скачиваний:
42
Добавлен:
23.03.2015
Размер:
669.7 Кб
Скачать

Міністерство освіти і науки України Дніпропетровський національний університет

В. М. ЄФІМОВ

Програмування мовою пролог

Ухвалено вченою радою університету

як навчальний посібник

Дніпропетровськ

РВВ ДНУ

2004

УДК 681.319

Є 91

Рецензенти: д-р екон. наук, проф. К.Ф. Ковальчук

канд. фіз.-мат. наук, доц. В.Я. Марецький

Є 91 Єфімов В.М. Програмування мовою ПРОЛОГ: Навч. посіб.- Д.: РВВ ДНУ, 2004.- 92с.

Розглянуті особливості мови програмування ПРОЛОГ, описані методи програмування, наведені приклади програм, основаних на даних методах.

Для студентів ДНУ, які навчаються за спеціальністю « Прикладна математика», «Комп’ютерні науки».

© Єфімов В.М., 2004

ВСТУП

Назва мови ПРОЛОГ походить від слів ПРОграмування мовою ЛОГіки. Мова ПРОЛОГ була створена в 1973 р. Аленом Колмерое в Марсельському університеті. Створення мови й системи програмування даною мовою дозволило автоматизувати доказ у логіці предикатів 1-го порядку. Теоретичною підставою для розробки інтерпретатора (а надалі й компілятора) мови ПРОЛОГ стало створення нового правила виведення в логіці предикатів 1-го порядку - принципу резолюцій (Дж. Робінсон, 1965 р.). Це правило виведення зосноване на поданні висловлень у логіці предикатів 1-го порядку в спеціальному вигляді, а саме – діз'юнктів Хорна. Доказ теореми за допомогою методу резолюцій – це доказ методом від супротивного.

Велику роль у створенні ефективної реалізації мови ПРОЛОГ відіграла група математиків з Единбургу (Шотландія). Мова ПРОЛОГ, що описана У. Клоксиним і К. Мелишем у книзі “Программирование на языке ПРОЛОГ”, тривалий час залишається фактичним стандартом цієї мови.

Мова ПРОЛОГ істотно відрізняється від традиційних алгоритмічних мов. Насамперед мова ПРОЛОГ – це декларативна мова, що визначило наступні області її застосування:

- обробка знань;

- експертні системи;

- створення динамічних реляційних баз даних;

- переклад програм з однієї мови на іншу;

- створення пакетів символьних обчислень;

- доказ теорем;

- швидке створення прототипів прикладних програм.

Мова ПРОЛОГ також є універсальною мовою програмування. Це одна з компактних мов з досить малою системою понять, але могутніми засобами розширення. До цього класу мов відносять такі мови, як РЕФАЛ, ЛІСП, ФОРТ. Мова ПРОЛОГ (разом з мовою ЛІСП) служить основою для розробки додатків штучного інтелекту (ШІ). Основою для мов ШІ є їх здатність подавати знання. Маючи базу знань, система ШІ здатна самостійно шукати й знаходити потрібні розв’язки. Пошук розв’язок може містити багато кроків. Тому ефективність роботи додатків ШІ – одне зі слабких місць усіх мов ШІ й особливо мови ПРОЛОГ. Багато мов ШІ є мовами, орієнтованими на інтерпретацію, що ще більше позначається на їх ефективності. Типова схема додатків ШІ має такий вигляд (рис. 1).

БАЗА ЗНАНЬ

ІНТЕРПРЕТАТОР

Рис. 1. Типова схема додатків ШІ

Розв’язання задачі будується шляхом взаємодії інтерпретатора з базою знань деякої предметної області, описаної цією ж мовою. Задача перед системою ставиться у вигляді цілі, заданої засобами цієї ж мови.

Фірма Борланд створила компілювальну версію мови ПРОЛОГ – TURBO PROLOG (TP). На даний час найбільш популярна версія TP 2.0. Вона містить інтегроване середовище розробки з можливістю налагодження програми в режимі інтерпретації, а також компілятор і завантажник, що дозволяють створювати виконуючі модулі, здатні працювати без системи ПРОЛОГ (у вигляді EXE-файлів). Обробна система (інтерпретатор) разом з базою даних вбудовується у виконуючий код. Таким способом можна розробляти більш ефективні за швидкодією програми.

У пакет, що поставляється разом із системою TP 2.0, входить інтерпретатор PIE, написаний мовою TP, що дозволяє працювати суто в режимі інтерпретації.

Основні ознаки мови ПРОЛОГ:

  1. це декларативна мова (тобто мова описів);

  2. це мова обробки символів;

  3. наявність механізму виведення з пошуком і поверненням;

  4. наявність механізму уніфікації (зіставлення зі зразком);

  5. проста й виразна структура даних (основою подання даних служить дерево);

  6. нероздільність програм і даних;

  7. відсутність покажчиків, операторів переходу, циклів;

  8. механізм рекурсії – основа для організації повторень.

Повна могутність мови ПРОЛОГ визначається не однією якоюсь окремою ознакою, а сукупністю всіх цих особливостей. Декларативне програмування – це програмування в термінах цілей, тобто замість того, щоб указати програмі ЯК це необхідно зробити, ми задаємо ЩО ми хочемо одержати від програми. А вже сама система за допомогою убудованого механізму виведення шукає потрібний нам розв’язок.

Наприклад, нехай СУМА – це предикат, що встановлює залежності між двома складниками (останні два операнди) і сумою двох дійсних чисел (перший операнд). Потужність декларативного програмування можна проілюструвати на прикладі виконання таких цілей:

  • СУМА(8, 3, 5) – так, тому що 8 = 3 + 5;

  • СУМА(10, 3, 5) – ні, тому що 10  3+ 5;

  • СУМА(8, X, 5) – так при X = 3;

  • СУМА(X, 3, 5) – так при X = 8;

  • СУМА(X,3,Y) – так при X = 3 + Y,

де X, Y – вільні змінні. ПРОЛОГ шукає такі значення змінних, що входять у ціль, при яких цей предикат перетворюється на істину. Головне для ПРОЛОГу – довести істинність або хибність поставленої цілі. Все інше – конкретизація змінних, виведення їх значень тощо – побічний ефект доказу (узгодження) цілі.