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

  1. Sebesta, R.W. Concepts of Programming Languages.11a.edição/Addison-Weley, 2015.
  2. Varejão, F. Linguagens de Programação – Conceitos e Técnicas. Editora Campus, 2004.
  3. Bratko, I. - Prolog Programming for Artificial Intelligence. Addison Wesley, 1986.
  4. Winston, P. ; Horn, B. LISP. Addison-Wesley, 1984.
  5. Santos, R. ; Introdução à Programação Orientada a Objetos usando JAVA. Editora Campus, 2003.
  6. Sebesta, R. W. Conceitos de Linguagens de Programação. Tradução de José Carlos Barbosa dos Santos, 5ª ed. Bookman, Porto Alegre, 2003.
  7. Sethi, R. Programming Languages - Concepts and Constructs, 2nd. edition, Addison-Wesley, 1996.
  8. Nicoletti, M. C. A Cartilha Prolog. Série apontamentos, Editora da UFSCar, 2003.
  9. Sieera, K., Bates, B. Head Fisrt JAVA: A Brain-Friendly Guide. 2nd edition. O´Reilly Media, 2005.
  10. Horstmann, C. , Cornell, G. ; Core JAVA 2 – Volume I - Fundamentos. Tradução de João Eduardo Nóbrega Tortello, Makron Books, 2001.
  11. Block, J. Effective JAVA, 3rd. edition, Pearson Education Inc., 2018.