Pre-Req.: MC202
Ementa: Visão comparativa de paradigmas de programação.
Programação funcional, lógica e orientada a objetos.
Programa
(i) programação orientada a objetos:
abstração de dados, objetos,
classes e tipos, herança, hierarquias de generalização/especialização,
hierarquias de agregação/decomposição,
polimorfismo, classes
abstratas, interfaces, pacotes/módulos,
tratamento de exceções,
metaclasses.
(ii) programação funcional: ênfase em recursão
e modularidade;
ausência de atribuições, efeitos colaterais em
geral e controle de fluxo.
Escolha de uma linguagem funcional para ilustrar suas características
em
relação a tipos, modo de avaliação de expressões
e argumentos, operações
primitivas, estruturas de dados, funções de funções,
entrada e saída de
dados.
(iii) programação lógica: fatos, regras,
inferencia. Modelo de execução. Listas,
operadores e predicados primitivos para numeros e listas. Cut. Estruturas
de
controle. Outras linguagens lógicas.
Bibliografia:
1.Java Programming Language, Arnold Gosling et al, Addison Wesley Publishing
Company, 3. edição.
2.ANSI Common Lisp, Paul Graham, Prentice Hall 1996
3.Prolog Programming for Artifical Intelligence, Ivan Bratko.