Disciplina

Área

Área Científica de Metodologia e Tecnologias da Programação > Linguagens de Programação

Activa nos planos curriculares

MEIC-T 2021 > MEIC-T 2021 > 2º Ciclo > Área Principal > Agrupamentos > Algoritmos e Aplicações > Linguagens de Programação

MEIC-T 2015 > MEIC-T 2015 > 2º Ciclo > Agrupamentos > Algoritmos e Programação > Linguagens de Programação

MEIC-A 2021 > MEIC-A 2021 > 2º Ciclo > Area Principal > Agrupamentos > Algoritmos e Aplicações > Linguagens de Programação

MEIC-A 2015 > MEIC-A 2015 > 2º Ciclo > Agrupamentos > Algoritmos e Programação > Linguagens de Programação

Nível

Dois testes ou exame, apresentação opcional sobre uma linguagem.

Tipo

Não Estruturante

Regime

Semestral

Carga Horária

1º Semestre

3.0 h/semana

1.5 h/semana

147.0 h/semestre

Objectivos

Compreensão da história e evolução das linguagens e paradigmas de programação. Domínio das conceitos fundamentais de ligação, âmbito, duração, tipo, fluxo de controle, abstração de dados, abstração de controle, e excepções. Avaliação das semelhanças e diferenças entre as várias linguagens de programação. Compreensão das alternativas no desenho e implementação de linguagens, por exemplo, execução por compilação vs interpretação, âmbito léxico vs dinâmico, tipificação estática vs dinâmica, modelo de referências vs modelo de valores, memória gerida manualmente vs automaticamente, etc. Compreensão das diferenças entre os paradigmas imperativo, funcional, lógico e orientado a objectos.

Programa

História das linguagens de programação. Compilação e Interpretação. Ligação, âmbito e duração. Âmbito léxico e dinâmico. Módulos. Alocação de memória. Fluxo de controle. Precedência e associatividade. Atribuição e inicialização. Sequenciação e selecção. Iteração. Ciclos enumerados e ciclos lógicos. Ciclos combinados. Iteradores internos e externos. Tipos. Equivalência, compatibilidade e inferência de tipos. Linguagens fortemente/fracamente tipificadas e dinamicamente/estaticamente tipificadas. Conversões de tipos. Tipos recursivos. Ponteiros. Abstração de controle. Subrotinas. Passagem de parâmetros. Funções de ordem superior. Excepções. Abstração de dados e orientação a objectos. Ligação dinâmica. Modelo de referências e modelo de valores. Herança simples e herança múltipla. Programação genérica. Programação funcional, história e fundamentos teóricos. Modelo de avaliação. Programação lógica, história e fundamentos teóricos, resolução e unificação. Linguagens de scripting. Domínios de aplicação. Casos de estudo.

Metodologia de avaliação

Dois testes ou exame, apresentação opcional sobre uma linguagem.

Pré-requisitos

Componente Laboratorial

Princípios Éticos

Componente de Programação e Computação

Componente de Competências Transversais

Bibliografia

Principal

Programming Language Pragmatics

Michael L. Scott

2009

Morgan Kaufmann Publishers