Disciplina
Linguagens de Programação
Área
Área Científica de Metodologia e Tecnologias da Programação > 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