CCO - 210 - Paradigmas de Linguagem de Programação
Quantidade de créditos: 8
Total de horas de aulas teóricas: 60
Total de horas de aulas de exercícios, seminários ou estudos dirigidos : 60
Objetivo
- Conhecer os principais paradigmas de linguagens de programação e algumas linguagens típicas de cada paradigma.
- Conhecer características de cada paradigma, principalmente as que permitem diferenciar um do outro.
- Conhecer as construções básicas das principais das linguagens estudadas.
- Escrever programas em cada uma das linguagens estudadas utilizando os recursos apresentados na disciplina.
- Reconhecer os diferentes paradigmas de acordo com os critérios de linguagem imperativa, declarativa, compilada, interpretada.
Ementa
- Visão geral dos paradigmas de linguagens de programação
- Visão geral – por que estudar paradigmas de programação
- Critérios adotados para o estudo dos paradigmas
- Descrição geral dos paradigmas de linguagens de programação
- Evolução das principais linguagens de programação
- Programação Lógica
- Noções básicas da programação lógica e introdução à Linguagem Prolog: fatos, consultas, unificação, regras, recursividade
- Estrutura de listas e operações sobre listas
- Controle de retrocesso (corte)
- Alterações da base de dados
- Metaprogramação
- Programação Funcional
- Noções básicas da programação funcional e introdução à linguagem LISP: objetos de dados, funções, procedimento, processamento de
- listas
- Funções que operam sobre listas, funções para construir listas
- Controle de fluxo, conectivos lógicos, macros, variáveis livres e ligadas
- Funções de ordem superior, recursão versus iteração, escopo léxico e dinâmico.
- Programação Procedural
- Revisão das noções básicas de linguagens imperativas e procedurais
- Amarração e tempo de amarração de variáveis a seus atributos
- Verificação de tipo
- Estruturas de controle em nível de unidades
- Métodos de passagem de parâmetros
- Implementação de subprogramas
- Programação Orientada a Objetos
- Noções básicas da programação orientada a objetos
- Introdução à linguagem JAVA
- Herança e polimorfismo em JAVA
- Classes abstratas e interfaces em JAVA
- Coleções de dados em JAVA
- Programação concorrente
- Introdução à programação concorrente
- Unidades concorrentes em JAVA – classes threads e runnable
- Principais métodos da classe Thread
- Métodos sincronizados
Bibliografia Principal
- Sebesta, R.W. Concepts of Programming Languages.11a.edição/Addison-Weley, 2015.
- Varejão, F. Linguagens de Programação – Conceitos e Técnicas. Editora Campus, 2004.
- Bratko, I. - Prolog Programming for Artificial Intelligence. Addison Wesley, 1986.
- Winston, P. ; Horn, B. LISP. Addison-Wesley, 1984.
- Santos, R. ; Introdução à Programação Orientada a Objetos usando JAVA. Editora Campus, 2003.
- Sebesta, R. W. Conceitos de Linguagens de Programação. Tradução de José Carlos Barbosa dos Santos, 5ª ed. Bookman, Porto Alegre, 2003.
- Sethi, R. Programming Languages - Concepts and Constructs, 2nd. edition, Addison-Wesley, 1996.
- Nicoletti, M. C. A Cartilha Prolog. Série apontamentos, Editora da UFSCar, 2003.
- Sieera, K., Bates, B. Head Fisrt JAVA: A Brain-Friendly Guide. 2nd edition. O´Reilly Media, 2005.
- Horstmann, C. , Cornell, G. ; Core JAVA 2 – Volume I - Fundamentos. Tradução de João Eduardo Nóbrega Tortello, Makron Books, 2001.
- Block, J. Effective JAVA, 3rd. edition, Pearson Education Inc., 2018.