Departamento de Informática (UM)

Página de Unidade Curricular 🇬🇧

DesignaçãoCódigoCursoRegimeRegente

Programação Imperativa

14301 [J302N5]

Licenciatura em Engenharia Informática [ENGINF]

S2

Manuel Alcino Pereira Cunha

Objetivos

Esta UC apresenta o paradigma imperativo da programação de computadores a alunos que já tiveram uma primeira abordagem (declarativa) à programação de computadores. Desta forma, muitos dos conceitos que são aqui abordados são-no com um maior ênfase nas características específicas de linguagens imperativas, dando particular importância ao modelo de memória subjacente.

Programa

1. Introdução ao paradigma imperativo da programação: estado e modelo de memória.
2. Memória automática: definição de funções e passagem de argumentos.
3. Definição de funções recursivas e iterativas envolvendo vetores (ordenação e procura).
4. Uso de memória dinâmica na definição de estruturas de dados recursivas.
5. Memória persistente: uso de ficheiros de acesso sequencial e não sequencial para garantir a persistência de dados.

Bibliografia

Kernigham, B. W., Ritchie, D. M. (1988). The C programming language (2nd ed.). Prentice Hall Software Series.

Donald E. Knuth. The Art of Computer Programming, Volume I: Fundamental Algorithms, 2nd Edition. Addison-Wesley, 1973.

Robert Sedgewick. Algorithms in C: parts 1-4, Fundamentals, Data Structures, Sorting, and Searching, third edition. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1997.

Resultados da aprendizagem

No fim da disciplina, o aluno deverá ser capaz de:
- Decompor um problema em sub-problemas com vista à sua resolução.
- Definir tipos de dados para a representação dos dados e resultados de um dado problema.
- Escrever funções e procedimentos (na linguagem C) para ordenar e pesquisar num vetor.
- Implementar estruturas de dados dinâmicas para organizar e aceder à informação de uma forma eficiente

Método de avaliação

A avaliação é feita por um teste final escrito e/ou exame de recurso. O acesso ao teste final é feito através da resposta a uma questão escolhida aleatoriamente de um conjunto de 50 questões que os alunos conhecem antecipadamente. Essas questões são uma parte do repositório de desafios de programação que estão disponibilizados no sistema de "online coding" referido acima.

Funcionamento

Turno: T 1; Docente: Manuel Alcino Pereira Cunha; Dep.: DI; Horas: 30.
Turno: TP 1; Docente: Manuel Alcino Pereira Cunha; Dep.: DI; Horas: 30.
Turno: T 2; Docente: José Bernardo Santos Monteiro Vieira Barros; Dep.: DI; Horas: 30.
Turno: TP 2; Docente: Manuel Alcino Pereira Cunha; Dep.: DI; Horas: 30.
Turno: TP 3; Docente: José Bernardo Santos Monteiro Vieira Barros; Dep.: DI; Horas: 30.
Turno: TP 4; Docente: Maria José Costa Ramos; Dep.: DI; Horas: 30.
Turno: TP 5; Docente: Manuel Quintas Monteiro Barros; Dep.: DI; Horas: 30.
Turno: TP 6; Docente: Nelson Miguel Oliveira Estevão; Dep.: DI; Horas: 30.
Turno: TP 7; Docente: Manuel Quintas Monteiro Barros; Dep.: DI; Horas: 30.
Turno: TP 8; Docente: Maria José Costa Ramos; Dep.: DI; Horas: 30.

[ Outras UCs do Departamento ]