Linguagens de Programação
Código: 21077
Departamento: DCET
ECTS: 6
Área científica: Engenharia Informática
Total de horas trabalho: 156
Total de horas de contacto: 26

Mais do que o estudo de uma única linguagem de programação, a cadeira de Linguagens de Programação da Universidade Aberta vai-se centrar sobre o estudo comparado dos diversos paradigmas e características das linguagens de programação. Assim os alunos vão conhecer os diversos conceitos e técnicas de programação associados aos principais tipos de linguagens de programação (nomeadamente linguagens imperativas, linguagens funcionais, linguagens orientadas por objetos e linguagens lógicas).

1. Paradigmas
2. O'Caml
3. Prolog
4. Java

Ao concluir esta unidade curricular o aluno deverá estar capaz de:
Reconhecer a importância dos diferentes paradigmas de programação, nomeadamente, os de programação orientada por objetos, programação em lógica e programação funcional.
Descrever, em termos sintáticos, semânticos e funcionais, as principais características das linguagens associadas a cada um dos paradigmas
Aplicar as linguagem Java, Prolog e O’Caml na resolução concreta de problemas de pequena e média dimensão.

Paradigmas de programação. Programação orientada por objetos. Programação em lógica. Programação funcional.
Estudo da linguagem Java. Tipos. Assinaturas, protocolos e objectos. Classes. Interfaces. Herança. Classes abstratas. Excepções. Input/Output. Streams.. Packages e construtores.
Estudo da linguagem Prolog. Factos e regras. Cláusulas de Horn. Programas e perguntas. Semântica declarativa e operacional. Mecanismo de retrocesso (backtracking). Programação de predicados sobre variáveis simples e sobre listas.
Estudo da linguagem OCaml. Funções como "valores de primeira classe". Tipos básicos e estruturados. Sistema de tipos e inferência de tipos. Funções monomórficas e polimórficas. Formas “curried” e não-“curried” de funções com múltiplos parâmetros. Aplicação parcial. Padrões. Método indutivo. Listas. Tipos produto e soma. Árvores binárias.
 

F. Mário Martins, Java 8 - POO + Construções Funcionais, 2017, FCA
Leon Sterling and Ehud Shapiro, The Art of Prolog (2nd Edition), MIT Press, 1994
Jason Hickey, "Introduction to the Objective Caml Programming Language", 2004

E-learning.

O regime de avaliação preferencial é o de avaliação contínua, constituída pela realização de 2/3 e-folios (trabalhos escritos em formato digital), ao longo do semestre letivo, e de um momento final de avaliação presencial (p-fólio), a ter lugar no final do semestre, com peso de, respetivamente, 40% e 60% na classificação final. Os estudantes podem, no entanto, em devido tempo, optar um único momento presencial de avaliação, realizando, então uma prova de Avaliação Final (exame) com o peso de 100%.