Programação Imperativa
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. Assim, 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
Programa
- Introduction to the imperative programming paradigm: state and memory model
- Automatic memory: definition of functions and argument passing mechanisms
- Recursive and iterative definition of functions over arrays (search and sort)
- Dynamic memory (heap). Definition of recursive data types (lists and trees)
- Persistent memory: use of sequential and random access files to preserve (parts of) the state of a program.
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.