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

Programação Funcional e em Lógica

Código: L.EIC024     Sigla: PFL

Áreas Científicas
Classificação Área Científica
OFICIAL Engenharia Informática e Computação

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

Ativa? Sim
Página Web: https://moodle2425.up.pt/course/view.php?id=4040
Unidade Responsável: Departamento de Engenharia Informática
Curso/CE Responsável: Licenciatura 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
L.EIC 376 Plano Oficial 3 - 6 52 162

Língua de trabalho

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

Objetivos

Os paradigmas de Programação Funcional e de Programação em Lógica apresentam abordagens declarativas e baseadas em processos formais de raciocínio à programação, mais apropriada para a resolução de alguns tipos de problemas.

Objetivos: Adquirir familiaridade com os paradigmas da Programação Funcional e da Programação em Lógica. Desenvolver as capacidades de raciocínio abstracto e de representação de problemas de forma declarativa.

Resultados de aprendizagem e competências

No final da UC, os estudantes deverão ser capazes de:

  1. Usar tipos pré-definidos e algébricos de Haskell para representar valores de um domínio específico
  2. Definir transformações genéricas sobre estruturas de dados indutivas (por exemplo: árvores) como funções polimórficas em Haskell
  3. Decompor problemas de programação em funções puras em Haskell operando sobre tipos de dados estruturados
  4. Provar correção de programas em Haskell usando definições com equações e indução
  5. Representar factos e relações como programas em Prolog
  6. Compreender o modelo de execução de programas em Prolog
  7. Modelar problemas de pesquisa como programas lógicos e queries em Prolog

Modo de trabalho

Presencial

Programa


  1. Programação Funcional (7 semanas)


    1. Expressões, avaliação e valores. Tipos pré-definidos. Definições usando equações.

    2. Polimorfismo paramétrico e “bounded”. Classes de tipos fundamentais.

    3. Expressões lambda. Aplicação parcial e “currying”. Funções de ordem superior do prelúdio-padrão.

    4. Definição de tipos algébricos; encaixe de padrões e definições recursivas. 

    5. Exemplos de programação: árvores equilibradas; árvores sintáticas;layout de texto; visualização e jogos.

    6. Programação com I/O.

    7. Provas de correção de programas usando definições por equações e indução.


  2. Programação em Lógica (6 semanas)

    1. Lógica proposicional e de predicados. Cláusulas de Horn. Factos e regras. Termos de Herbrand. Unificação.

    2. Linguagem Prolog. Modelo de execução. Resolução SLD. Negação por falha. 

    3. Bases de factos e relações. Programação com recursão e estruturas.

    4. Aritmética. Predicados extra-lógicos e de controlo.

    5. Exemplos de programação: procura, jogos, manipulação simbólica.



Bibliografia Obrigatória

Simon Thompson; Haskell the craft of functional programming. ISBN: 0- 201-34275-8
Graham Hutton; Programming in Haskell, Cambridge University Press, 2016. ISBN: 978-1316626221
Leon Sterling; The Art of Prolog. ISBN: 0-262-69163-9

Bibliografia Complementar

Bryan O'Sullivan, Don Stewart, and John Goerzen; Real World Haskell, O'Reilly Media, 2008. ISBN: 9780596514983
Richard Bird; Introduction to Functional Programming using Haskell, Pearson, 1998. ISBN: 978-0-13-484346-9
Ivan Bratko; Prolog programming for artificial intelligence. ISBN: 0-201-40375-7

Métodos de ensino e atividades de aprendizagem

As aulas teóricas são usadas para exposição de fundamentos, acompanhada da apresentação e discussão de exemplos ilustrativos. As aulas teórico-práticas permitem a sistematização de conhecimentos por meio da resolução de exercícios de programação e acompanhamento da realização dos trabalhos práticos.

Software

GHC
SICStus Prolog

Tipo de avaliação

Avaliação distribuída sem exame final

Componentes de Avaliação

Designação Peso (%)
Teste 50,00
Trabalho prático ou de projeto 50,00
Total: 100,00

Componentes de Ocupação

Designação Tempo (Horas)
Elaboração de projeto 60,00
Estudo autónomo 50,00
Frequência das aulas 52,00
Total: 162,00

Obtenção de frequência

Um estudante obtém frequência na UC se formar grupos de trabalho para os dois trabalhos práticos (TP1 e TP2), participar ativamente na realização dos mesmos, e entregar ambos os trabalhos dentro dos prazos previstos.

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

(CF = Classificação Final, P = Componente Prática, T = Componente Teórica, ER = Exame de Recurso)

(TP1, TP2 = Trabalho Prático 1 e 2, respetivamente)

(MT1, MT2 = Mini-Teste 1 e 2, respetivamente)


P = 50% * TP1 + 50% * TP2

T = 50% * MT1 + 50% * MT2


Em Época Normal:  

CF = 50% * P + 50% * T


Em Época de Recurso:

CF = 50% * P + 50% * ER


Notas:
- A nota mínima em cada componente (TP1, MT1, TP2, e MT2) é de 35%
- Em época de recurso, a nota mínima é de 35% em cada uma das partes do ER
- A nota máxima entre as componentes TP1 e MT1 é, no máximo, igual à nota mínima de entre estas duas componentes acrescida de 6 valores
- A nota máxima entre as componentes TP2 e MT2 é, no máximo, igual à nota mínima de entre estas duas componentes acrescida de 6 valores
- Em época de recurso, aplicam-se as mesmas regras, substituindo MT1 e MT2 pelas partes correspondentes do ER

Provas e trabalhos especiais

Não há provas ou trabalhos especiais.

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

As regras de avaliação aplicam-se a todos os estudantes, independentemente dos seus estatutos. Estudantes que, pelos seus estatutos, estejam dispensados de frequentar as aulas práticas devem contactar os docentes para acompanhamento dos trabalhos.

Melhoria de classificação

A componente prática não pode ser melhorada em época de recurso nem em épocas especiais.

A componente teórica pode ser melhorada em exame a realizar em época de recurso.

Observações

Apenas é possível realizar os trabalhos práticos no calendário regular, não sendo possível realizar os trabalhos práticos ou melhorar a sua nota em épocas especiais.
Recomendar Página Voltar ao Topo
Copyright 1996-2026 © 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: 2026-05-03 às 12:11:06 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais | Denúncias | Livro Amarelo Eletrónico