Saltar para:
Logótipo
Você está em: Início > EIC0026

Programação em Lógica

Código: EIC0026     Sigla: PLOG

Áreas Científicas
Classificação Área Científica
OFICIAL Programação

Ocorrência: 2011/2012 - 1S

Ativa? Sim
Página e-learning: http://moodle.fe.up.pt/
Unidade Responsável: Departamento de Engenharia Informática
Curso/CE Responsável: Mestrado Integrado em Engenharia Informática e Computação

Ciclos de Estudo/Cursos

Sigla Nº de Estudantes Plano de Estudos Anos Curriculares Créditos UCN Créditos ECTS Horas de Contacto Horas Totais
MIEEC 5 Plano de estudos de Transição a partir de 2010/11 4 - 5 56 135
5
Plano de estudos oficial 4 - 5 56 135
5
MIEIC 115 Plano de estudos a partir de 2009/10 3 - 5 56 135

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.
Recomendar Página Voltar ao Topo
Copyright 1996-2024 © Faculdade de Engenharia da Universidade do Porto  I Termos e Condições  I Acessibilidade  I Índice A-Z  I Livro de Visitas
Página gerada em: 2024-07-22 às 22:22:56 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais | Denúncias