Similar presentations:
Основы языка Visual Prolog
1. Основы языка Visual Prolog
Программирование в логике2.
Логика предикатов — это простейшийспособ объяснить, как "работает"
мышление, и она проще, чем
арифметика, которой вы давно
пользуетесь.
Пролог включает механизм вывода,
который основан на сопоставлении
образцов, помощью подбора ответов на
запросы он извлекает хранящуюся
(известную) информацию.
3. Синтаксис логики предикатов
Предложения на естественномязыке
Синтаксис логики
предикатов
Машина красивая
fun (car)
Роза красная
red (rose)
Билл любит машину, если машина likes (bill, Car) if fun
красивая
(Car)
4. Факты и правила
• объекты (objects) - Билл, собака• отношения (relations) - любит
• правила (rules) -Билл любит собак,
если собаки хорошие
5.
• В Прологе отношение или свойствамежду объектами называется фактом
(fact).
• Состоит из имени:
– отношения
– объекта или объектов, заключенных в круглые скобки
– завершается точкой (.)
likes (bill, cindy). - Билл любит Синди.
likes (cindy, bill). - Синди любит Билла.
likes (bill, dogs). - Билл любит собак.
6.
• Правило — это заключение, длякоторого известно, что оно истинно,
если одно или несколько других
найденных заключений или фактов
являются истинными.
likes(cindy, Something):- likes(bill, Something). - Синди
любит все, что любит Билл.
likes (caitlin, Something):- green(Something). - Кейтлин
любит все зеленое.
• Символ : - имеет смысл "если", и
служит для разделения двух частей
правила: заголовка и тела.
7. Запросы
• Однократно дав языку Прологнесколько фактов, можно задавать
вопросы, касающиеся отношений
между ними. Это называется запросом
(query) системы языка Пролог.
likes(bill, cindy).
likes(bill, What).
likes(cindy, What).
8. Размещение фактов, правил и запросов
Предположим, что есть следующие факты иправила:
Быстрая машина - приятная. (A fast car is fun).
Большая машина — красивая. (A big car is nice).
Маленькая машина — практичная. (A little car
is practical).
Биллу нравится машина, если она приятная.
(Bill likes a car if the car is fun).
9.
Загрузите программу ch02e01.pro всреду визуальной разработки Visual
Prolog запустите ее утилитой Test
Goal.
10. Переменные: общее представление
• В Прологе переменные позволяют вамзаписывать общие факты и правила и
задавать общие вопросы.
• Начинаются с заглавной буква (What,
Something, X и т.д.)
11. Предложения
2 типа фраз (предложения (clause).):• Факт - представляет либо свойство объекта, либо
отношение между объектами. Факт самодостаточен.
Прологу не требуется дополнительных сведений для
подтверждения факта, и факт может быть
использован как основа для логического вывода.
• Правило - это конструкция Пролога, которая
описывает, что можно логически вывести из других
данных. Правило — это свойство или отношение,
которое достоверно, когда известно, что ряд других
отношений достоверен. Синтаксически эти
отношения разделены запятыми.
12. Примеры работы с правилами
Диана — вегетарианка и есттолько то, что говорит ей ее
доктор
diane_can_eat(Food_on_menu):vegetable(Food_on_menu),
on_doctor_list(Food_on_menu).
Вам хотелось бы записать факт,
который истинен, если Person1
является родителем Person2.
Parent(Person1, Person2):father(Person1, Person2).
Parent(Person1, Person2):mother(Person1, Person2) .
Человек может купить машину,
если машина ему нравится
(likes), и если машина продается
can_buy(Name, Model):person(Name),
car(Model),
likes(Name, Model),
for_sale(Model).
(for sale).
13. Программа ch02e02.pro
• протестируйте ее.Испытайте следующие цели в разделе
GOAL:
• Что может купить Келли?
• Что может купить Джуди?
• Кто может купить hot-rod?
• Кто может купить машину?
14. Предикаты
• Отношение в Прологе называетсяпредикатом.
• Аргументы — это объекты,
которые связываются этим
отношением;
в факте likes (bill, cindy) отношение
likes — это предикат, а объекты bill
и cindy — аргументы.
15. Переменные
В простом запросе,правильные имена
чтобы найти того,
переменных:
кто любит теннис, • My_first_correct_varia
можно использовать
ble_naitie
переменные • Sales_10_ll_86
likes(X, tennis).
неправильные:
• lstattempt
• second_attempt
• "disaster"
16.
Испытайте цель:GOAL likes(Person, tennis).
17. Инициализация переменных
• Переменные в Прологеинициализируются при сопоставлении с
константами в фактах или правилах.
• Нельзя сохранить информацию,
присвоив значение переменной.
Переменные используются как часть
процесса поиска решения, а не как
хранилище информации.
18. Загрузите программу ch02e03.pro likes(Person, reading), likes(Person, swimming).
likes(Person, reading)1. Person – свободная
переменная
2. reading – факт известен
3. Person - ellen
7. Person – john
8. Совпадений нет
9. Person – свободная
переменная
10. Продолжается пока не
будет найден ответ
likes(Person, swimming)
4. likes (ellen, swimming)
5. Совпадений нет
6. Person – свободная
переменная
19. Анонимные переменные
• Анонимная переменная может бытьиспользована на месте любой другой
переменной и ей никогда не присваивается
значение.
• В Прологе анонимные переменные
обозначаются символом подчеркивания (_).
• Анонимные переменные также можно
использовать в фактах (eats(_)).
• Анонимные переменные сопоставляются с
любыми данными.
20. Загрузите программу ch02e04.pro в TestGoaI-проект.
Загрузите программуch02e04.pro в TestGoaIпроект.
21. Цели (запросы)
• Когда вы даете Прологу запрос, вдействительности вы даете ему цель для
выполнения.
• простые: likes (ellen, reading)
• сложные: likes(Person, reading), likes(Person,
swimming).
• Загрузите программу ch02e04.pro и задайте
следующую сложную цель:
Goal parent(Person, _), male(Person).
• Составные цели: конъюнкция (и - ,) и
дизъюнкция (или - ;)
22. Программы ch02e05.pro
• Есть ли в списке машина, стоящаяменьше, чем $25000?
• Есть ли в списке автомобиль,
стоимостью меньше $25 000, или
грузовик стоимостью меньше $20
000?
23. Комментарии
• Многострочные комментарии должныначинаться с символов /* (косая черта,
звездочка) и завершаться символами */
(звездочка, косая черта).
• Для установки однострочных
комментариев можно использовать либо эти
же символы, либо начинать комментарий
символом процента (%).
24. Пример
• /* Это первый пример комментария */• % Это второй пример комментария
• /***************************************
А эти три строчки — пример
многострочного комментария
********************,**********,*****/
• /*Вы также можете поместить
комментарий Visual Prolog /*внутри
комментария */ как здесь*/
25. Сопоставление
• Идентичные структуры сопоставимы (сравнимы) другс другом: parent (joe, tammy) сопоставимо с parent
(joe, tammy).
• Сопоставление (сравнение) обычно использует одну
или несколько свободных переменных.
• Две свободные переменные могут сопоставляться
друг с другом.
• В случае "связывания" между собой нескольких
свободных переменных все они называются
совмещенными свободными переменными .
• В Прологе связывание переменных (со значениями)
производится двумя способами: входе и выходе.
26.
• Когда переменная передается впредложение, она считается входным
аргументом и обозначается символом
(i).
• Когда же переменная возвращается из
предложения, она является выходным
аргументом и обозначается символом
(о).