Programação em Lógica
Áreas Científicas |
Classificação |
Área Científica |
OFICIAL |
Programação |
Ocorrência: 2011/2012 - 1S
Ciclos de Estudo/Cursos
Língua de trabalho
Português - Suitable for English-speaking students
Objetivos
1- INTRODUÇÃO
O paradigma da Programação em Lógica apresenta uma abordagem declarativa e baseada em processos formais de raciocínio à programação, mais apropriada para a resolução de alguns tipos de problemas. A programação em lógica com restrições permite abordar problemas de satisfação de restrições e de optimização, modelando-os de uma forma directa e elegante.
2 - OBJECTIVOS ESPECÍFICOS
Adquirir familiaridade com os paradigmas da Programação em Lógica e da Programação com Restrições. Desenvolver as capacidades de raciocínio abstracto e de representação de problemas de forma declarativa.
A Unidade Curricular centra-se no paradigma da programação baseada em lógica de primeira ordem. A componente prática baseia-se na utilização da linguagem de programação Prolog. Adicionalmente, é também abordada a programação em lógica com restrições, com ilustração de diversas aplicações práticas.
3 - CONHECIMENTO PRÉVIO
Embora a Unidade Curricular não tenha pré-requisitos especiais, conhecimentos adquiridos nas unidades curriculares de Fundamentos de Programação, Programação, Algoritmos e Estruturas de Dados, e Concepção e Análise de Algoritmos, são muito úteis para a Unidade Curricular de Programação em Lógica.
4 - DISTRIBUIÇÃO PERCENTUAL
Componente científica: 50%
Componente tecnológica: 50%
5 - RESULTADOS DA APRENDIZAGEM
No final da Unidade Curricular, os estudantes deverão ter competências para:
- Reconhecer as categorias de problemas em que a Programação em Lógica (e com Restrições) é particularmente adequada.
- Aplicar as técnicas de programação em Prolog e em programação lógica com restrições.
- Construir aplicações completas em Prolog com eventual ligação a outras linguagens.
Os estudantes deverão também ter apreendido competências de programação requeridas nos trabalhos das unidades curriculares da área da Inteligência Artificial.
Programa
Fundações da Programação em Lógica
- Lógica proposicional. Lógica de predicados. Regras de inferência. Cláusulas de Horn. Unificação. Resolução. Forma normal conjuntiva.
- Conceito de programação em lógica. Origens do Prolog.
Conceitos da Programação em Lógica
- Cláusulas. Predicados. Factos. Perguntas. Regras. Variáveis lógicas. Instanciação.
- Programação em lógica e bases de dados. Recursividade. Listas. Árvores. Expressões simbólicas.
- Execução de um programa em lógica. Algoritmo da unificação. Interpretador abstracto. Traçados. Árvores de pesquisa. Negação.
A Linguagem Prolog
- Modelo de execução. Backtracking. Ordem das regras e dos objectivos. Terminação.
- Aritmética. Iteração. Inspecção de estruturas. Predicados meta-lógicos. Controlo: cuts e negação. Predicados extra-lógicos.
Técnicas Avançadas de Programação em Prolog
- Programação não determinística. Estruturas de dados incompletas. Meta-interpretadores. Técnicas de pesquisa.
Programação em Lógica com Restrições
- Restrições. Satisfação de restrições. Restrições em domínios finitos.
- Programação em lógica com restrições (PLR). Controlo da pesquisa. Ordenação de variáveis e valores. Modelização de problemas em PLR. Programação com restrições no SICStus Prolog.
Bibliografia Obrigatória
Sterling, Leon;
The Art of Prolog. ISBN: 0-262-69163-9
Marriot, Kim;
Programming with constraints. ISBN: 0-262-13341-5
Clocksin, W. F.;
Programming in prolog. ISBN: 0-387-58350-5
Bibliografia Complementar
Torres, Delfim Fernando Marado;
Introdução à programação em lógica. ISBN: 972-8021-93-3
Bratko, Ivan;
Prolog programming for artificial intelligence. ISBN: 0-201-40375-7
O.Keefe, Richard A.;
The craft of Prolog. ISBN: 0-262-15039-5
Stuart Russell, Peter Norvig;
Artificial intelligence. ISBN: 978-0-13-207148-2
Métodos de ensino e atividades de aprendizagem
As aulas teóricas são usadas para exposição formal da matéria, acompanhada da apresentação de exemplos e sua discussão.
Nas aulas teórico-práticas são propostos exercícios de programação e acompanha-se o desenvolvimento dos trabalhos práticos dos alunos.
Software
Sicstus Prolog - http://www.sics.se/sicstus/
SWI-Prolog - http://www.swi-prolog.org/
Palavras Chave
Ciências Físicas > Ciência de computadores > Cibernética > Inteligência artificial
Ciências Físicas > Ciência de computadores > Programação
Ciências Físicas > Matemática > Lógica matemática
Ciências Tecnológicas > Engenharia > Engenharia do conhecimento
Tipo de avaliação
Avaliação distribuída com exame final
Componentes de Avaliação
Descrição |
Tipo |
Tempo (Horas) |
Peso (%) |
Data Conclusão |
Participação presencial (estimativa) |
Participação presencial |
56,00 |
|
|
Primeiro Trabalho |
Defesa pública de dissertação, de relatório de projeto ou estágio, ou de tese |
30,00 |
|
|
Segundo Trabalho |
Trabalho escrito |
20,00 |
|
|
Relatório Intercalar do Primeiro Trabalho |
Defesa pública de dissertação, de relatório de projeto ou estágio, ou de tese |
6,00 |
|
|
Relatório Final do Primeiro Trabalho |
Defesa pública de dissertação, de relatório de projeto ou estágio, ou de tese |
12,00 |
|
|
Relatório Final do Segundo Trabalho |
Defesa pública de dissertação, de relatório de projeto ou estágio, ou de tese |
8,00 |
|
|
Exame Final |
Exame |
3,00 |
|
|
|
Total: |
- |
0,00 |
|
Obtenção de frequência
Um aluno inscrito obtém frequência se não exceder o limite de faltas legalmente estabelecido e obtiver um mínimo de 30% na avaliação dos trabalhos práticos.
Fórmula de cálculo da classificação final
Cálculo da Nota Final:
Nota Final = 50% * Trabalho + 50% * Exame
Trabalho = 15%*Inter1 + 50%*Final1 + 35%*Trabalho2
Exame - Nota final do Exame.
Trabalho - Nota global dos Trabalhos Práticos.
Inter1 - Nota do Relatório Intercalar do Trabalho 1.
Final1 - Nota Final do Trabalho 1 (Relatório e Demonstração).
Trabalho2 - Nota Final do Trabalho 2 (Relatório e Demonstração).
A nota mínima exigida no Exame para a obtenção de aprovação é de 6 valores.
Provas e trabalhos especiais
A Unidade Curricular tem 50% de avaliação prática requerida a todos os inscritos e que é o resultado da realização dos trabalhos práticos nas épocas em que são propostos. O 1º trabalho prático tem interface com a Unidade Curricular de LAIG. As datas de entrega dos trabalhos e suas demonstrações são:
Entrega do Relatório Intercalar: 2/10
Entrega do Trabalho 1: 6/11
Demonstrações do Trabalho 1: 7/11 a 11/11
Entrega do Trabalho 2: 11/12
Demonstrações do Trabalho 2: 12/12 a 16/12
Avaliação especial (TE, DA, ...)
A avaliação prática, realizada durante o semestre de funcionamento da Unidade Curricular, é exigida a todos os alunos, independentemente do regime de inscrição e da necessidade de obter avaliação de frequência. A avaliação prática é baseada na realização de 2 trabalhos práticos durante o semestre, em períodos divulgados na página da Unidade Curricular. Os alunos inscritos ao abrigo de regimes especiais sem frequência de aulas práticas devem acordar com os docentes as sessões de avaliação prática a que irão comparecer.
Melhoria de classificação
Melhoria da componente de exame: realizada nas épocas de exame disponíveis.
Melhoria da classificação distribuída: A componente distribuída da avaliação é avaliação prática e só pode ser melhorada nas épocas de realização de trabalhos práticos da Unidade Curricular.
Observações
Embora a Unidade Curricular não tenha pré-requisitos especiais, conhecimentos adquiridos nas unidades curriculares de Fundamentos de Programação, Programação, Algoritmos e Estruturas de Dados, e Concepção e Análise de Algoritmos, são muito úteis para a Unidade Curricular de Programação em Lógica.