Хелпикс

Главная

Контакты

Случайная статья





 «Вологодский государственный университет»



 

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

 «Вологодский государственный университет»

 

Институт математики, естественных и компьютерных наук

кафедра «Автоматики и вычислительной техники»

 

 

Практическая работа №4

«Построение программы на языке логического программирования Prolog, анализирующей дерево родственных отношений (генеалогическое дерево)»

 

Преподаватель: Швецов А. Н.

Выполнил:

Курс, группа:

 

 

Вологда

2020 г.

Цель работы: Разработать на языке TURBO PROLOG программу, реализующую генеалогическое дерево, считая исходными предикатами функции двух переменных функционально-полного базиса male, female, parent.

Реализовать функции нахождения матери, отца, бабушки, дедушки, сестёр, братьев.

Дополнительное задание: реализовать функции троюродный брат и троюродная сестра.

 

Троюродный брат — сын двоюродного дяди (тётки)

Троюродная сестра — дочь двоюродного дяди (тетки)

 

Генеалогическое дерево:

 

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

domains

s=symbol

predicates

female(s)

male(s)

parent(s, s)

grandparent(s, s)

grandfather(s, s)

grandmother(s, s)

mother(s, s)

father(s, s)

secondcousinm(s, s)

secondcousinf(s, s)

secondcousin(s, s)

brother(s, s)

sister(s, s)

print

clauses

male(" Daniil" ).

male(" Konstantin" ).

male(" Dmitry" ).

male(" Borya" ).

male(" Sergey" ).

male(" Vladimir" ).

male(" Artem" ).

male(" Ilya" ).

male(" Aleksey" ).

male(" Mark" ).

 

female(" Svetlana" ).

female(" Tanya" ).

female(" Galya" ).

female(" Anya" ).

female(" Irina" ).

female(" Alena" ).

female(" Sonya" ).

female(" Viktoria" ).

female(" Olga" ).

female(" Anastasiya" ).

 

parent(" Dmitry", " Konstantin" ).

parent(" Dmitry", " Daniil" ).

parent(" Svetlana", " Konstantin" ).

parent(" Svetlana", " Daniil" ).

parent(" Tanya", " Dmitry" ).

parent(" Borya", " Svetlana" ).

parent(" Borya", " Sergey" ).

parent(" Galya", " Svetlana" ).

parent(" Galya", " Sergey" ).

parent(" Vladimir", " Galya" ).

parent(" Vladimir", " Irina" ).

parent(" Anya", " Galya" ).

parent(" Anya", " Irina" ).

parent(" Irina", " Artem" ).

parent(" Irina", " Viktoria" ).

parent(" Aleksey", " Artem" ).

parent(" Aleksey", " Viktoria" ).

parent(" Artem", " Sonya" ).

parent(" Alena", " Sonya" ).

parent(" Viktoria", " Anastasiya" ).

parent(" Mark", " Anastasiya" ).

parent(" Olga", " Mark" ).

parent(" Ilya", " Mark" ).

    

mother(X, Y): -parent(X, Y), female(X).

father(X, Y): -parent(X, Y), male(X).            

    

grandparent(X, Y): -parent(X, Z), parent(Z, Y).

grandfather(X, Y): -grandparent(X, Y), male(X).

grandmother(X, Y): -grandparent(X, Y), female(X).

 

secondcousinm(X, Y): -secondcousin(X, Y), male(X).

secondcousinf(X, Y): -secondcousin(X, Y), female(X).

secondcousin(X, Y): -grandparent(Z, X), grandparent(Q, Y), Z< > Q, parent(F, Z), parent(F, Q).

 

brother(X, Y): -parent(Z, X), parent(Z, Y), X< > Y, male(X).

sister(X, Y): -parent(Z, X), parent(Z, Y), X< > Y, female(X).

 

print: -mother(X, Y), write(X, " mother ", Y), nl, fail.

print: -father(X, Y), write(X, " father ", Y), nl, fail.

 

print: -sister(X, Y), write(X, " sister ", Y), nl, fail.

print: -brother(X, Y), write(X, " brother ", Y), nl, fail.

 

print: -grandmother(X, Y), write(X, " grandmother ", Y), nl, fail.

print: -grandfather(X, Y), write(X, " grandfather ", Y), nl, fail.

 

print: -secondcousinm(X, Y), write(X, " second cousin ", Y), nl, fail.

print: -secondcousinf(X, Y), write(X, " second cousina ", Y), nl, fail.

 

Результат выполнения:

 

 

 

 

Вывод: в ходе данного практического задания была разработана программа на языке TURBO PROLOG, реализующая генеалогическое дерево поиска матери, отца, бабушки, дедушки, братьев, сестёр, а также троюродных братьев и сестер.

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.