Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_СИИ.doc
Скачиваний:
33
Добавлен:
09.11.2019
Размер:
917.5 Кб
Скачать

3.Использование встроенных предикатов.

Для управления процессом вывода информации на экран в Турбо Прологе существуют встроенный предикат write, который производит вывод заданного количества аргументов (константы или переменные) на текущее устройство вывода. На момент вывода переменные не должны быть свободными. Формат write ( A 1, A 2,..., AN ). Согласуется всегда успешно.

Предикат nl обеспечивает переход на новую строку в текущем устройстве вывода (то же, что write("\n")).

Эти предикаты удобно использовать в разделе описания внутренней цели, например:

GOAL

Write (“Родственные отношения :”), nl ,

father ( X , “Анна”), write (“Отцом Анны является”, X ).

 

Для ограничения пространства поиска, с целью повышения эффективности работы программ используется предикат отсечения cut (записывается как “!”). Он всегда завершается успешно. После того, как до него дошла очередь, он устанавливает "забор", который не дает "откатиться назад", чтобы выбрать альтернативные решения для уже "сработавших" подцелей. То есть для тех, которые расположены левее отсечения . На цели , расположенные правее, отсечение не влияет. Кроме того, отсечение отбрасывает все предложения процедуры, расположенные после предложения , в котором находится отсечение . Например, для нахождения максимума из двух чисел можно воспользоваться следующим правилом:

max2(X,Y,X):-

X>Y,!./* если первое число больше второго, то первое число - максимум */

max2(_,Y,Y). /* в противном случае максимумом будет второе число */

 

4. Задание для лабораторной работы

В соответствии с вариантом задания, определенным преподавателем, построить базу знаний «Родственные отношения», содержащую предикаты родитель, мужчина, женщина. Требуется определить новое отношение и выявить круг лиц ему удовлетворяющих. Оформить отчет с указанием варианта задания, текста базы знаний, результатов выполнения запросов, трассы и деревьев вывода для правил.

4.1. Варианты заданий

  1. Определить предикат сын и найти всех сыновей конкретного лица.

  2. Определить предикат дочь и найти всех дочерей конкретного лица.

  3. Определить предикат внук и найти всех внуков конкретного лица.

  4. Определить предикат дедушка и найти всех дедушек конкретного лица.

  5. Определить предикат бабушка и найти всех бабушек конкретного лица.

  6. Определить предикат тетя и найти всех теть конкретного лица.

  7. Определить предикат дядя и найти всех дядь конкретного лица.

  8. Определить предикат брат и найти всех братьев конкретного лица.

  9. Определить предикат сестра и найти всех сестер конкретного лица.

  10. Определить предикат племянник и найти всех племянников конкретного лица.

  11. Определить предикат потомок и найти всех потомков конкретного лица.

  12. Определить предикат двоюродный брат и найти всех двоюродных братьев конкретного лица.

  13. Определить предикат двоюродная сестра и найти всех двоюродных сестер конкретного лица.

  14. Определить предикат троюродный брат и найти всех троюродных братьев конкретного лица.

  15. Определить предикат троюродная сестра и найти всех троюродных сестер конкретного лица.

  16. Определить предикат внучатый племянник и найти всех внучатых племянников конкретного лица.

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]