Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »ПРОГРАММИРОВАНИЕ

Декларативна мова програмування "Пролог"

Тип: курс лекций
Категория: ПРОГРАММИРОВАНИЕ
Скачать
Купить
Галузі застосування та принцип роботи мови програмування "Пролог". Керування процесом пошуку рішень, типи даних та використання списків. Рекурсивні процедури та цикли за допомогою пошуку з поверненням. Виконання арифметичних та логічних операцій.
Краткое сожержание материала:

Размещено на

Размещено на

Лекції з дисципліни „Інформатика: програмування задач штучного інтелекту”

Тема 1. Вступ

Пролог - декларативна мова програмування. Це означає, що за наявності необхідних фактів і правил, він може користуватися дедуктивними міркуваннями для вирішення тих або інших задач програмування. В Пролозі до рішень приходять шляхом логічного виведення чого-небудь на підставі деяких вже відомих фактів. Паскаль, Бейсик та інші традиційні мови програмування є процедурними, тобто програміст повинен описувати процедури крок за кроком, повідомляючи обчислювальній машині яким чином слід вирішувати задачу. Програміст, що вирішує задачу на Пролозі, повинен дати тільки опис задачі (основні правила і факти) та мету, а система сама визначить яким чином треба шукати рішення.

Галузі застосування Пролога.

Ї Транслювання мов. Пролог ідеально пристосований як для транслювання з однієї мови програмування на іншу, так і для перекладу з однієї людської мови на іншу.

Ї Будування експертних систем (ЕС) і баз знань ЕС.

Ї Виведення теорем, перевірка різноманітних теорій і будування пакетів у галузі штучного інтелекту, де потрібні властиві Прологу можливості проводити дедуктивні міркування.

Ї Побудова пакетів, основаних на символьній обробці.

Ї Побудова інтелектуальних інтерфейсів із програмним забезпеченням, щоб існуючі системи ставали доступними і дружніми до користувача.

Ї Реалізація динамічних баз даних.

Принцип роботи Пролога.

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

Знання Пролога - це кінцева сукупність фактів і правил, що задаються в програмі.

Однією з важливих властивостей Пролога є те, що крім знаходження відповідей на поставлені питання шляхом логічних міркувань він може розглядати альтернативні варіанти і знаходити всі можливі рішення, а не тільки одне перше.

Структура програм на Пролозі.

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

Ї Імена і структури об'єктів, що беруть участь у даній задачі.

Ї Імена відношень, існуючих між об'єктами (предикати).

Ї Факти і правила (речення), що характеризують ці відношення.

Речення Пролога складаються з голови та тіла і бувають трьох типів: факти, правила та запити.

Факт представляє собою відношення між одним або кількома об'єктами і містить твердження, що є завжди безумовно істинним. Факти - це речення, що мають порожнє тіло. Факт має наступний синтаксис:

