- •1. Вступ в логічне програмування
- •1.1. Виникнення логічного програмування
- •1.2. Сучасний стан логічного програмування
- •Опис задачі на пролозі. Факти і правила
- •2.1. Опис задачі на пролозі
- •2.2. Факти
- •Цільове твердження
- •Умовні твердження
- •Приклад програми на пролозі
- •2.6. Виконання програми на пролозі
- •2.7. Статична та динамічна бази даних
- •2.8. Підготовка фактів для внутрішньої бази даних
- •2.9. Опис фактів внутрішньої бази даних
- •2.10. Предикати роботи з внутрішньою базою даних
- •2.11. Приклади використання внутрішньої бази даних
- •3. Основні поняття visual-prolog
- •3.1. Загальні відомості
- •3.3. Домени елементарних об’єктів
- •3.4. Терми
- •3.4.1. Константа
- •Анонімна змінна
- •3.4.3. Структури
- •3.5. Програма на пролозі
- •4. Механізми прологу
- •Механізм узгодження цілі з базою даних
- •4.2. Механізм звороту
- •4.3. Механізм звороту і відсік
- •4.4. Рекурсія
- •4.4.1. Рекурсивний метод розв’язку задач
- •Рекурсивні методи 2-х доменів:
- •Застосуємо висхідний метод рекурсії до розв’язку задачі:
- •Висхідна рекурсія
- •4.4.4. Предикат repeат
- •Міркування про те, як треба писати програму
- •5. Обробка рядків
- •5.1. Загальні відомості
- •1.1 Стандартні предикати обробки рядків
- •5.3. Лексиграфічне порівняння рядків
- •2Низхідна рекурсія
- •6.1. Метод низхідної рекурсії
- •6.2. Загальна характеристика рекурсивних методів
- •6.3. Низхідна та висхідна рекурсії
- •7. Робота зі списками
- •7.1. Списки. Оголошення списків
- •7.2. Увід-вивід списків
- •7.3. Основна операція на списках
- •7.4. Формування списків стандартним предикатом
- •Процедура з’єднує два списки.
- •Процедура розділяє список на два за вказаним елементом.
- •2.1 Сортування списків на пролозі
- •Сортування методом пухирця
- •7.8. Складені списки
- •8. Предикати вводу-вивіду
- •8.1. Предикати вводу
- •8.2. Предикати виводу
- •9. Файли
- •9.1. Символічне ім’я файлу
- •9.2. Вхідний і вихідний потоки
- •9.3. Організація файлу та методи доступу до файлу
- •9.4. Робота з файлами різними методами доступу
- •9.5. Закриття файлу
- •9.6. Предикати роботи з каталогами
- •9.7. Предикати, що працюють з атрибутами файлів
- •Література
2.11. Приклади використання внутрішньої бази даних
Розглянемо приклади програм, які застосовують динамічну базу даних.
Завдання1. Дано факти з відомостями про книжки бібліотеки. Вивести всю інформацію про книжки і кількість книжок у бібліотеці.
Facts
Single Kol(integer)
Predicates
Kniga(string, string)
do
Goal
Do, kol(K), write(“Кількість книжок”, K).
Clauses
kol(0).
Kniga(“Деникен”, “Колесника богов” ).
Kniga(“Бердник”, “Пути титанов” ).
Kniga(“Ролинг”, “Философский камень” ).
Do:- Kniga(A, N), write(A,N),nl, kol(K),K1=K+1,assertz(kol(K1),fail.
Do.
Кожен раз, одержуючи відомості про книгу, програма включає поточну кількість книжок. Предикат kol має властивість Single і тому в програмі повинен бути рівно один такий факт. Тому при додаванні іншого факту з таким предикатом він заміщується.
Завдання2. Відсортувати факти по кількості речей у пасажирів (у порядку зростання)
Facts-nosort
mesto(integer,integer)
Facts-sort
mesto1(integer, integer)
Predicates
sort
min(integer)
Goal
consult ("F.dat",nosort),sort,save("F.dat",sort).
Clauses
sort:-mesto(_,Kol),min(Kol),sort.
sort.
min(Kol):- mesto(_,Kol1), Kol1 < Kol, min (Kol1).
min(Kol):-mesto(N,Kol),
assertz(mesto1(N,Kol),sort), retract(mesto(N,Kol),nosort).
Файл F.dat містить факти:
mesto(1,5)
mesto(2,1)
mesto(3,4)
mesto(4,6)
Процедура знаходить серед не відсортованих фактів пасажира, у якого кількість речей мінімальна. Цей факт заноситься в область пам’яті, що призначена для відсортованих фактів, і вилучається з області пам’яті, що містить не відсортовані факти.
Далі дії повторюються для фактів, що залишилися. Дії виконуються до тих пір, поки область з ім’ям nosort не стане порожньою, а область з ім’ям sort буде містить відсортовані факти.
На Пролозі просто утворювати експертні системи. Експертна система містить базу знань, механізм виводу та інтерфейс. Механізм логічного виводу розміщується в виконавчій системі Прологу, а базу знань легко утворити засобами динамічної бази даних. Інтерфейс експертної системи легко утворюється візуальними засобами Visual Prolog.
3. Основні поняття visual-prolog
3.1. Загальні відомості
Мова Visual-Prolog використовує англійські букви, цифри і спеціальні символи.
З вказаних символів складаються зарезервовані слова Visual-Prolog та ідентифікатори, що використовує програміст.
До зарезервованих слів Visual-Prolog відносять назви секцій програми, імена стандартних предикатів, ідентифікатори стандартних доменів Visual Prolog, константи, директиви компілятору.
Програміст використовує символи для запису функторів(імен) своїх предикатів, ідентифікаторів змінних, констант, ідентифікаторів іменованих констант, ідентифікаторів методів, об’єктів користувача. Символи кирилиці використовують тільки в рядку, що в лапках.
Ідентифікатори на Пролозі записують за правилами:
довжина імені менше 250 символів;
ім'я може складатися з англійських букв, цифр, знаків підкреслення;
ім'я повинне починатися з букви.
Ім’я змінної починається з великої букви. Виключення – анонімна змінна, її ім'я складається тільки з ‘_’.