51430

Родственные отношения

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

Информатика, кибернетика и программирование

Составить родословную своей семьи, использовав 10-12 отношений родитель. Определить предикат пол для каждого члена семьи. Определить предикаты мать, отец, дядя, тетя, кузен, дед, внук. Определить рекурсивный предикат предок.

Русский

2014-02-11

119.5 KB

7 чел.

Московский государственный технический университет им. Н.Э. Баумана

Калужский филиал

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

«Родственные отношения»

Выполнил: студентка группы ЭВМ-81

Щукина А.К.

Проверил: Смирнов С.Г.

Калуга, 2013

Условие варианта

1. Составить родословную своей семьи, использовав 10-12 отношений родитель. Определить предикат пол  для каждого члена семьи.

2. Определить предикаты  мать, отец, дядя, тетя, кузен, дед, внук.

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

4. Оттранслируйте следующие утверждения в правила на Прологе:

        а) всякий, кто имеет ребенка - счастлив;

        б) всякий  Х, имеющий ребенка, у которого есть сестра, имеет двух детей.

5. Определить предикат  найти_тетю(Х) , выдающий информацию о наличии  (отсутствии) тети у личности  Х. Определить предикаты о наличии прочих родственников у личности  Х.

6. Определить предикат, дающий список всех родственников личности  Х. Переменную  Х ввести.

Родословная

Листинг программы

predicates

male(symbol)

female(symbol)

parent(symbol, symbol)

father(symbol, symbol)

mother(symbol, symbol)

son(symbol, symbol)

daughter(symbol, symbol)

uncle(symbol, symbol)

aunt(symbol, symbol)

cousin(symbol, symbol)

grandfa(symbol, symbol)

grandma(symbol, symbol)

grandson(symbol, symbol)

granddaughter(symbol, symbol)

brother(symbol, symbol)

sister(symbol, symbol)

happy(symbol)

two_child(symbol)

find_father(symbol)

find_mother(symbol)

find_son(symbol)

find_daughter(symbol)

find_uncle(symbol)

find_aunt(symbol)

find_cousin(symbol)

find_grandfa(symbol)

find_grandma(symbol)

find_grandson(symbol)

find_granddaughter(symbol)

find_brother(symbol)

find_sister(symbol)

all_family(symbol)

clauses

female("Mariya").

female("Alla").

female("Anastasiya").

female("Anna").

female("Luba").

female("Marina").

male("Nikolay").

male("Ivan").

male("Dmitriy").

male("Victor").

male("Fedor").

male("Sergey").

male("Vladimir").

male("Andrey").

 

parent("Nikolay", "Anastasiya").

parent("Nikolay", "Anna").

parent("Mariya", "Anastasiya").

parent("Mariya", "Anna").

 

parent("Ivan", "Victor").

parent("Ivan", "Fedor").

parent("Alla", "Victor").

parent("Alla", "Fedor").

 

parent("Dmitriy", "Marina").

parent("Anastasiya", "Marina").

 

parent("Victor", "Sergey").

parent("Luba", "Sergey").

 

parent("Sergey", "Vladimir").

parent("Sergey", "Andrey").

parent("Marina", "Vladimir").

parent("Marina", "Andrey").

father(P,C):- male(P), parent(P,C).

mother(P,C):- female(P), parent(P,C).

son(C,P):- male(C), parent(P,C).

daughter(C,P):- female(C), parent(P,C).

sister(S,BS):- female(S), parent(P,S), parent(P,BS), male(P), S<>BS.

brother(B,BS):- male(B), parent(P,B), parent(P,BS), male(P), B<>BS.

uncle(U,C):- male(U), parent(P,C), parent(P1,P), parent(P1,U), male(P1), U<>P.

aunt(A,C):- female(A), parent(P,C), parent(P1,P), parent(P1,A), male(P1), A<>P.

cousin(C,UA):- male(C), parent(P,C), parent(P1,P), parent(P1,UA), male(P1), P<>UA;

      female(C), parent(P,C), parent(P1,P), parent(P1,UA), male(P1), P<>UA.

grandfa(GF,C):- male(GF), parent(P,C), parent(GF,P).

grandma(GM,C):- female(GM), parent(P,C), parent(GM,P).

grandson(GS,GFM):- male(GS), parent(P,GS), parent(GFM,P).

granddaughter(GD,GFM):- female(GD), parent(P,GD), parent(GFM,P).

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

 

happy(X):- parent(X,Y).

two_child(X):- parent(X,S), sister(S,Y).

 

find_father(X):- father(Y,X), write(X, " has father ", Y), nl;

     write(X, " hasn't father"), nl.

find_mother(X):- mother(Y,X), write(X, " has mother ", Y), nl;

     write(X, " hasn't mother"), nl.

find_son(X):- son(X,Y), write(X, " has son ", Y), nl;

     write(X, " hasn't son"), nl.

find_daughter(X):- daughter(X,Y), write(X, " has daughter ", Y), nl;

       write(X, " hasn't daughter"), nl.

find_uncle(X):- uncle(Y,X), write(X, " has uncle ", Y), nl;

    write(X, " hasn't uncle"), nl.

find_aunt(X):- aunt(Y,X), write(X, " has aunt ", Y), nl;

      write(X, " hasn't aunt"), nl.

find_cousin(X):- cousin(Y,X), write(X, " has cousin ", Y), nl;

     write(X, " hasn't cousin"), nl.

find_grandfa(X):- grandfa(Y,X), write(X, " has grandfa ", Y), nl;

      write(X, " hasn't grandfa"), nl.

