Esta obra tem como principal objectivo fornecer competências sólidas no desenvolvimento de programas de média e elevada complexidade. Assim, introduz uma metodologia que dá particular ênfase à decomposição funcional das soluções, através da implementação de tipos abstractos de dados. Outro objectivo principal consiste na aprendizagem de técnicas mais avançadas de análise da solução de problemas, como sejam, as soluções recursivas. Nesse sentido, são estudados aspectos relacionados com a eficiência das soluções.
Especificamente, pretende-se atingir os seguintes objectivos:
O estudo de algoritmos recursivos, como alternativa à decomposição hierárquica das soluções, e a comparação com os algoritmos repetitivos equivalentes;
A gestão da memória dinâmica e o estudo de estruturas de dados dinâmicas, nomeadamente das listas (lists) e das árvores (trees);
O estudo do paradigma da programação modular, que assenta na implementação de tipos abstractos de dados, começando pelos tipos de dados que modelam elementos matemáticos, como, por exemplo, números complexos, vectores, polinómios, matrizes e conjuntos;
O estudo dos diferentes tipos de memórias, nomeadamente da memória de acesso aleatório (RAM), da memória fila (Queue), da memória pilha (Stack) e da memória associativa (CAM), e dos algoritmos associados para pesquisa, colocação e remoção de informação;
O estudo da implementação de tipos abstractos de dados especializados, nomeadamente da fila com prioridade (Priority Queue) e do grafo (Graph).
Público Alvo
Este livro é dirigido aos estudantes de disciplinas avançadas de programação, que frequentam licenciaturas que exijam conceitos sólidos de programação, de um conhecimento profundo de algoritmos e de estruturas de dados complexas e da implementação de tipos abstractos de dados na linguagem C.