Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
a) Введите базу:
имеет('Олег', книга('Пушкин','Капитанская дочка')).
имеет('Лена', книга('Монтень','Опыты')).
имеет('Ира',платок(синий)).
имеет('Лена', платок(красный)).
ЗАМЕЧАНИЕ. Для создания операторной формы предиката с функтором Name можно воспользоваться встроенным предикатом op(Precedence, Type, Name), где Precedence – приоритет вводимого оператора (целое неотрицательное число), Type – тип вводимого оператора (инфиксный, постфиксный и т.п.). Операторная форма позволяет записывать факты, запросы и правила в операторном виде. Разъясним это на примере.
?-op(550,xfx,имеет).
Здесь тип xfx значит, что оператор имеет не обладает ни правой, ни левой ассоциативностью (в отличие от случаев xfy и yfx соответственно). После выполнения такого запроса можно ввести вышеуказанный факт в виде:
'Олег' имеет книга('Пушкин','Капитанская дочка').
Так же можно написать запросы в функциональной и операторной формах:
?- имеет(Б,Ъ).
Б = 'Олег',
Ъ = книга('Пушкин', 'Капитанская дочка').
?- Б имеет Ъ.
Б = 'Олег',
Ъ = книга('Пушкин', 'Капитанская дочка').
Как видно из выполнения запросов операторная и функциональная формы записи предикатов дают один и тот же результат. Подробнее о предикате op/3 можно прочитать во встроенной справке (для запуска справки можно использовать запрос?-help(op). или?-help(op/3).).
b) Задайте вопросы к этой базе данных:
Кто имеет какую-нибудь книгу Монтеня?
Кто какую книгу имеет?
Кто что имеет?
Верно ли, что Лена имеет синий платок?
Дата публикования: 2014-12-11; Прочитано: 217 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!