Файл: Отчет по лабораторной работе. В текстовом редакторе Notepad описываем связи родительребёнок.docx

ВУЗ: Не указан

Категория: Отчет по практике

Дисциплина: Не указана

Добавлен: 22.11.2023

Просмотров: 25

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

Национальный исследовательский университет «МЭИ»

Кафедра «Прикладная информатика»

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

Простейшая программа на языке Пролог.

Выполнил:

Студент ИЭ-64-20

Мечетнов М.Г.

_____________________

“___” ___________2023 г.

Проверила:

Карпович Е.Е.

_____________________

“___” ___________2023 г.

Москва 2023 г.

Необходимо выполнить следующие действия:


  1. Описать с помощью фактов 4-уровневовое генеалогическое дерево в Пролог в программе “parents”, включающей предикаты parent и person.




  1. Написать правила, определяющие следующие отношения:

  • “X является отцом Y” .

  • “X является бабушкой Y” .

  • “X является сестрой Y” .

  • “X является племянником Y” .

  • “X является племянницей Y” .

  • “X является родителем родителя Y” .

  • “X является прадедушкой Y” .

  • “X является двоюродным братом Y” .




  1. Отладить программу с помощью интерпретатора SWI Prolog.




  1. Продемонстрировать работу программы с помощью вопросов.




  1. Составить отчет по лабораторной работе.



  1. В текстовом редакторе «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. Схема семейного древа

  1. Проводим отладку программы “parents” в интерпретаторе SWI Prolog

  2. Демонстрация работы “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”