Archive for Programação

Material do curso de Programação Declarativa

Hoje apresento-lhes o material de suporte que utilizei na disciplina de Programação Declarativa. Ministrei-a no último semestre de aulas na Universidade Federal de Sergipe, mais especificamente em 2011/2.

Nessa disciplina, abordamos tanto o paradigma da programação funcional, quanto o paradigma da programação lógica, e devo dizer que foi um verdadeiro desafio para mim, não somente porque já não estudava Haskell (programação funcional) há mais de cinco anos, como também porque tudo o que eu sabia de Prolog resumia-se a uma ou duas aulas que tive durante a disciplina de Inteligência Artificial, ou seja, um desafio e tanto para elaborar todo o conteúdo enquanto aprendendo, e tudo isso durante um período letivo que já havia começado atrasado!

Durante a mesma, elaborei todo o material em apresentações para Microsoft Powerpoint (formato PPT), bem como escrevi os códigos-fonte dos exemplos em arquivos separados.

Bem, no fim das contas, acredito que o curso foi muito bem aplicado e muitos aprenderam este paradigma tão diferente da programação imperativa, nossa “velha amiga”.

E aqui está a apresentação composta por todos os slides usados em aula (um total de 305 slides :) ) em formato PPT mais os arquivos com códigos-fonte:

Material do curso de Programação Declarativa

Abaixo encontra-se a estrutura das aulas (em outra oportunidade espero publicar aqui artigos com o conteúdo textual de cada uma dessas aulas, mas acho que vai demorar bastante até que eu tenha tempo para fazer isso!):

  • Aula 01 – Paradigmas da programação
    • Programação imperativa
      • Programação estruturada
      • Programação orientada a objetos
      • Programação concorrente
    • Programação declarativa
      • Programação funcional
      • Programação lógica
      • Programação restritiva
    • Linguagens de programação multiparadigma
  • Aula 02 – Introdução à programação funcional
    • O que é uma função?
    • Exemplos de funções
    • Tipos de dados
    • A linguagem Haskell
    • Hugs 98
    • WinHugs
    • Exemplo de programa
    • Exercícios
  • Aula 03 – Tipos básicos e definições
    • Booleanos / lógicos
    • Inteiros
    • Caracteres
    • Fracionários
    • Indentação do código
    • Sobrecarga
    • Identificadores
    • Palavras reservadas
    • Exercícios
  • Aula 04 – Projetando e escrevendo programas
    • Eu sei exatamente o que preciso fazer?
    • Quais tipos de dados são necessários?
    • Que informações já possuo?
    • Posso dividir o problema em partes menores?
    • Posso usar recursão para resolver meu problema?
    • Exercícios
  • Aula 05 – Tuplas, listas e strings
    • Tuplas
    • Listas
    • Strings
    • Declaração de tipos
    • Funções genéricas
    • Exercícios
  • Aula 06 – Definições locais
    • Definições locais
    • Cláusula where
    • Expressão let
    • Escopo
  • Aula 07 – Funções sobre listas
    • Definições por casamento de padrões
    • A construção case
    • Recursão primitiva sobre listas
    • Exercícios
  • Aula 08 – Padrões de computação e funções de alta ordem
    • Padrões de computação sobre listas
    • Mapeamento (mapping)
      • A função map
    • Filtragem (filtering)
      • A função filter
    • Redução (folding)
      • A função foldr1
      • A função foldr
    • Funções de alta ordem
  • Aula 09 – Funções como valores
    • Definição a nível de função
    • Composição de funções
    • Cuidados com as composições
    • Expressões definindo funções
    • Notação Lambda
    • Aplicação parcial
    • Seção de operador
    • Currying e Uncurrying
    • Exercícios
  • Aula 10 – Polimorfismo e classes de tipos
    • Polimorfismo paramétrico e sobrecarga
    • Função de ordenação – caso 1
    • Classe de tipos
    • Função de ordenação – caso 2
    • Definição de uma classe e de uma instância
    • Exercícios
  • Aula 11 – Tipos algébricos
    • Por que tipos algébricos?
    • Introduzindo tipos algébricos
    • Tipos enumerados
    • Tipos produtos
    • Tipos alternativos
    • Definição geral de um tipo algébrico
    • Derivando instâncias de classes
    • Tipos algébricos recursivos
    • Construtores infix
    • Tipos algébricos polimórficos
  • Aula 12 – Tipos abstratos de dados
    • Por que tipos abstratos de dados?
    • Exemplo de um TAD
    • Introduzindo newtype
    • Instanciando classes
    • Exercícios
  • Aula 13 – Avaliação preguiçosa
    • Definição
    • Exemplos
    • Pontos-chave da avaliação preguiçosa
    • Cálculo para casamento de padrões
    • Cálculo para guardas
    • Cálculo para definições locais
  • Aula 14 – Introdução à programação lógica
    • O que é programação lógica?
    • Exemplos de inferência
    • Bases da programação lógica
    • Aplicações
    • Vantagens e desvantagens
    • A linguagem Prolog
    • Instruções em Prolog
    • Exemplo de programa e consulta
    • Variáveis em Prolog
    • Formas de declaração de fatos
    • Observações sobre declaração de fatos
    • Formas de consultas
    • Operadores
    • Conjunção
    • Disjunção
    • SWI-Prolog
    • Comandos trace e notrace
    • Exercícios
  • Aula 15 – Recursividade
    • Introdução
    • Operador cut ( ! )
    • Comando fail
    • Operador not
    • Exercícios
  • Aula 16 – Listas
    • Introdução
    • Manipulando listas
    • Predicado member
    • Predicado append
    • Predicado length
    • Exercícios
  • Aula 17 – Aritmética
    • Série de exercícios envolvendo cálculos aritméticos

