Saltar para:
Logótipo
Você está em: Início > M.EIC023

Programação em Lógica com Restrições

Código: M.EIC023     Sigla: PLR

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

Ocorrência: 2024/2025 - 2S Ícone do Moodle

Ativa? Sim
Página Web: https://moodle2425.up.pt/course/view.php?id=4984
Unidade Responsável: Departamento de Engenharia Informática
Curso/CE Responsável: Mestrado 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
M.EIC 10 Plano de estudos oficial 1 - 6 39 162

Docência - Responsabilidades

Docente Responsabilidade
Daniel Augusto Gama de Castro Silva Regente

Docência - Horas

Teórico-Práticas: 3,00
Tipo Docente Turmas Horas
Teórico-Práticas Totais 1 3,00
Daniel Augusto Gama de Castro Silva 3,00

Língua de trabalho

Português - Suitable for English-speaking students
Obs.: Suitable for english-speaking students

Objetivos

Esta Unidade Curricular (UC) aborda os paradigmas da Programação em Lógica (PL) e Programação com Restrições (PR), especificamente na Programação em Lógica com Restrições (PLR).

O paradigma da PL apresenta uma abordagem declarativa à programação, baseada em processos formais de raciocínio, mais apropriada para a resolução de alguns tipos de problemas.

PLR permite abordar problemas de satisfação de restrições e de otimização de forma eficiente, modelizando-os de uma forma direta e elegante.

Resultados de aprendizagem e competências

No final da UC, os estudantes deverão:

- Estar familiarizados com os paradigmas da programação declarativa, nomeadamente PL e PLR.

- Identificar as categorias de problemas em que a PL e PLR são particularmente adequadas.

- Possuir capacidades de raciocínio abstrato e de resolução de problemas de forma declarativa.

- Ser capazes de aplicar adequadamente técnicas de PL e PLR.

- Ser capazes de construir aplicações completas usando Prolog com ou sem restrições.

Modo de trabalho

Presencial

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

Desejável conhecimentos básicos sobre Programação em Lógica.

Programa


  1. Programação em Lógica (PL) e Prolog


    • Cláusulas. Predicados. Factos. Perguntas. Regras. Variáveis lógicas. Instanciação. Recursividade. Listas. Negação.



  2. Programação com Restrições

    • Problemas combinatórios.

    • Restrições simples e restrições globais.

    • Satisfação de restrições.

    • Propagação de restrições.

    • Manutenção de consistência.

    • Restrições em domínios booleanos, finitos e reais.

    • Otimização.

    • Métodos de pesquisa de soluções.



  3. Linguagens e Plataformas

    • Programação em Lógica com Restrições (PLR)

      • Modelização de problemas em PLR.

      • PLR no SICStus Prolog.



    • Google OR-Tools (interface Python)

    • IBM ILOG CP Optimizer (CPLEX) (OPL e interface Python)

    • MiniZinc



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 são usadas tanto para exposição formal da matéria, acompanhada da apresentação de exemplos e sua discussão como para resolução de exercícios de programação e acompanhamento do desenvolvimento dos trabalhos práticos.

Software

SICStus Prolog - http://www.sics.se/sicstus/
Google OR-Tools
IBM ILOG CP Optimizer

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 (%)
Teste 35,00
Trabalho laboratorial 65,00
Total: 100,00

Componentes de Ocupação

Designação Tempo (Horas)
Estudo autónomo 55,00
Frequência das aulas 42,00
Trabalho laboratorial 70,00
Total: 167,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) e realizar o trabalho prático com sucesso.

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

Nota Final = 35% * MT + 50% * TP + 15% * A

MT: Nota do Mini-teste (min. 7 valores)
TP: Nota global do Trabalho Prático
(min. 7 valores)
A: Nota global das apresentações do Trabalho Prático

Provas e trabalhos especiais

Não existem provas ou trabalhos especiais.

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 as avaliações.

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-2025 © 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: 2025-06-14 às 18:48:00 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais | Denúncias