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: 2018/2019 - 1S Ícone do Moodle

Ativa? Sim
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
MIEIC 183 Plano de estudos a partir de 2009/10 3 - 4,5 56 121,5

Língua de trabalho

Português - Suitable for English-speaking students

Objetivos

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.

Objetivos: 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.

Distribuição Percentual: Componente científica: 50%; Componente tecnológica: 50%

Resultados de aprendizagem e competências

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 em 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.

Modo de trabalho

Presencial

Pré-requisitos (conhecimentos prévios) e co-requisitos (conhecimentos simultâneos)

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.

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/

Palavras Chave

Ciências Tecnológicas > Engenharia > Engenharia do conhecimento
Ciências Físicas > Ciência de computadores > Programação
Ciências Físicas > Matemática > Lógica matemática
Ciências Físicas > Ciência de computadores > Cibernética > Inteligência artificial

Tipo de avaliação

Avaliação distribuída sem exame final

Componentes de Avaliação

Designação Peso (%)
Participação presencial 0,00
Teste 50,00
Trabalho laboratorial 50,00
Total: 100,00

Componentes de Ocupação

Designação Tempo (Horas)
Estudo autónomo 10,00
Frequência das aulas 52,00
Trabalho laboratorial 60,00
Total: 122,00

Obtenção de frequência

Um aluno inscrito obtém frequência se cumprir a assiduidade às aulas teórico-práticas (máximo de faltas permitido corresponde a 25% das aulas previstas).

Fórmula de cálculo da classificação final

Nota Final = 50% * Trabalhos + 50% * Testes

Trabalhos = 65% * Trabalho1 + 35% * Trabalho2
Trabalho1 = 25% * Inter1 + 75% * Final1

Testes = 65% * Teste1 + 35% * Teste2

Trabalhos: Nota global dos Trabalhos Práticos.
Inter1: Nota da Avaliação Intercalar do Trabalho 1.
Final1: Nota da Avaliação Final do Trabalho 1 (Relatório e Demonstração).
Trabalho2: Nota da Avaliação do Trabalho 2 (Relatório e Demonstração).

Testes: Nota global dos dois Testes.
Teste1: Nota obtida no Teste 1.
Teste2: Nota obtida no Teste 2.

Para obter aprovação, aplicam-se as seguintes classificações mínimas:
- Trabalho1: 7 valores em 20
- Trabalho2: 7 valores em 20
- Teste1: 7 valores em 20
- Teste2: 5 valores em 20

Os dois testes serão realizados em ambiente Moodle.

Provas e trabalhos especiais

A Unidade Curricular tem 50% de avaliação prática, que é o resultado da realização de dois trabalhos práticos seguindo as regras indicadas na página da unidade curricular. O 1º trabalho prático tem interface com a Unidade Curricular de LAIG (para os estudantes inscritos nessa UC). Os restantes 50% da avaliação correspondem a dois testes feitos em ambiente Moodle.

A avaliação em épocas especiais consiste na elaboração de um Trabalho prático e de um Exame escrito (com consulta), valendo cada uma destas componentes 50% da nota final. A aprovação na Unidade Curricular pressupõe a obteção de uma classificação mínima de 7 valores em 20, em cada uma destas componentes (Trabalho prático e Exame escrito).

Avaliação especial (TE, DA, ...)

Todos os componentes de avaliação são exigidos a todos os alunos, independentemente do regime de inscrição e da necessidade de obter avaliação de frequência. Os alunos inscritos ao abrigo de regimes especiais sem frequência de aulas práticas devem acordar com os docentes sessões de acompanhamento e avaliação prática. Devem igualmente comparecer nas datas previstas para os testes.

Melhoria de classificação

A melhoria da classificação só pode ser obtida na edição seguinte da Unidade Curricular.

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-11-08 às 23:02:53 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais | Denúncias