Nesta disciplina vamos estudar os fundamentos teóricos dos paradigmas de
programação lógico e funcional e implementar programas utilizando estes
paradigmas.
Veja o programa
e o critério de avaliação
da disciplina.
Os alunos desta disciplina devem inscrever-se no grupo
uem-pplf para receberem informações e
discutirem o conteúdo da disciplina. Por favor, use o seu nome verdadeiro na
lista para o professor poder identificá-lo.
Avaliações
- Avaliação final
- 3° avaliação (peso 1)
- 26/11 - Prova escrita (conteúdo: paradigma lógico).
- 4° avaliação (peso 2)
- 1° avaliação (peso 1)
- 26/09 - Prova escrita (conteúdo: paradigma funcional).
- 2° avaliação (peso 2)
Aulas
Paradigma Lógico
Utilizaremos como referência para estudar o Paradigma Lógico os livros
- Programming in
Prolog
(não disponível online); e
Learn Prolog Now!
Introdução (19/09)
Fundamentos (24/09, 03/10, 08/10, 10/10, 17/10)
- Material
- Conteúdo
- Tutorial
- Fatos
- Consultas
- Variáveis
- Conjunções
- Regras
- Visão mais detalhada
- Constantes, variáveis e estruturas
- Igualdade
- Unificação
- Aritmética
- Escrevendo código em Prolog
- Referências
- Referências complementares
Dados compostos (22/10, 24/10, 29/10, 31/10, 05/11)
- Material
- Conteúdo
- Listas
- Definição
- Construção
- Decomposição
- Receita de projeto
- Escrevendo predicados (semi) determinísticos
- Listas aninhadas
- Árvores binárias
- Otimizações
- Acumuladores
- Diferença de listas
- Referências
- Capítulo 3 e sessão 7.5 do livro Programming in Prolog
- Capítulos
4
e
6
do livro Learn Prolog
Now
Retrocesso e corte (07/11 e 12/11)
- Material
- Conteúdo
- Retrocesso
- Geradores
- Corte
- Confirmação de escolha
- Combinação com o
fail
- Gerar e testar
- Referências:
Paradigma Funcional
- Introdução (16/07)
- Material
- Leitura recomendada
- Fundamentos (18/07, 23/07, 25/07, 30/07)
- Material
- Conteúdo
- Expressões primitivas e aplicação de função
- Definições de nomes
- Modelo de substituição para aplicação de função
- Avaliação estrita e não estrita
- Expressões condicionais, predicados e operadores lógicos
- Recursão com números naturais
- Referências
- Referências complementares
- Dados compostos (01/08, 06/08, 08/08, 13/08)
- Material
- Conteúdo
- Pares
- Estruturas
- Listas
- Listas aninhadas
- Árvores binárias
- Referências
- Referências complementares
- Funções (20/08, 22/08, 27/08)
- Material
- Conteúdo
- Criando abstração a partir de exemplos
- Funções de alta ordem (
fold
, map
, filter
)
- Definições locais e fechamentos (closures)
- Funções anônimas
- Currying
- Funções com número variado de parâmetros
- Referências
- Referências complementares
- Acumuladores (29/08, 03/09)
- Material
- Conteúdo
- Falta de contexto na recursão
- Processos interativos e recursivos
- Recursão em cauda
- Projetando funções com acumuladores
- Função
foldl
- Referências
- Sequências e streams (05/09)
- Material
- Conteúdo
- List comprehension
- Streams
- Streams infinitos
- Promessas
Links
Incentivo ao aprendizado de novas linguagens de programação
Racket
Prolog
Outros