O programa deve estar baseado no banco de dados com informações de vôos abaixo, onde timetable(Place1,PLace2,List_of_flights) representa a informação sobre cada vôo com Place1 sendo origem, Place2, destino, e List_of_flights, uma lista contendo informações sobre cada vôo estruturada da seguinte forma: hora de saída/hora de chegada/número do vôo/lista de dias.
timetable(edinburgh,london, [ 9:40/10:50/ba4733/alldays, 13:40/14:50/ba4773/alldays, 19:40/20:50/ba4833/[mo,tu,we,th,fr,su]]). timetable(london,edinburgh, [ 9:40/10:50/ba4732/alldays, 11:40/12:50/ba4752/alldays, 18:40/19:50/ba4822/[mo,tu,we,th,fr]]). timetable(london,ljubljana, [13:20/16:20/ju201/[fr], 13:20/16:20/ju213/[su]]). timetable(london,zurich, [ 9:10/11:45/ba614/alldays, 14:45/17:20/sr805/alldays]). timetable(london,milan, [ 8:30/11:20/ba510/alldays, 11:00/13:50/az459/alldays]). timetable(ljubljana,zurich, [11:30/12:40/ju322/[tu,th]]). timetable(ljubljana,london, [11:10/12:20/yu200/[fr], 11:25/12:20/yu212/[su]]). timetable(milan,london, [ 9:10/10:00/az458/alldays, 12:20/13:10/ba511/alldays]). timetable(milan,zurich, [ 9:25/10:15/sr621/alldays, 12:45/13:35/sr623/alldays]). timetable(zurich,ljubljana, [13:30/14:40/yu323/[tu,th]]). timetable(zurich,london, [ 9:00/9:40/ba613/[mo,tu,we,th,fr,sa], 16:10/16:55/sr806/[mo,tu,we,th,fr,su]]). timetable(zurich,milan, [ 7:55/8:45/sr620/alldays]).
Seu problema principal é encontrar rotas exatas entre duas cidades num determinado dia da semana. A rota pode ser programada como: route(Place1,Place2,Day,Route), que satisfaz os seguintes critérios:
A rota deve estar estruturada numa lista da seguinte forma: From-To:número do vôo:Tempo de partida.
Você vai precisar também dos seguintes predicados auxiliares:
Escreva um programa em Prolog, utilizando a informação dada, que responda às perguntas apresentadas acima.
Escreva o mesmo programa utilizando uma linguagem (imperativa/procedural) da sua escolha.
Defina o restante da gramática (frases verbais, complementos) e um
dicionário de palavras (verbos, nomes, adjetivos, etc) e utilize o
conjunto de frases da Figura para testar seu
programa.
![]() |
Faça uma pequena modificação no seu programa para que este retorne a estrutura gramatical das frases analisadas. Por exemplo, a consulta sentenca([A,vida,corre],[],X) deveria retornar na variável X o valor:
sent(frase_nom(artigo('A'),substantivo(vida)),frase_verbal(verbo(corre))).
Observe que a frase do conjunto de exemplos errados ``O sino bateu na menina'' é sintaticamente correta, mas é semanticamente incorreta. Há técnicas para codificação de gramáticas com semântica associada, porém este tema está foram do escopo deste curso e deste trabalho.
Escreva o mesmo programa utilizando uma linguagem (imperativa/procedural) da sua escolha.
Juntem-se em grupos de 2 elementos, onde um elemento do grupo vai fazer a implementação em Prolog e o outro vai fazer a implementação em outra linguagem. No relatório vão relatar as facilidades/dificuldades de implementação que cada um teve.
Entregar:
Organização do trabalho escrito:
TERCEIRO TRABALHO DE SI - PROLOG
Todos os trabalhos serão apresentados em data a combinar. Os dois componentes do grupo deverão estar presentes durante a apresentação. Quem nao estiver presente vai ter nota zero!