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-lp 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.
Plano de acompanhamento de estudos
De acordo com o plano de acompanhamento de estudos, os alunos devem desenvolver
uma atividade após cada módulo como forma de obter presença na disciplina.
As atividades devem estar de acordo com as seguintes normas:
- Manuscrito de punho próprio
- Papel A4 branco
- Escrever na primeira linha com caneta vermelha: nome do acadêmico e RA
- Escrever na segunda linha com caneta vermelha: código da disciplina, turma e
número da atividade
As atividades e datas de entregas estão descritas na próxima seção.
Avaliações
- Exame
- 26/06 - Prova escrita (conteúdo: paradigma funcional e lógico)
- 3° avaliação (peso 1)
- 10/06 - Prova escrita (conteúdo: paradigma lógico).
- 4° avaliação (peso 2)
- 1° avaliação (peso 1)
- 10/04 - Prova escrita (conteúdo: paradigma funcional).
- 2° avaliação (peso 2)
Aulas
Paradigma Lógico
- Fundamentos (17/04, 22/04, 24/04 e 29/04)
- Conteúdo: Fatos, regras e consultas. Átomos, números, variáveis e termos
complexos (estruturas). Unificação e retrocesso. Operações aritméticas e
relacionais. Recursividade. Acumaladores.
- Referências: Capítulo 1 e 2 do livro Programming in Prolog. Capítulos
1
,
2
e
5
do livro
Learn Prolog Now.
- Referências complementares: Introduction to
Prolog.
- Exercícios (algumas soluções).
- Atividade para alunos com plano de estudos
- Data de entrega: 13/05
- Exercícios: 5, 6, 10 e 15
- Exercícios (06/05 e 08/05)
- Listas (15/05 e 20/05)
- Conteúdo: Listas. Construção de decomposição de Listas. Predicados pré definidos.
- 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.
- Exemplos.
- Exercícios (algumas soluções).
- Atividade para alunos com plano de estudos
- Data de entrega: 19/06
- Exercícios: 3, 5, 6 e 8
- Desenvolvimento do trabalho (22/05)
- Corte e retrocesso (27/05 e 29/05)
- Conteúdo: Operador de corte. Usos do operador de corte. Combinação corte
e falha. Negação como falha. Estratégia gerar e testar. Alternativas ao uso do corte.
Problemas com o uso do corte.
- Referências: Capítulo 4 do livro Programming in Prolog. Capítulo
10
do livro
Learn Prolog Now.
- Exemplos.
- Exercícios (algumas soluções).
- Atividade para alunos com plano de estudos
- Data de entrega: 19/06
- Exercícios: 1, 2, 3 e 4
- Desenvolvimento do trabalho (03/06)
- Avaliação 2 (10/06)
- Resolução da avaliação 2 (12/06)
- Apresentação do trabalho (17/06)
Paradigma Funcional
- Apresentação da disciplina (06/02)
- Fundamentos (18/02 e 20/02)
- Conteúdo: Expressões primitivas, 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, operadores lógicos,
processos interativos e recursivos.
- Referências: Seções
1.1
e
1.2
do livro SICP. Introdução rápida ao
Racket. Capítulos
1 e
2 (2.1 e 2.2) do
Guia Racket.
- Referências complementares: Capítulos 1 e 2 do livro The Scheme
Programming Languague.
- Exemplos.
- Exercícios.
- Atividade para alunos com plano de estudos
- Data de entrega: 13/03
- Exercícios 4, 5, 6 e 11
- Listas (25/02 e 27/02)
- Funções (04/03, 06/03, 11/03 e 13/03)
- Conteúdo: Funções como objetos de primeira classe, funções anônimas,
funções de alta ordem, funções variádicas, fechamentos (closure) e
ambientes, vinculação local (
let
), funções foldr
, foldl
, map
e
filter
.
- Referências: Seções
1.3
(1.3.1 e 1.3.2) e
2.2.3
do livro SICP.
- Referências complementares: Seção
4.2 e
5.5 do livro
The Scheme Programming Languague.
- Exemplos.
- Exercícios.
- Atividade para alunos com plano de estudos
- Data de entrega: 25/03
- Exercícios: 1, 7, 9, 11 e 15
- Streams e sequências (18/03 e 20/03)
- Conteúdo: Streams como listas atrasadas (lazy), streams infinitos,
definição implícita e explícita de streams, list comprehension.
- Referências: Seção
3.5
(3.5.1 e 3.5.2) do livro SICP. Seção
4.14 e
2.18 da Referência
Racket.
- Exemplos.
- Exercícios.
- Atividade para alunos com plano de estudos
- Data de entrega: 22/04
- Exercícios: 1 e 5
- Entrada e saída (25/03)
- Conteúdo: Portas, abertura e fechamento de arquivos, funções de leitura e escrita.
- Referências: Capítulo 8 do
Guia Racket e capítulo
12 da
Referência Racket.
- Exercícios.
- Atividade para alunos com plano de estudos
- Data de entrega: 24/04
- Exercícios: 1 e 4
- Finalização (27/03)
- Conteúdo: Outras linguagens funcionais, avaliação do paradigma de programação funcional.
- Desenvolvimento do trabaho (01/04, 03/04 e 08/04)
- Avaliação 1 (10/04)
- Resolução da avaliação 1 (16/04)
Links
Incentivo ao aprendizado de novas linguagens de programação
Racket
Prolog
Outros