51430

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

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

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

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

Русский

2014-02-11

119.5 KB

9 чел.

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

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

Отчет по лабораторной работе №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


 

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

36718. Моделирование случайных величин 176 KB
  Три стрелка стреляют каждый по своей мишени делая независимо друг от друга по одному выстрелу. Рассматриваются три случайные величины: число попаданий первого стрелка; число попаданий второго стрелка; число попаданий третьего стрелка; Пусть случайная величина. Три стрелка стреляют каждый по своей мишени делая независимо друг от друга по одному выстрелу. Рассматриваются три случайные величины: число попаданий первого стрелка; число попаданий второго стрелка; число попаданий третьего стрелка; Пусть случайная величина.
36719. РАБОТА С ЗАПРОСАМИ В РЕЛЯЦИОННОЙ БАЗЕ ДАННЫХ СТАВРОПОЛЬСКИЙ КРАЙ 243.5 KB
  Лабораторная работа № 3 Лабораторная работа № 3 РАБОТА С ЗАПРОСАМИ В РЕЛЯЦИОННОЙ БАЗЕ ДАННЫХ СТАВРОПОЛЬСКИЙ КРАЙ Задание № 1 Создайте запрос на основе таблиц Административные районы и Административные центры выбирающий все районы центры которых являются городами. Технология работы Создайте запрос на основе связанных таблиц. Для этого в окне базы данных выберите объект 3апросы Создание запроса в режиме конструктора; В окне Добавление таблицы выделите в списке таблицу Административные районы и щелкните на кнопке Добавить; В...
36720. Заходи по розширенню долі аптечної мережі «Бажаємо здоров’я» на фармацевтичному ринку України 434 KB
  Кожна компанія зацікавлена тривалий час зберігати свій ринок і бути прибутковою. Для цього потрібне постійне вивчення ринку, розробка заходів по підвищенню конкурентоспроможності і збільшенню частки ринку. Збільшення частки ринку включає різноманітні заходи, сюди входять ребрендинг, комплекс просування, розширення існуючої мережі.
36722. РАБОТА С ФОРМАМИ И ОТЧЕТАМИ В РЕЛЯЦИОННОЙ БАЗЕ ДАННЫХ СТАВРОПОЛЬСКИЙ КРАЙ 130.5 KB
  Лабораторная работа № 4 Лабораторная работа № 4 РАБОТА С ФОРМАМИ И ОТЧЕТАМИ В РЕЛЯЦИОННОЙ БАЗЕ ДАННЫХ СТАВРОПОЛЬСКИЙ КРАЙ Задание 1 Создайте ленточную форму на основе таблицы Административные районы и добавьте вычисляемые поля в форму в режиме конструктора в которых будут выводиться итоговые суммы для полей число населенных пунктов площадь территории численность населения и среднее значение для поля плотность населения. Технология работы На основе таблицы Административные районы создайте форму ленточного вида используя Мастер по...
36724. Имитационное моделирование «производственных процессов» 46.5 KB
  На сборочный участок цеха предприятия через интервалы времени распределенные экспоненциально со средним значением 10 мин поступают партии каждая из которых состоит из трех деталей. Половина всех поступающих деталей перед сборкой должна пройти предварительную обработку в течение 7 мин. Процесс сборки занимает всего 6 мин. Затем изделие поступает на регулировку продолжающуюся в среднем 8 мин время выполнения ее распределено экспоненциально.
36725. Моделирование технологического процесса ремонта и замены оборудования 230.5 KB
  На предприятии имеется L станков которые работают 24 часа в сутки. Всего в системе M станков M LLсобственныеMLарендуемые для резерва. Любой из станков может выйти из строя в любое время. В мастерской есть три участка ремонта станков.
36726. Ввод и форматирование данных в Excel 115.5 KB
  Затем нажать Enter или осуществить щелчок мыши по любой другой ячейке таблицы.2: Используя полученные знания по вводу текстовой информации в ячейки заполните заголовки столбцов таблицы. Оформите заголовки столбцов таблицы используя вкладки Выравнивание и Шрифт меню Формат Ячейки. Опишем кратко схему ввода данных с помощью формы: Заполните первую строку вашей таблицы данными; Выделите в списке ячейку начиная с которой будут добавляться новые записи; Выполните команду Данные Форма и в открывшемся диалоге щелкните по кнопке...