ВИКОРИСТАННЯ ВБУДОВАНИХ ПРЕДИКАТІВ - Студопедія

ЗНАЙОМСТВО З SWI/PROLOG. ЗАПУСК ПРОСТОЙ ПРОГРАМИ

МЕТА: Знайомство з інтерпретатором SWI/PROLOG, включаючи використання меню, створення програмних файлів, запуск та трасування програм на SWI/PROLOG.

ГОЛОВНЕ МЕНЮ

У папці зі встановленим SWI/PROLOG увійдіть до директоріїpl/bin, яка містить файлplwin.exe, і запустіть його. На екрані з'явиться головне меню та головне (діалогове) вікно із запрошенням SWI/PROLOG (див. рис.1).

вбудованих

Мал.1 Вид діалогового вікна SWI/PROLOG

Головне меню можна зробити активним, натиснувшиF10 абоAlt. Коли головне меню активне, його елементи можна вибрати за допомогою клавіш керування курсором ( ) та наступним натисканням клавішіEnter. Вибирати елементи головного меню можна також мишею.

ПЕРША ПРОГРАМА

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

описують відношення між об'єктами, що є аргументами предикату.

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

Констатація факту в пропозиції

Еллен любить теніс.

у синтаксисі Прологу виглядає так:

використання

Ім'япредикату (функтора ) та об'єкта повиннопочинатися з маленькоїлітери і може містити латинські літери, кирилицю, цифри та символ підкреслення (_). Кирила використовується нарівні з латинськими літерами. Зазвичай предикатам дають такі імена, щоб вони відбивали сенс відношення. Наприклад:main,add_file_name. Два предикати можуть мати однакові імена, тоді система розпізнає їх як різні предикати, якщо вони мають різну кількість аргументів (арність ). Наприклад,любить/2, любить/3.

Ім'я предикату може збігатися з ім'ям будь-якого вбудованого предикату SWI/PROLOG. Однак, якщо збіглися імена користувальницького та вбудованого предикату, то при зверненні до нього (або з інтерпретатора, або з програми), буде викликаний передикат користувача, тобто. користувальницьке визначення «перекриє» зумовлене в SWI/PROLOG.

описують зв'язки між предикатами.

Білл любить усе, що любить Том.

у синтаксисі Прологу

ПравилоB:-A відповідає імплікаціїA→BЯКЩО A, ТО B »).

У загальному вигляді - це конструкція виду:

яка читається «P0 істинно, якщо P1 та P2 і . Pn істинні".

Предикат P0 називаєтьсязаголовком правила, вираз P1,P2,…,Pn -тілом правила, а предикати Pi -підцілями правила.Кома означає логічне "І ".

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

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

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

- названа область пам'яті, де може зберігатися значення.

Якщо змінна не пов'язана ззначенням – вона називаєтьсявільною змінною.

- процес отримання вільної змінної значення внаслідок зіставлення при логічному висновку у SWI/PROLOG-і.

Поняття змінної у логічному програмуванні відрізняється від базового поняття змінної, що вводиться у структурному програмуванні. Насамперед, ця відмінність у тому, що змінна в SWI/PROLOG-е, одного разу отримавши значення при уніфікації у процесі роботи програми, неспроможна його змінити, тобто. вона є аналогом математичного поняття «змінна» – невідома величина. Змінна в SWI/PROLOG немає визначеного типу даних може бути пов'язані з значенням будь-якого типу даних.

Змінна в SWI/PROLOG позначається як послідовність латинських літер, кирилиці та цифр, що починається з великої літери або символу підкреслення ( _ ). Зауважимо, що й значення аргументу предикату чи його ім'я починається з великої літери, воно пишеться в апострофах (див. попередній приклад).

У SWI/PROLOG розрізняються малі та великі літери.

Розглянемо наступну програму на SWI/PROLOG, яку використовуватимемо для ілюстрації процесів створення, виконання та редагування Пролог-програм.

