Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Logic tasks on TurboProlog.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2.27 Mб
Скачать

Задание

На заводе работают 3 друга: слесарь, токарь и сварщик. Их фамилии Борисов, Иванов и Семенов. У слесаря нет ни братьев, ни сестер. Он младший из друзей. Семенов, женат на сестре Борисов он, старше токаря. Назвать фамилии слесаря,

токаря и сварщика.

Описание программы

В процессе выполнения задания была написана программа, которая позволяет определить фамилии слесаря, токаря и сварщика. Для этого необходимо ввести запрос в формеivanov, borisov, Semenov. (Рис. 1).

Рис. – Выполнение программы

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

Заключение

В результате выполнения данной лабораторной работы, были изучены основы языка программирования высокого уровня TurboProlog и интерфейс соответствующего пакета программ, разработанного компанией BorlandInternational. Была решена выданная задача поиска мест участников соревнования.

  1. In a bottle, a glass, a jug and a jar there is a milk, kvass, lemonade and water. It is known, that milk and water are not in the bottle, the vessel with lemonade is between the jug and a vessel with kvass, in the jar - not lemonade and not water. The glass is nearby jar and vessel with milk. What liquids on vessels are allocated?

Задание

На языке Turbo Prolog реализовать решение задачи: Три друга разной национальности на соревнованиях заняли 1, 2, 3 места. Зовут друзей по-разному и занимаются они разными видами спорта. Майкл предпочитает баскетбол и играет лучше американца, англичанин Саймон играет лучше теннисиста. Игрок в крикет занял 1-е место. Кто является австралийцем? Какое место занял Сигурд?

Описание программы

В процессе выполнения задания была написана программа, которая позволяет определить соответствие имени занятому месту, национальность, а также любимый вид спорт всех трех друзей.

Для этого программа обладает внутренней целью otvet. Otvet состоит из 5 подцелей. Программа, поэтапно, благодаря выявлению верных соответствий и на основе имеющих знаний, успешно завершает все пять подцелей, тем самым, выдавая верное соответствие (рис.1).

Рисунок – Выполнение программы

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

Domains

man=m(name,nationality,sport)

men=man*

name,nationality,sport=string

A=reference man*

B=reference man*

C=reference man*

Predicates

name(man,name)

nationality(man,nationality)

sport(man,sport)

first(men,man)

nondeterm better(man,man,men)

nondeterm friend(man,men)

nondeterm otvet

Clauses

better(A,B,[A,B,_]).

better(B,C,[_,B,C]).

better(A,C,[A,_,C]).

name(m(N,_,_),N).

nationality(m(_,Nat,_),Nat).

sport(m(_,_,S),S).

first([X|_],X).

otvet:-

better(X1k1,X2k1,Sportsmen),name(X1k1,"Michael"),sport(X1k1,"Basketball"),nationality(X2k1,"American"),

better(X1k2,X2k2,Sportsmen),name(X1k2,"Saimon"),nationality(X1k2,"Englishman"),sport(X2k2,"Tennis"),

first(Sportsmen,X1k3),sport(X1k3,"Cricket"),

friend(X1k4,Sportsmen),name(X1k4,"Sigurd"),

friend(X1k5,Sportsmen),nationality(X1k5,"Australian"),

Sportsmen=[m(N1,Nat1,S1),m(N2,Nat2,S2),m(N3,Nat3,S3)],

write(N1, " is on the 1-st place. He is an ", Nat1 ,". He is fond of ", S1, "."),nl, nl,

write(N2, " is on the 2-nd place. He is an ", Nat2 ,". He is fond of ", S2, "."),nl, nl,

write(N3, " is on the 3-rd place. He is an ", Nat3 ,". He is fond of ", S3, "."),nl, nl.

friend(X,[X|_]).

friend(X,[_|Y]):-friend(X,Y).

Goal

otvet.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]