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

  1. Introduction to the imperative programming paradigm: state and memory model
  2. Automatic memory: definition of functions and argument passing mechanisms
  3. Recursive and iterative definition of functions over arrays (search and sort)
  4. Dynamic memory (heap). Definition of recursive data types (lists and trees)
  5. 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.

Atualizado: