| Dispõe de 3:00 horas para realizar este exame |
| Leia as questões com toda a atenção |
| e Responda com calma e clareza em folha convencional |
Para gerir uma Central de Reservas de Automóveis e de Hóteis portugueses foram
identificadas as seguintes Entidades e Relações:
a Viatura (especificada pela marca, modelo, matrícula,
cilindrada e número de lugares), o Hotel (descrito pelo
nome, classificação (em número de estrelas), localização, telefone), o Cliente (caracterizado por um nome, bilhete de identidade,
profissão, telefone), e a Reserva que é feita por um
Cliente para uma Viatura, ou para um Hotel, e que é descrita por: um código de reserva;
número de pessoas; data de aluguer (dia, mes); número de dias da ocupação; e, caso se
trate de um Hotel, regista-se ainda o número de quartos e respectivo tipo (duplo,
simples, ou suite).
Antes de se criar a Base de Dados Relacional, que servirá de suporte ao sistema informático final, está-se a pensar fazer um protótipo do sistema num ambiente de programação declarativo, lógico.
Responda, então, às alíneas seguintes:
?- shift( [aveiro, coimbra, braga, porto], L2).
L2 = [coimbra, braga, porto, aveiro]
contas( [(jan,100),(fev,50),...,(dez,450)] ).
desenvolva um predicado soma/0 que escreva no écran o total das reservas feitas ao longo do ano.
%-------------------------
No regresso duma longa viagem por Portugal, Timóteo passou pela Central de Reservas (modelada no problema anterior) e fez, dos Hotéis que frequentou, as seguintes observações1:
A dita Central de Reservas pretende, obviamente, incorporar na BC do seu sistema de prototipagem em Prolog estas informações preciosas. Responda então às alineas seguintes:
%-------------------------
Ainda à volta do sistema de prototipagem em Prolog da Central de Reservas, desenhou-se a gramática abaixo (apresentada na notação lógica DCG) para definir uma linguagem que permita descrever viaturas.
viaturas --> marca, modelo, matriculas.
marca --> [pal(M)].
modelo --> [pal(M)], cilindrada, lugares.
cilindrada--> numero.
lugares --> numero.
numero --> [num(N)].
matriculas--> matricula, outras.
outras --> [','], matriculas.
outras --> [].
matricula --> [mat(X)].
Responda, então, às alíneas seguintes:
?- viaturas( [pal(ferrari),pal(f40),num(300),num(8),mat(45-66-AX),mat(66-68-EI)], [] ).
?- viaturas( [pal('Mercedes'),pal(c220D),num(2155),num(5)], [] ).
%-------------------------
Para fazer a Gestão de cada Hotel ligado à Central de Reservas de que vimos falando, 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).
%-------------------------
1 Problema inspirado no Jogo 49 da livro 100 Jogos Lógicos da colecção O Prazer da Matemática da Gradiva.