Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

ЗАДАНИЕ 2.4



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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...