Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






CLAUSES. person(“Fred”, “Capitola”, 35).






person(“Fred”, “Capitola”, 35).

person(“Fred”, “Omaha”, 37).

person(“Michael”, “Brooklyn”, 26).

likes(“John”, “money”).

likes(“Jane”, “money”).

likes(“Chris”, “chocolate”).

likes(“John”, “broccoli”).

dislikes(“Fred”, “broccoli”).

dislikes(“Michael”, “beer”).

 

При помощи этих секций фактов, вы можете объявить следующие цели:

retract(person(" Fred", _, _)). /* 1 */

retract(likes(_, " broccoli")). /* 2 */

retract(likes(_, " money"), likesDatabase). /* 3 */

retract(person(" Fred", _, _), likesDatabase) /* 4 */

Первая цель удаляет первый факт для person о Фреде из секции фактов dbasedom (по умолчанию) и выводит ответ (рис. 4).

 

Рис. 4. Результат первой цели

 

Вторая цель удаляет первый факт, соответствующий, предикату likes(X, " broccoli") из секции фактов likesDatabase и выводит сообщение (рис. 5).

 

Рис. 5. Результат второй цели

 

При обработке обеих из этих целей, Visual Prolog знает, какая секция фактов редактируется потому, что имена предикатов секций фактов являются уникальными: person относится только к секции фактов dbasedom и likes - likesDatabase.

Третьи и четвертые цели иллюстрируют, как вы можете использовать дополнительный второй аргумент для проверки типа. Третья цель успешна, при её достижении удаляется первый факт из likesDatabase, соответствующий предикату likes(_, " money") (рис. 6).

 

Рис. 6. Результат третьей цели

 

Но четвертая - не компилируется, потому что в секции фактов likesDatabase нет (и может быть) фактов person. Сообщение об ошибке, выданное компилятором будет следующим:

506 Type error: The functor does not belong to the domain.

Контрольные задания:

Перепишите программу, созданную вами в лабораторной работе № 7, используя секцию фактов, согласно варианту, выданному преподавателем:

Вариант 1. Есть ли пылесосы, которые стоят меньше 10000?

Вариант 2. Найти ноутбук, который стоит 50000.

Вариант 3. Найти платье за 5000 и костюм, стоящий меньше 5000.

Вариант 4. Есть ли телефоны, стоящие более 30000?

Вариант 5. Найти пылесосы, которые стоят 7000.

Вариант 6. Найти ноутбук, который стоит меньше 50000.

Вариант 7. Найти конфеты, стоящие меньше 100 рублей, и шоколад, который стоит больше 30 рублей.

Вариант 8. Есть ли телефоны Sony Ericsson за 15000?

Вариант 9. Найти студентов, которым меньше 22 и больше 22 лет.

 

Контрольные вопросы:

1. Из чего состоит секция фактов?

2. Чтобы добавить новые факты в секцию фактов, какие предикаты можно использовать?

3. Чтобы удалить существующие факты, какие предикаты можно использовать?

4. Какие ключевые слова определяют начало последовательности описания для предикатов, описывающих секцию фактов?

5. Назовите ограничения на использование предикатов в секциях фактов?

6. Какой предикат необходимо вызвать для загрузки базы данных фактов?

7. Какой предикат необходимо вызвать для сохранения баз данных фактов во время выполнения программы?

 

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.008 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал