Fiz a disciplina de Algoritmos e Estruturas de Dados com o prof. Paulo Feofiloff durante a graduação na Poli – é, já faz um bom tempo… Foi nessa disciplina que realmente aprendi a programar. Mas não foi só isso: aprendi a ensinar durante essa disciplina. Tive ótimos professores na graduação, mas o prof. Feofiloff foi o melhor deles. Ele era dedicado: quase toda aula tinha exercícios e ele os corrigia invariavelmente para a aula seguinte. Ele era objetivo: a aula não tinha enrolação e o conteúdo era em um nível adequado para a sala. Ele era sistemático: o material da aula estava disponível no site dele e a aula seguia o planejamento. Ele era acessível e interessado: ele se esforçava ao máximo para responder todas as perguntas, seja durante a aula ou após ela. Ele era rígido: as correções eram duras, mas honestas. Só não me lembro de ele ser engraçado, mas a minha memória pode estar me enganando…
Por tudo isso, eu fiz questão de ler o livro dele: “Algoritmos em linguagem C” (Campus/Elsevier, 2009). Comprei logo quando foi lançado, mas só agora tive tempo e motivação de lê-lo por completo. E o livro me lembra bastante a aula dele – até pelo conteúdo. É um ótimo livro sobre o tema, direto e objetivo.
A parte matemática envolvida é abstraída, o que torna o livro bem leve. Os exercícios são muito bons e bem planejados – se você quiser entender o conteúdo, os exercícios tem que ser feitos. Considero a sequência de apresentação do conteúdo mais natural (parecida com a 3ª edição do Sedgewick). Primeiro o livro apresenta algumas estruturas de dados básicas (vetor, lista e pilha), o que reforça o conhecimento de programação. Depois disso são apresentados os algoritmos de ordenação e, por fim, árvores (diferentemente do Sedgewick). A busca de palavras em um texto me pareceu um pouco perdida na sequência, mas tudo bem – lembro que foi um projeto durante a disciplina!
Pessoalmente acho que alguns algoritmos poderiam ter uma explicação mais detalhada – às vezes se perde muito tempo para entender o que está acontecendo. Um outro problema é o nome pouco sugestivo de algumas variáveis. Por exemplo, usa-se “r” ao invés de “raiz”, no mergesort usa-se “p” ao invés de “início” e no quicksort usa-se “c” ao invés de “pivô”. Isso dificulta o entendimento do algoritmo e, mais que isso, motiva o aluno/leitor a fazer o mesmo. Curiosamente isso é uma prática comum em livros desse assunto, como os do Cormen et al. e do Sedgewick (na 4ª edição melhorou um pouco)…
Em resumo, é um ótimo livro. Recomendo para quem quiser aprender algoritmos básicos em C, sem se preocupar com análise de algoritmos e outros detalhes matemáticos.