відношення(об'єкт1,об'єкт2,...,об'єктN).

Приклади. людина(„Гіві”).

подобається(„Гіві”,Єва”).

Правило представляє собою відношення, істинність якого залежить від деяких умов. Правила дають можливість Прологу здійснювати логічне виведення. Правила мають голову і непорожнє тіло. Правило має наступний синтаксис:

заголовок:-<підціль1>,<підціль1>,...,<підцільN>.

Приклад.дитина(Y,X):-батько(X,Y);

мати(X,Y).

Заголовок - це відношення (факт), істинність якого залежить від істинності списків умов в тілі правила. Це називається відношенням залежності.

Символ „:-” (якщо) розділяє заголовок і тіло правила.

Тіло представляє собою набір умов, який повинен бути істинним, щоб Пролог міг довести істинність заголовку правила.

Якщо підцілі тіла правила розділені комою, - це означає логічну кон'юнкцію, тобто повинні задовільнюватися всі підцілі, якщо ж підцілі розділені крапкою з комою, - це означає логічну диз'юнкцію, тобто повинна задовільнюватися хоча б одна частина тіла правила - до або після крапки з комою.

Запити представляють собою речення без голови, тобто складаються з тіла, яке називається цільовим правилом. Після задання набору правил можна ставити питання або запити, що стосуються цих фактів. Запити мають наступний синтаксис:

<підціль1>,<підціль1>,...,<підцільN>.

Приклад.дитина(Y,”Петро”).

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

Тема 2. Основні розділи програми на Пролозі

Звичайна програма на Пролозі включає три або чотири програмних розділи:

Ї розділ доменів (domains);

Ї розділ предикатів (predicates);

Ї розділ мети (goal);

Ї розділ виразів (clauses).

Розділ clauses (факти і правила).

Це ядро програми, в якому містяться факти і правила, якими оперує Пролог, намагаючись досягти мети.

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

Приклад.

дитина(Y,X):-батько(X,Y).

дитина(Y,X):-мати(X,Y).

Кожне речення розділу clauses обов'язково повинне закінчуватись крапкою.

Розділ predicates (оголошення предикатів).

В розділі predicates оголошуються нестандартні предикати і домени (типи) їх аргументів. Вбудовані предикати оголошувати не потрібно.

Предикат - це символьне ім'я відношення, що визначається фактами і(або) правилами, які пов'язують його аргументи (об'єкти).

Інколи предикати не мають аргументів, але використання таких предикатів обмежене. Вони застосовуються або для перевірки якихось умов, або для для виконання дій, що не призводять до зв'язування змінних (створення вікон, друк та ін.).

Імена предикатів повинні починатися з малої латинської літери, за якою можуть слідувати будь-які латинські літери, цифри, знаки підкреслювання. Використання інших знаків та пропусків не припустиме. Загальна довжина імені не повинна перевищувати 250 символів.

Оголошення предикатів має такий вигляд:

predicates

ім'я_предиката(тип_аргумента1,тип_аргумента2,...,тип_аргументаN)

де тип_аргумента1,тип_аргумента2,...,тип_аргументаN - або стандартні домени, або домени, оголошені в розділі domains.

Оголошення предикатів не закінчується крапкою.

Арність предиката - це число його аргументів. Можуть бути предикати з однаковим іменем але з різною арністю. Такі предикати трактуються як цілком різні і тому повинні відповідно групуватися в розділах predicates та clauses.

Приклад.

domains

людина=symbol

predicates

батько(людина)

батько(людина,людина)

clauses

батько(Людина):-батько(Людина,_).

батько(„Пітер”,”Моніка”).

батько(„Стівен”,”Алекс”).

goal

батько(Людина)

Людина=”Пітер”

Людина=”Стівен”

Розділ domains (оголошення типів).

Всі об'єкти в відношеннях програми повинні належати якомусь типу (домену). Це можуть бути або стандартні типи, або спеціальні, що визначаються програмістом. В розділі domains оголошуються всі нестандартні домени, що використовуються у програмі.

Основними стандартними доменами або типами в Пролозі є: char, integer, real, string, symbol та file.

Оголошення доменів простих об'єктів має такий синтаксис:

domains

тип_аргумента1,..., тип_...

Другие файлы:

Вступ до мови Python
Об'єктно-орієнтована мова Python - сучасна мова програмування, проста у вивченні та використанні. Наявність повної стандартної бібліотеки. Середовища...

Використання мови логічного програмування Пролог для Бізнес додатків та Internet
Пролог означає – Логічне програмування. Він був розроблений на основі логічного доказу теорем і спочатку використався для досліджень в області обробки...

Розробка програми у середовищі Borland Delphi 7
Характеристика технології візуального проектування і програмування, суть якої полягає в тому, що область розробки бере на себе більшу частину рутинної...

Мова програмування C++
Розробка програми в візуальному середовищі С++. Визначення значення функцій в середовищі Builder мовою програмування С++. Обчислення елементів квадрат...

Об’єктно-орієнтоване програмування
Особливості редагування за допомогою текстового редактора NotePad вхідного файлу. C++ як універсальна мова програмування, знайомство с функціями. Хара...