find_grandma(X):- grandma(Y,X), write(X, " has grandma ", Y), nl;

      write(X, " hasn't grandma"), nl.

find_grandson(X):- grandson(Y,X), write(X, " has grandson ", Y), nl;

       write(X, " hasn't grandson"), nl.

find_granddaughter(X):- granddaughter(Y,X), write(X, " has granddaughter ", Y), nl;

         write(X, " hasn't granddaughter"), nl.

find_brother(X):- brother(Y,X), write(X, " has brother ", Y), nl;

      write(X, " hasn't brother"), nl.

find_sister(X):- sister(Y,X), write(X, " has sister ", Y), nl;

     write(X, " hasn't sister"), nl.

     

all_family(X):- write("FAMILY OF ", X), nl,

    father(F,X), write("Father: ", F), nl, not(father(F,X));

    mother(M,X), write("Mother: ", M), nl, not(mother(M,X));

    son(S,X), write("Son: ", S), nl, not(son(S,X));

    daughter(D,X), write("Daughter: ", D), nl, not(daughter(D,X));

    uncle(U,X), write("Uncle: ", U), nl,not(uncle(U,X));

    aunt(A,X), write("Aunt: ", A), nl, not(aunt(A,X));

    cousin(C,X), write("Cousin: ", C), nl, not(cousin(C,X));

    grandfa(GF,X), write("Grandfa: ", GF), nl, not(grandfa(GF,X));

    grandma(GM,X), write("Grandma: ", GM), nl, not(grandma(GM,X));

    grandson(GS,X), write("Grandson: ", GS), nl, not(grandson(GS,X));

    granddaughter(GD,X), write("Granddaughter: ", GD), nl, not(granddaughter(GD,X));

    brother(B,X), write("Brother: ", B), nl, not(brother(B,X));

    sister(S1,X), write("Sister: ", S1), nl, not(sister(S1,X)).

Результаты выполнения лабораторной

Рис.1


 

А также другие работы, которые могут Вас заинтересовать

76288. Грудной лимфатический проток. Главные группы лимфатических узлов и лимфатические стволы брюшной полости 76.49 KB
  Gоясничные лимфатические узлы, nodi lymphoidei lumbales, располагаются забрюшинно около аорты и нижней полой вены (в поясничные лимф узлы оттекает лимфа от нижних конечностей, стенок и органов малого таза, стенок и органов брюшной полости, в частности, в них впадают выносящие сосуды от желудочных, ободочных, брыжеечных, чревных лимфатических узлов). Отток лимфы из поясничных лимфатических узлов осуществляется в правый и левый поясничные стволы, которые дают начало грудному протоку.
76289. Лимфатическое русло и вены нижней конечности 389.82 KB
  Различают поверхностные и глубокие вены нижней конечности имеющие многочисленные клапанынаправляют кровь в глубокие вены между собой соединяются анастомозами коммуникантные вены vv.Поверхностные вены: начинаются из венозных сплетений пальцев стопы которые впадают в тыльную венозную дугу стопы rcus venosus dorslis pedis. От этой дуги берут начало большая и малая подкожные вены ноги.
76291. Лимфатические русло и вены верхней конечности 960.59 KB
  Поверхностные располагаются над поверхностной фасцией и собирают лимфу от кожи и подкожной основы располагаются по ходу подкожных вен и делятся на три группы: Л с латеральной группы: по ходу латеральной подкожной вены впадают в подмышечные л у Л с медиальной группы: по ходу медиальной подкожной вены часть впадает в локтевые часть в подмышечные л у Л с средней группы: лимфа от кожи ладонной поверхности кисти и передней поверхности предплечья. По ходу промежуточной вены предплечья присоединяются к л с латеральной и медиальной групп....
76292. Сердце, cor, cardia 134.14 KB
  По пути к сердцу получает кровь из многих вен. ven cv superior идущая от головы короткая вена впадающая в правое предсердиеи собирающая венозную кровь от верхней части тела от головы шеи и верхних конечностей а также венозную кровь от лёгких и бронхов через бронхиальные вены впадающие сначала в v. hemizygos; частично собирает кровь и от стенок брюшной полости за счёт впадения в неё непарной вены.
76294. Артерии и вены сердца 115.84 KB
  A coronaria dextra – между легочным стволом и правым ушком, затем идет по венечной борозде и заходит назад. То есть, в основном, она снабжает правую половину сердца. Отдает r interventricularis posterior – это конечная ветвь, идет по одноименной борозде до самой верхушки, r marginalis dexter – вниз вдоль правого желудочка по краю.
76295. Дуга аорты, грудная часть аорты, их топография, ветви и межсистемные анастомозы 95.09 KB
  Дуга аорты грудная часть аорты их топография ветви и межсистемные анастомозы. Дуга аорты rcus orte расположена между местами отхождения плечеголовного ствола trunсus brchiocephliсus и левой подключичной артерии . На уровне IV грудного позвонка имеется сужение перешеек аорты isthmus orte. Дуга аорты являясь продолжением восходящей части аорты поворачивает влево и назад на уровне тела IV грудного позвонка переходит в нисходящую часть аорты.
76296. Наружная сонная артерия, ее топография, ветви и межсистемные анастомозы 249.62 KB
  Наружная соннаяа ртерия, a.carotis externa, сначала располагается медиальнее от внутренней сонной артерии, затем она постепенно отклоняется кпереди и латерально. Начальный отдел наружной сонной артерии прикрыт грудино-ключично-сосцевидной мышцей, потом она переходит в trigonum caroticum