Apesar de serem enumeradas aqui como sendo 17 aulas, algumas delas requereram mais de um dia de aula e cada dia de aula na verdade são duas horas-aula, totalizando assim as 60 horas-aula da disciplina de Programação Declarativa.

Se você gostou deste artigo, que tal...

Material do Curso de Programação 1

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

Material do Curso de Programação 1


Este é o material do curso de Programação 1. :)

Na verdade este é o nome antigo da disciplina que agora se chama Programação Imperativa… Mas eu gosto desse nome também. 😀

Além disso, outras disciplinas podem apresentar uma ementa bastante similar, como é o caso da disciplina Introdução à Ciência da Computação, o que me permite geralmente reaproveitar boa parte deste material nela também.

Disponibilizo a todos a apresentação de slides (em formato PPT) que elaborei para o curso.

Vocês perceberão que o assunto foi dividido em “aulas”, que não correspondem a cada hora-aula dada em sala de aula! Algumas delas tomaram mais tempo e outras menos em sua explicação . O objetivo inicial era que cada aula apresentasse uma quantidade de conteúdo mais ou menos similar, o que facilitaria o estudo.

Vale salientar também que em nosso curso nós estudamos a linguagem Pascal, para ser mais específico, adotando o compilador Turbo Pascal 7.0, mas também pode ser empregado o Free Pascal, Borland Pascal ou Pascalzim, desde que sejam feitas as devidas modificações no código (Pascalzim, por exemplo, não tem definida a cláusula “uses”).

Antes que eu me esqueça, quem quiser baixar a apresentação (que possui 101 slides :) ) com quase todo o conteúdo didático (as últimas aulas não estão aí, mas espero atualizar esta apresentação tão breve quanto for possível), basta clicar no link abaixo:

Material de suporte do curso de Programação 1

Vou listar agora o título de cada aula (somente as já presentes na apresentação, as demais colocarei mais tarde) para que, caso em algum momento eu tenha algum tempo livre (algo raro) eu possa escrever um artigo explicando melhor sobre o conteúdo e, assim, linkar com esta página, o que tornará mais fácil encontrar o conteúdo. :)

Aula 1 – Introdução à Computação

Aula 2 – Representação Numérica

Aula 3 – Introdução a Algoritmos

Aula 4 – Alguns Conceitos e Comandos em Programação

Aula 5 – Expressões

Aula 6 – Comandos Condicionais

Aula 7 – Comandos de Repetição

Aula 8 – Funções e Procedimentos

Pront. Em caso de dúvida a respeito do conteúdo de Programação 1, pode fazê-la aqui mesmo, comentando, e eu tentarei responder o mais breve possível!

Se você gostou deste artigo, que tal...

Material do curso de Programação Declarativa

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS