Para fazer a Gestão de cada Hotel ligado a uma Central de Reservas, construiu-se a seguinte base de factos (BF):
% cargo(C) :- o nome C define um cargo profissional em hotelaria. cargo(director). cargo(recepcionista). cargo(grumete). cargo(governanta). cargo(barman). % exerceCargo(P,C,H) :- a pessoa P exerce o cargo C no hotel H. exerceCargo(pedro,grumete,ibis). exerceCargo(delfim,director,penta). exerceCargo(mario,barman,alfa). exerceCargo(zezinha,governanta,afonso5). exerceCargo(analia,recepcionista,ibis). exerceCargo(luis,recepcionista,penta). % manda(C,S) :- a pessoa que exerce o cargo C 'e o chefe directo da pessoa que exerce o cargo S. manda(director,recepcionista). manda(director,governanta). manda(recepcionista,grumete). manda(governanta,barman). % dormeMuito(P) :- a pessoa P dorme muitas horas. dormeMuito(antonio). dormeMuito(sandra). % deita(P,H) :- a pessoa P deita-se as H horas. deita(antonio,0). deita(ana,03). deita(sandra,22). % hospedada(P,H) :- a pessoa P esta hospedada no hotel H. hospedada(antonio,penta). hospedada(ana,ibis). hospedada(sandra,afonso5).
e o seguinte programa Prolog:
% chamaBarman(P) :- % a pessoa P chama por um barman. chamaBarman(P) :- dormeMuito(P). chamaBarman(P) :- deitaTarde(P). chamaBarman(P) :- mandadoPor(barman,P). % mandadoPor(S,C) :- % a pessoa S recebe ordens (directas ou nao) de C. mandadoPor(S,C) :- manda(C,S), !. mandadoPor(S,C) :- manda(C1,S), mandadoPor(C1,C). deitaTarde(P) :- deita(P,H), H>0, H<12.
Responda, então, às alíneas seguintes:
mandadoPor(grumete,director).
exerceCargo(Quem,OQue,ibis).
chamaBarman(ana).
manda1(Nome1,Nome2)
que permita saber que a pessoa Nome1 manda directamente na pessoa Nome2, atendendo ao cargo que exercem e ao local de trabalho (o hotel terá de ser o mesmo).