Программирование. Работа с соотношениями в языке Prolog
Скачать 95.72 Kb.
|
Министерство образования Российской Федерации Пензенский государственный университет Кафедра «Вычислительная техника» Отчёт по лабораторной работе №2 По курсу «Декларативные языки программирования» На тему «Работа с соотношениями в языке Prolog» Выполнили: Студенты группы 16ВВ1 Борискин В.В. Кривошеев С.В. Принял: Бычков А.С. Пенза 2017 Цель работыИзучение реляционного подхода к программированию на языке Пролог, получение практических навыков работы с отношениями на языке Пролог (на примере отношений родства). Лабораторное задание1. Получить задание. 2. Составить базовые отношения РОДИТЕЛЬ, ЖЕНЩИНА, МУЖЧИНА, СУПРУГИ, представить полученные отношения в виде нагруженного ориентированного графа. Каждому бинарному отношению при этом будет соответствовать свой тип дуг. 3. Представить на языке Пролог базовые отношения. 4. Определить в виде правил и представить на языке Пролог от- ношения родства (в соответствии со своим вариантом). 5. Набрать в текстовом редакторе системы Arity Prolog (или любом другом текстовом редакторе) текст Пролог-программы. 6. Задать Пролог-программе вопросы, касающиеся представленных родственных отношений, следующих типов. 6.1) "Находится ли субъект а в отношении R с субъектом b?" 6.1.1) "Является ли субъект a родственником типа R для субъекта b?" [вопрос типа R(a,b)]. 6.1.2) "Является ли субъект b родственником типа R для субъекта a?" [вопрос типа R(b,a)]. 6.2) "Кто находится в отношении R с субъектом a?" 6.2.1) "Найти всех субъектов, для которых a является родственником типа R" [вопрос типа R(a,X)] 6.2.2) "Найти всех субъектов, которые являются родственниками типа R для субъекта b" [вопрос типа R(Y,b)]. 6.3) "Найти все пары субъектов, находящихся в отношении R" [вопрос типа R(X,Y)]. 7. Проверить вручную, соответствуют ли полученные ответы ожидаемому результату. Вариант: 2 А2,А12,Б8,Б18,Б25,С2 Мать, дядя, троюродная сестра, двоюродная племянница, n-юродная сестра, жена. Листинг parent(olga,vyacheslav). parent(vladimir,vyacheslav). parent(petr,vladimir). parent(petr,valentin). parent(ivan,petr). parent(ivan,aleksei). parent(aleksei,raya). parent(raya,galina). parent(valentin,maksim). parent(maksim,sofia). parent(alexasndr,ivan). parent(alexandr,lubov). parent(lubov,ksenia). parent(ksenia,oleg). parent(oleg,marina). wife(olga,vladimir). woman(olga). woman(raya). woman(galina). woman(sofia). woman(lubov). woman(ksenia). woman(marina). man(vladimir). man(vyacheslav). man(petr). man(ivan). man(aleksei). man(valentin). man(maksim). man(alexsandr). man(oleg). mother(X,Y):-parent(X,Y),woman(X). uncle(B,Y):-parent(X,Y),parent(Z,X),parent(Z,B),man(B). second_coustin_sister(S,Y):-parent(X,Y),parent(Z,X),parent(B,Z),parent(B,A),parent(A,C),parent(C,S),woman(S). first_coustin_niece(C,Y):-parent(X,Y),parent(Z,X),parent(Z,B),parent(B,A),parent(A,C),woman(C). four_coustin_sister(K,Y):-parent(X,Y),parent(Z,X),parent(B,Z),parent(A,B),parent(A,C),parent(C,S),parent(S,M),parent(M,K),woman(K). Граф-схема. Результат работы программы: Вывод: Изучили реляционный подход к программированию на языке Пролог, получили практические навыки работы с отношениями на языке Пролог (на примере отношений родства). |