Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаби / 2

.doc
Скачиваний:
13
Добавлен:
05.03.2016
Размер:
152.58 Кб
Скачать

Міністерство освіти і науки, молоді і спорту України

Тернопільський національний технічний університет

імені Івана Пулюя

Кафедра комп'ютерних наук

Лабораторна робота2

з курсу

«Системи штучного інтелекту»

Виконала:

ст. гр. СНспз-52

Герич О.Ю.

Перевірив:

Прошин С.Ю.

Тернопіль – 2013

Тема роботи: Ознайомлення з мовою програмування Пролог.

Мета роботи: Ознайомлення з основними відомостями про мову програмування Пролог та її елементами. Одержання навичок роботи з системою SWI- Prolog.

Теоретичні відомості

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

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

- механізм висновку з пошуком і поверненням;

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

- проста, але виразна структура даних з можливістю її зміни.

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

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

- імена і структури об'єктів, використовуваних у задачі;

- імена відношень (предикатів), що існують між об'єктами;

- основну мету (задачу), розв'язувану даною програмою;

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

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

Іван любить Марію

Петро любить футбол

або у формі правил, наприклад,

Іван любить X, якщо Петро любить Х

(Іван любить те, що любить Петро).

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

Іван любить пиво.

А якщо задати Прологу задачу, Наприклад, Знайти усіх, хто любить футбол ,

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

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

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

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

При запуску SWI-Prolog у вікні з'явиться запрошення для введення запитів:

?-

Запит (питання) вводиться після запрошення й обов'язково закінчується крапкою, наприклад,

?- 5+4<3.

false

Пролог аналізує запит і видає відповідь true (Так) у випадку істинності твердження й falshe (Ні) у противному випадку або коли відповідь не може бути знайдена.

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

?- [example1].

У випадку вдалого завершення цієї операції буде видане повідомлення, аналогічне наступному:

% example1 compiled 0.00 sec, 612 bytes

true

У противному випадку буде виданий список помилок (ERROR) і/або попереджень (Warning).

Другий спосіб базується на виклику вбудованого предиката consult, якому як аргумент передається ім'я файлу (також без розширення), наприклад:

?- consult(example1).

Розширення pl часто використається для файлів, що містять програми мовою програмування Perl, тому можна зустріти й інші розширення для файлів із програмами на Пролозі. Для завантаження файлів з розширеннями, відмінними від pl, все ім'я файлу варто обов'язково вкласти в апострофи:

?- consult('example2.prolog').

?- ['example2.prolog']

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

?- [example1, 'example2.prolog'].

Також команду Сonsult, можна викликати із меню File програми.

Важливо пам'ятати, що всі запити повинні закінчуватися крапкою. Якщо

Ви забудете її поставити, то Пролог виведе символ '|' і буде очікувати подальшого введення. У цьому випадку треба ввести крапку й нажати клавішу Enter:

?- [example1]

| .

True

Програма мовою Пролог зазвичай описує якусь дійсність. Об'єкти (елементи) описуваного світу представляються за допомогою термів. Терм інтуїтивно означає об'єкт. Існує 4 види термів: атоми, числа, змінні й складні терми. Атоми й числа іноді групують разом і називають найпростішими термами.

Атом – це окремий об'єкт, що вважається елементарним. У Пролозі атом представляється послідовністю літер нижнього й верхнього регістру, цифр та символів підкреслення '_', яка починається з малої літери. Крім того, будь-який набір припустимих символів, вкладений в апострофи, також є атомом. Нарешті, комбінації спеціальних символів + - * = < > : & також є атомами (слід зазначити, що набір цих символів може відрізнятися в різних версіях Прологу).

Синтаксис цілих чисел простий, як це видно з наступних прикладів: 1, 1313, 0, -97. Не всі цілі числа можуть бути представлені в машині, їхній діапазон обмежений інтервалом між деякими мінімальним і максимальним значеннями, які визначаються певною реалізацією Прологу. SWI-Prolog допускає використання цілих чисел у діапазоні від -2147483648 (-231) до 2147483647 (231-1).

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

Факт - це твердження про те, що існує деяке конкретне відношення. Він є безумовно вірним. У розмовній мові під фактом розуміється вислів типу "Сьогодні сонячно" або "Васі 10 років". На Пролозі це записується у вигляді

Кома між фактами в останньому запиті означає операцію логічного І (кон'юнкцію).

Хід роботи

1. Виконую приклади роботи SWI-Prolog, наведені в теоретичних відомостях.

2. Ознайомлююсь із завданням згідно варіанту.

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

4. У текстовому редакторі описую визначені факти і правила мовою Пролог, та зберегаю файл з розширенням .pl.

5. Запускаю програму SWI-Prolog та за допомогою опції File/Consult ознайомлюю програму зі збереженими фактами і правилами, вибравши створений раніше файл.

Висновок:

Під час виконання лабораторної роботи я ознайомилась з мовою програмування Пролог та її елементами. Одержала навички роботи з системою SWI- Prolog.

Соседние файлы в папке Лаби