ПРОГРАМА 1. /* хто що любить */

любить ( "Еллен", теніс). %Еллен любить теніс

любить ('Джон', футбол). Джон любить футбол

любить('Том',бейсбол). Том любить бейсбол

любить ('Ерік', плавання). % Ерік любить плавання

любить ( " Марк " , теніс). Марк любить теніс

любить('Білл',X):-любить('Том',X). Білл любить те, що любить Том

ЗАВАННЯ 1.1

предикатів

Інший спосіб завантажити вже існуючий файл - це виконання командиConsult у підменюFile діалогового вікнаSWI/PROLOG. На екрані з'явиться діалогове вікно.

використання

Вкажіть ім'я файлу, який потрібно завантажити, і виберітьВідкрити. Якщо ви спробуєте завантажити для виконання файл, у якому є синтаксичні помилки, він не завантажиться, а ви отримаєте повідомлення про помилку в головному вікні. Кутові дужки> виділятимуть місце, де зустрілася помилка. За замовчуванням файли, що асоціюються з SWI/PROLOG, мають розширення.pl.

Файли також можна завантажити, використовуючи вбудований предикат:

consult (Ім'я файлу або імена декількох файлів).

consult(Test). % test – ім'я файлу

consult([Test1,Test2]). % Завантаження двох файлів.

consult('test.pl').[1]

Для виконання завантаження цей предикат потрібно написати в головному вікні після запрошення інтерпретатора (?- ), яке означає, що інтерпретатор чекає на запит.

- це конструкція виду:

яка читається "Чи правильно P1 і P2 і . Pn?". Предикати Pi називаютьсяпідцілями запиту.

Запит є методом запуску механізму логічного висновку, тобто фактично запускає Пролог-программу.

Перевірте завантаження вихідного файлу, запитайте

?-любить ( " Білл " , бейсбол). % Чи любить Білл бейсбол?

Отримайте відповідьyes (так) та нове запрошення до запиту.

Введіть наступні запити та перегляньте результати.

?-любить ( " Білл " , теніс). Чи любить Білл теніс?

?-любить(Хто, теніс). Хто любить теніс?

?-любить('Марк',Що),любить('Еллен',Що).%Що люблять Марк і Еллен?

?-любить (Хто, Що). Хто хто любить?

?-любить (Хто, _). %Хто любить?

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

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

Якщо потрібно перервати виконання запиту (наприклад, потрібно набрати інший запит), натиснітьb.

Якщо ви хочете повторити один із попередніх запитів, скористайтеся клавішами "стрілка вгору" або "стрілка вниз".

використання

Перезавантажуються всі змінені файли та файл початкової ініціалізації pl.ini; про його призначення буде обумовлено пізніше.

ВИКОРИСТАННЯ ВБУДОВАНИХ ПРЕДИКАТІВ

В інтерпретаторі SWI/PROLOG є, як було зазначено вище, безліч вбудованих предикатів. Опишемо деякі з них:

– завантаження одного або кількох файлів.

?- consult(test). test – ім'я файлу

– показує поточний робочий каталог.

- Зміна робочого каталогу, де X - поточний робочий каталог, Y - новий робочий каталог.

ЗАВАННЯ 1.2

Перекладіть пропозиції української мови у предикатну форму, створіть, збережіть та завантажте базу знань.

Еллен любить читання.

Марк любить комп'ютери.

Джон любить бадмінтон.

Ерік любить читання.

Бадмінтон - це вид спорту.

Теніс - це вид спорту.

Футбол - це вид спорту.

Бейсбол – це вид спорту

Спортсмен - це той, хто любить якийсь вид спорту.

Поєднайте цю базу з базою Завдання 1.1.

Чи не знайшли те, що шукали? Скористайтеся пошуком:

Вимкніть adBlock! і оновіть сторінку (F5)дуже потрібно