Лабораторная работа

Prolog. Формирование правил

Категория:

Лабораторная работа

Дисциплина:

Функциональное и логическое программирование

Город:

Беларусь, Минск

Учебное заведение:

БНТУ, ФИТР

Стоимость работы:

2 руб.

Оценка: 10
Объем страниц: 5
Год сдачи: 2021
Дата публикации: 08.06.2021

Фрагменты для ознакомления

Отчет по лабораторной работе № 3

дисциплина: «Функциональное и логическое программирование»

ФОРМИРОВАНИЕ ПРАВИЛ

Цель работы: приобретение практических навыков формирования правил и использования их в Пролог-программах.

Постановка задачи:

Описать средствами Visual Prolog (с помощью фактов) дерево родственных отношений (рис. 1), используя предикат parent с двумя параметрами: имя родителя и имя ребенка. После дополнить новыми фактами (правилами).

Задание:

Программу лабораторной работы 2 дополнить новыми фактами, позволяющими построить правила для определения следующих целей: отец, мать, сын, дочь, брат, сестра, дядя, тетя, дедушка, бабушка, внук, внучка.  Предикат для каждого правила содержит две компоненты.

Код программы:

Lab_3.pro

predicates
nondeterm parent(string,string)
nondeterm man(string)
nondeterm woman(string)
nondeterm father(string,string)
nondeterm mother(string,string)
nondeterm son(string,string)
nondeterm daughter(string,string)
nondeterm sister(string,string)
nondeterm brother(string,string)
nondeterm uncle(string,string)
nondeterm aunt(string,string)
nondeterm grandfather(string,string)
nondeterm grandmother(string,string)
nondeterm grandson(string,string)
nondeterm granddaughter(string,string)
nondeterm aunt1(string,string)
clauses
man("Иван").
man("Олег").
man("Виктор").
woman("Нина").
woman("Анна").
woman("Алла").
woman("Лариса").
woman("Наталья").
woman("Вера").
parent ("Иван","Нина").
parent ("Иван","Олег").
parent ("Анна","Нина").
parent ("Анна","Олег").
parent ("Олег","Алла").
parent ("Олег","Лариса").
parent ("Вера","Алла").
parent ("Вера","Лариса").
parent ("Виктор","Наталья").
parent ("Лариса","Наталья").
father(X,Y) if parent(X,Y) and man(X).
mother(X, Y) :- parent(X,Y), woman(X).

 

Скриншоты результатов:

Скриншоты результатов

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

1. Что такое правило и из каких частей состоит правило?

Правило — это утверждение, истинность которого зависит от некоторых условий. Правило состоит из заголовка и тела, соединенных символом: -, который читается “если”.

 

2. Различия между фактом и правилом?

Еще один способ трактовки понятия факта состоит в том, что факт рассматривается как безусловное заключение, которое не зависит от чего-либо иного, поэтому для его определения операция IF (или :-) не требуется. В отличие от этого, правила PROLOG требуют применения операции IF, поскольку представляют собой условные выражения, истинность которых зависит от одного или нескольких условий. Компонентами факта могут быть только константы.

 

3. В каком разделе программы реализуются правила?

Раздел clauses — это сердце Visual Prolog-программы; именно в этот раздел записываются факты и правила.

 

4. Обязательно ли описание предиката, реализованного в программе, и где это описание производится?

Обязательно. Описание предиката производится в разделе predicates.

 

5. В каких разделах программы могут быть переменные?

Переменные объявляются в разделе domains и могут использоваться в разделах clauses и goal.

 

6. Область действия переменной в программе Visual Prolog.

7. Какой символ должен быть в качестве первого в имени переменной?

8. С какого символа может начинаться имя предиката?

9. Что означают символы “:-“, “,” и “;” в программе Visual Prolog?

10. Может ли имя константы в программе Visual Prolog начинаться с прописной буквы?

11. Различия между свободной и связанной переменными.

12. Можно ли изменить значение связанной переменной?

13. Есть ли в Прологе оператор присваивания?

14. Можно ли между предложениями с одним и тем же предикатом вставить новое предложение с другим предикатом?

 

Вывод: приобрели практические навыки в формировании правил и использовании их в Пролог-программах.

32