O programa deve estar baseado no banco de dados com informações de vôos (ver Figura 1), 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.
Seu primeiro problema é encontrar rotas 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ê pode precisar também dos seguintes predicados auxiliares:
Escreva um programa em Prolog, utilizando a informação dada, que responda aos três tipos de perguntas apresentados acima. A terceira pergunta poderá ser escrita como uma combinação de chamadas ao predicado route/4.
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 2 para testar seu programa. Atenção aos apóstrofes que devem ser utilizados quando as palavras nas frases começam com letra maiúscula!
Faça uma pequena modificação no seu programa para que este retorne a estrutura gramatical das frases analisadas. Por exemplo, a consulta sentenca(X,['A',vida,corre],[]) 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 corretos ``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á fora 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. Ambos devem participar nas duas implementações (imperativa e declarativa - Prolog) e discutir sobre facilidades/dificuldades de implementação de cada um dos paradigmas.
Entregar:
Organização do trabalho escrito:
A submissão será através do Moodle UP. Por favor, não inclua caracteres acentuados no nome do ficheiro de submissão.
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!