Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекц по Visual Prolog.doc
Скачиваний:
4
Добавлен:
02.05.2019
Размер:
937.47 Кб
Скачать

2.2. Факти

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

Для нашої задачі ім’я предикату вказує на відношення між людьми, а аргументи на людей. В предикатній формі факти запишуться:

father (“Дмитро”, ”Володимир”).

father (“Дмитро”, ”Олександр”).

Аргументи предикату мають певний порядок. Програміст сам вирішує, на якому місці ставити певний аргумент. Але якщо порядок аргументів у предикату вже обраний, то він використовують у всій програмі. В розглянутому прикладі батько „Дмитро” є першим аргументом предикату, а син „Володимир” другим аргументом предикату.

За ім’я предикату можна також обирати назву об’єкту, а його аргументами властивості об’єкту.

Задача2. Відомі такі відомості про пасажирів літаку: місце, кількість речей, вага речей пасажира. Вивести відомості про пасажира на екран.

Ім’ям предикату зручно обрати baggage, а аргументами - властивості багажу. Наприклад, факт, що описує багаж запишеться: baggage (1, 2, 24.6).

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

Опис дії do можна подати умовним твердженням, де умови кожна з вказаних дій.

Тоді опис дії задачі буде описано:

Do:-baggage(N, Kol, Ves), write(N,’ ‘,Kol,’ ‘,Ves,’ ‘),nl,fail.

Де:

  • baggage(N, Kol, Ves) – у змінні N, Kol, Ves одержуються № місця, кількість речей і вага речей відповідно для певного пасажира;

  • write(N,’ ‘,Kol,’ ‘,Ves,’ ‘),nl – вивід відомостей і перевод курсору на новий рядок;

  • fail – стандартний предикат, який завжди повертає неправду. Ним вказується, що дії ще не виконані, і треба знайти інший розв’язок.

У деяких задачах зручно властивість об’єкту подавати як ім’я предикату, а об’єкти з цією властивістю аргументами предикату. Наприклад, книга, газета, журнал – друкований матеріал: drukovan(“книга”, “журнал”, “газета”).

Ім'я предикату називається функтором. У прикладах функтори: father, baggage. Функтор предиката можна писати як з маленької, так і з великої букви.

Предикат може не мати аргументів. Тому може існувати факт:go.

    1. Цільове твердження

Другий тип твердження – цільове. Ціль визначає, що треба знайти в задачі, і може записуватися як:

  • одиночна ціль;

  • кон’юнкція цілей, цілі поєднуються логічною операцією AND. Логічна операція AND позначається комою.

Цільове твердження закінчується точкою.

У нашій задачі цільове твердження можна подати, як одиночну ціль: brother (X, Y). Знайти братів в родині.

Цільове твердження можна також подати, як кон’юнкцію цілей:

brother (X, Y), write(X,’ ‘, Y). Знайти братів в родині і вивести на екран їх імена.

Цільове твердження може бути також подано як діз’юнкція цілей:

brother (X, Y);

sister(X,Y).

Знаходження розв’язку задачі в Пролозі виконується через доведення істинності цілі. Для доведення істинності цільового твердження використовують умовні твердження.