Файл: Отчет по лабораторной работе. В текстовом редакторе Notepad описываем связи родительребёнок.docx
Добавлен: 22.11.2023
Просмотров: 25
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Национальный исследовательский университет «МЭИ»
Кафедра «Прикладная информатика»
Отчёт по лабораторной работе №1
Простейшая программа на языке Пролог.
Выполнил:
Студент ИЭ-64-20
Мечетнов М.Г.
_____________________
“___” ___________2023 г.
Проверила:
Карпович Е.Е.
_____________________
“___” ___________2023 г.
Москва 2023 г.
Необходимо выполнить следующие действия:
-
Описать с помощью фактов 4-уровневовое генеалогическое дерево в Пролог в программе “parents”, включающей предикаты parent и person.
-
Написать правила, определяющие следующие отношения:
-
“X является отцом Y” . -
“X является бабушкой Y” . -
“X является сестрой Y” . -
“X является племянником Y” . -
“X является племянницей Y” . -
“X является родителем родителя Y” . -
“X является прадедушкой Y” . -
“X является двоюродным братом Y” .
-
Отладить программу с помощью интерпретатора SWI Prolog.
-
Продемонстрировать работу программы с помощью вопросов.
-
Составить отчет по лабораторной работе.
-
В текстовом редакторе «Notepad++» описываем связи «родитель-ребёнок» и их данные (имя, пол и возраст) через предикаты parent и person:
:- encoding(text).
parent('Оливия','Мэтью').
parent('Оливия','Карин').
parent('Льюис','Мэтью').
parent('Льюис','Карин').
parent('Льюис','Фон').
parent('Мэтью','Катерина').
parent('Мэтью','Ларс').
parent('Карин','Генри').
parent('Катерина','Марко').
parent('Катерина','Элизабет').
person('Оливия','ж',74).
person('Льюис','м',75).
person('Мэтью','м',45).
person('Карин','ж',42).
person('Фон','м',55).
person('Катерина','ж',25).
person('Ларс','м',23).
person('Марко','м',5).
person('Элизабет','ж',2).
person('Генри','м',20).
father(X,Y):-parent(X,Y),person(X,'м',_).
grandmother(X,Y):-parent(X,Z),parent(Z,Y),person(X, 'ж',_).
sister(X,Y):-parent(Z,X),parent(Z,Y),X\=Y,person(X,'ж',_).
nephew(X,Y):-sis_bro(Y,Z),parent(Z,X),person(X,'м',_).
sis_bro(X,Y):-parent(Z,X),parent(Z,Y),X\=Y.
brother(X,Y):-parent(Z,X),parent(Z,Y),X\=Y,person(X,'м',_).
grandparent(X,Y):-parent(X,Z),parent(Z,Y).
grandgrandfather(X,Y):-grandparent(Z,Y),parent(X,Z),person(X,'м',_).
twobrother(X,Y):-sis_bro(Z,U),parent(Z,X),person(X,'м',_).
Схема древа выглядит следующим образом:
Рис. №1. Схема семейного древа
-
Проводим отладку программы “parents” в интерпретаторе SWI Prolog -
Демонстрация работы “parents”:
-
“X является отцом Y”:
Рис. №2. Вывод отношения “X является отцом Y”
-
“X является бабушкой Y”:
Рис. №3. Вывод отношения “X является бабушкой Y”
-
“X является сестрой Y”:
Рис. №4. Вывод отношения “X является сестрой Y”
-
“X является племянником Y”:
Рис. №5. Вывод отношения “X является племянником Y”
-
“X является племянницей Y”:
Рис. №6. Вывод отношения “X является племянницей Y”
-
“X является родителем родителя Y”:
Рис. №7. Вывод отношения “X является родителем родителя Y”
-
“X является прадедушкой Y”:
Рис. №8. Вывод отношения “X является прадедушкой Y”
-
“X является двоюродным братом Y”:
Рис. №9. Вывод отношения “X является двоюродным братом Y”