Создание простейших проектов




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

Мельников М.О.

Создание простейших проектов

Задание 1. Заданы отношения-факты:

родитель(“Иван”,”Катя”).

родитель(“Анна”,” Олег ”).

родитель(“Олег”,”Дима”).

родитель(“Игорь”,”Ольга”).

родитель(“Олег”,”Виктор”).

родитель(“Игорь”,”Иван”).

мужчина(“Дима”).

мужчина(“Иван”).

мужчина(“Игорь”).

мужчина(“Олег”).

мужчина(“Виктор”).

женщина(“Катя”).

женщина(“Ольга”).

женщина(“Анна”).

Составить новое отношение-правило дед(X,Y) и определить, кто являет-ся дедушкой Кати.

1) Добавьте новое правило бабушка и определите, кто является бабушкой;

2) добавьте новое правило внук и определите, кто внук Анны;

3) добавьте новое правило брат и определите, кто брат Димы;

4) добавьте новое правило сестра и определите, кто сестра Ивана.

 

Решение:

TurboProlog VisualProlog
DOMAINS name=string.   PREDICATES nondeterm parent(name,name). female(name). male(name). nondeterm grandpa(name,name). nondeterm grandma(name,name). nondeterm grandson(name,name). nondeterm brother(name,name). nondeterm sister(name,name).   CLAUSES parent("Ivan","Katya"). parent("Anna","Oleg"). parent("Oleg","Dima"). parent("Igor","Olga"). parent("Oleg","Victor"). parent("Igor","Ivan"). male("Dima"). male("Ivan"). male("Igor"). male("Oleg"). male("Victor"). female("Katya"). female("Olga"). female("Anna"). grandpa(X,Z):-parent(X,Y), parent(Y,Z), male(X). grandma(X,Z):-parent(X,Y), parent(Y,Z), female(X). grandson(X,Z):-parent(Z,Y),parent(Y,X),male(X). brother(X,Y):-parent(Z,X),parent(Z,Y),male(X), X<>Y. sister(X,Y):-parent(Z,X),parent(Z,Y),female(X), X<>Y. implement main open core, console domains name=string. class facts female:(name) nondeterm. male:(name) nondeterm. class predicates parent:(name, name) nondeterm anyflow. grandpa:(name,name) nondeterm anyflow. grandma:(name,name) nondeterm anyflow. grandson:(name,name) nondeterm anyflow. brother:(name,name) nondeterm anyflow. sister:(name,name) nondeterm anyflow. clauses parent("Ivan","Katya"). parent("Anna","Oleg"). parent("Oleg","Dima"). parent("Igor","Olga"). parent("Oleg","Victor"). parent("Igor","Ivan"). male("Dima"). male("Ivan"). male("Igor"). male("Oleg"). male("Victor"). female("Katya"). female("Olga"). female("Anna"). grandpa(X,Z):-parent(X,Y), parent(Y,Z), male(X). grandma(X,Z):-parent(X,Y), parent(Y,Z), female(X). grandson(X,Z):-parent(Z,Y),parent(Y,X),male(X). brother(X,Y):-parent(Z,X),parent(Z,Y),male(X), X<>Y. sister(X,Y):-parent(Z,X),parent(Z,Y),female(X), X<>Y. run():- init(), write("Кто дедушка Кати?"),nl, grandpa(X,"Katya"), write(X,' дедушка Кати '), nl, fail. run():- init(), write("Кто является бабушкой?"),nl, grandma(X,Y), write(X,' бабшука ',Y), nl, fail. run():- write("Кто внук Анны?"),nl, grandson(X,"Anna"), write(X,' внук Анны'), nl, fail. run():- write("Кто брат Димы?"),nl, brother(X,"Dima"), write(X,' брат Димы'), nl, fail. run():- write("Кто сестра Ивана?"),nl, sister(X,"Ivan"), write(X,' сестра Ивана'), nl, fail. run():- nl, _=readLine(). end implement main goal console::run(main::run).

 

 

Рис.1. Решение задания в ТurboProlog

Рис.2. Решение задания в VisualProlog

 

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

1) grandma(X,Y).   2) grandson(X, "Anna").  
3) brother(X," Dima").   4)sister(X,"Ivan").    

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

Рис. 3. Окно вывода результата VisualProlog



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2021-04-24 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: