Apresentação do livro Algoritmos e Estruturas de Dados 1

Apresentação do livro Algoritmos e Estruturas de Dados 1

O aprendizado de programação é um dos primeiros grandes desafios que estudantes enfrentam ao iniciar um curso de computação. Aprender a programar requer que estudantes não apenas aprendam uma série de comandos em uma linguagem de programação. É necessário também aprender a pensar computacionalmente para que saibam como expressar a solução de um problema de forma que um computador possa executar. Para nós, docentes, ensinar programação é um desafio constante, pois somos responsáveis por conduzir nossos alunos e alunas no aprendizado de conceitos e técnicas essenciais para o aproveitamento do seu curso e sua carreira — e nossos materiais e métodos didáticos fazem grande diferença nesse processo. Nesta matéria, os professores Castilho, Fabiano e Daniel, da Universidade Federal do Paraná, apresentam o livro “Algoritmos e Estruturas de Dados 1” para apoiar iniciantes no estudo de algoritmos e estruturas de dados. Além do livro, os autores também oferecem materiais didáticos como apoio docente, incluindo exercícios, vídeos e apresentações. O livro é resultado da ampla experiência dos autores no ensino de algoritmos e de sua determinação em oferecer conteúdos de qualidade de forma gratuita e acessível.
Boa leitura, e bom uso!
Luana Müller e Roberto Pereira

 

Por Marcos Castilho, Fabiano Silva e Daniel Weingaertner

Aprender a programar um computador não é fácil. O aprendiz se vê às voltas com uma grande quantidade de conceitos diferentes e misturados. Ao mesmo tempo em que conceitos abstratos como comandos de repetição e desvio são apresentados ainda é necessário conhecer detalhes de linguagens de programação tais como variáveis, tipos de dados, representação binária, dentre outros, além da rígida sintaxe das linguagens de programação.

Este é um livro sobre algoritmos e não é, definitivamente, um livro sobre linguagem de programação. A linguagem Pascal é utilizada de maneira simplificada, como ferramenta para o aprendizado dos conceitos de programação. A linguagem é importante para a prática e exercícios, mas os algoritmos são independentes dela.

Com este pensamento nós trabalhamos, por exemplo, com números inteiros em quase o livro todo, raramente fazendo uso de números reais, e somente nos capítulos finais falamos de caracteres (char) e string. Também apresentamos, na primeira parte, um único comando de repetição: a ideia é o aprendiz entender a noção de repetição e não todas as variações deste comando. Por outro lado, mostramos algoritmos de manipulação de imagens, que nada mais são do que manipulações de números inteiros!

Para aprender a programar é preciso programar! É como aprender a andar de bicicleta, não pode ser feito pela Internet. Tem que andar de bicicleta, cair, levantar, aprender a se equilibrar. Por este motivo, o livro é repleto de exercícios organizados em níveis de dificuldade, com uma grande preocupação com a qualidade dos enunciados. Um aprendiz que resolve muitos exercícios está apto a ir além.

O sequenciamento dos temas abordados permite um estudo bastante interessante sobre algoritmos, inclusive com noções básicas sobre complexidade de algoritmos. Assim, partimos do básico da lógica de programação, passamos por estruturas de dados elementares, discutimos levemente noções de complexidade, estudamos refinamentos sucessivos e chegamos ao final com noções de tipos abstratos de dados e a implementação de um jogo.

O método didático de apresentação envolve frequentemente problemas já resolvidos anteriormente, porém com o foco na novidade que cada capítulo apresenta, assim o estudante pode se concentrar no que é novo pois já conhece a solução anterior para o mesmo problema.

Este é um livro ao mesmo tempo simples e ambicioso, pois pretende preparar o estudante para cursos de algoritmos mais avançados.

Licença Creative Commons

O livro está publicado sob licença Creative Commons, portanto pode ser distribuído gratuitamente. A decisão de publicar assim é relacionada aos mesmos princípios do software livre. Não queremos amarras na livre distribuição do livro, a qualidade dele está nas críticas que a comunidade faz.

O livro nasceu no primeiro semestre de 2009, quando um dos autores tinha um aluno com deficiência visual total em sala de aula. Na época, procuramos algumas editoras, mas o máximo que conseguimos foi a liberação de poucos capítulos, ainda assim em formato PDF. Naquela época os leitores de tela não permitiam ler em formato PDF. O livro foi iniciado em LaTeX e os arquivos fonte eram passados ao aluno, que podia então ler o material. Ele foi aprovado com louvor! Hoje este aluno é formado e trabalha em uma das maiores empresas de informática do planeta, na Califórnia.

Qual o diferencial deste livro?

Existem excelentes livros de introdução à programação. O próprio livro contém citações de obras espetaculares e os discentes são estimulados a buscarem literatura complementar. Mas, como dissemos antes, muitos dos livros encontrados se preocupam demasiadamente com a linguagem de programação. Nós entendemos que a linguagem é uma ferramenta e não deve ser o foco principal. Por outro lado, existem obras que são baseadas em pseudocódigo, ou em fluxogramas. Também entendemos que não é uma boa solução. É preciso ver o resultado da programação num computador para aprender de maneira eficaz, e para isso deve-se usar uma linguagem.

Nós escolhemos a linguagem Pascal: é uma linguagem simples que tem um compilador “bem comportado” com mensagens de erro razoavelmente compreensíveis. É uma linguagem fortemente tipada que possui uma sintaxe relativamente simples. Por ser uma linguagem em desuso, os alunos rapidamente acabam estudando outras linguagens e desenvolvem a habilidade de se adaptar a novas linguagens e plataformas. Assim, fica explícita a independência entre os conceitos e estruturas fundamentais da linguagem usada para programar.

Material complementar

Livro disponível gratuitamente: o livro está disponível para download aqui.  Além do livro, produzimos uma série de video aulas, com os respectivos slides, que podem ser acessados no mesmo link.

Também indicamos material livre para aprendizado da linguagem Pascal, bem como para um bom uso do sistema operacional Linux. Todo este material está disponível para acesso gratuito.

Nossos estudantes praticam programação em uma ferramenta chamada FARMA-ALG, que teve origem baseada no sistema BOCA usado em competições. O FARMA-ALG procura ser um pouco mais didático e tem sido muito elogiado pelos discentes. Há um vídeo tutorial de acesso ao sistema. O FARMA-ALG é fruto de um projeto de pesquisa que originou um doutorado e alguns mestrados.

Atualmente o FARMA-ALG tem 12 listas contendo cerca de 10 exercícios cada e que cobrem todo o conteúdo do livro, a menos do último capítulo.

Os exercícios

Houve uma grande preocupação com os exercícios. Os enunciados foram redigidos de maneira a facilitar a compreensão. A ordem de dificuldade também foi cuidadosamente determinada: primeiro os mais fáceis e por último os mais difíceis. É preciso dizer que a própria sequência de capítulos do livro foi, em parte, baseada na dificuldade dos exercícios que estão ao final dos capítulos.

Comentários gerais dos autores

Neste livro materializamos o conteúdo ministrado nos últimos anos na disciplina Algoritmos e Estruturas de Dados I, ofertada para os cursos de Ciência da Computação e Informática Biomédica da Universidade Federal do Paraná.

O texto está dividido em duas partes bem definidas. A primeira parte contém os princípios básicos da construção de algoritmos elementares, incluindo a parte de subprogramas, passagem de parâmetros e variáveis locais e globais.

A segunda parte contém princípios de estruturas de dados básicas, onde se introduz a noção de vetores uni e multidimensionais, além dos registros. Nestas estruturas, praticamos a elaboração de algoritmos modulares e procuramos mostrar como construir programas pela abordagem de refinamentos sucessivos na qual um programa principal contém a solução em alto nível para o problema e as funções e procedimentos são detalhadas na medida em que são necessárias.

Alguns algoritmos importantes são estudados em suas versões básicas. Noções de complexidade de algoritmos são mencionadas, ainda que de modo informal, pois isto é conteúdo de períodos mais avançados. Contudo, é importante ao aprendiz ter noção clara da diferença de custo entre diferentes algoritmos que resolvem o mesmo problema. Também apresentamos em caráter introdutório o conceito de tipos abstratos de dados.

Finalmente, oferecemos um desafio aos alunos. O objetivo é mostrar aplicações interessantes para os conceitos que eles já dominam. Normalmente, trabalhamos em sala de aula o desenvolvimento de um programa que tem sido a construção de um jogo simples que pode ser implementado em uma estrutura de matriz usando conceitos de tipos abstratos de dados. A ideia é que eles possam fazer um programa mais extenso para treinarem a construção de programas modulares e desenvolvimento top down.

 

Referência

CASTILHO, M.A.; SILVA, F.; WEINGAERTNER, D. Algoritmos e Estruturas de Dados 1. Universidade Federal do Paraná. ISBN: 978-65-86233-62-9. 345p. 2020.

Os autores

Marcos Alexandre Castilho é Professor Titular da Universidade Federal do Paraná. É Bacharel em Matemática pela Universidade Estadual Paulista Júlio de Mesquita Filho (1987), mestre em Ciência da Computação pela Universidade Federal de Minas Gerais (1991) e doutor em Informática pela Université de Toulouse III (Paul Sabatier) (1998).

 

Fabiano Silva é Professor Associado da Universidade Federal do Paraná. É bacharel em Informática pela Universidade Federal do Paraná (1994), mestre em Informática pela Universidade Federal do Paraná (2000) e doutor em Engenharia Elétrica e Informática Industrial pela Universidade Tecnológica Federal do Paraná (2005).

 

Daniel Weingaertner é Professor Associado da Universidade Federal do Paraná. É bacharel em Informática pela Universidade Federal do Paraná (1999), mestre em Engenharia Elétrica e Computação pela Universidade Estadual de Campinas (2003) e doutor em Saúde da Criança e do Adolescente – Informática Médica pela Universidade Federal do Paraná (2007).

 

Como citar esse artigo:
Castilho, M. A., Silva, F., Weingaertner, D., 2020. Apresentação do livro Algoritmos e Estruturas de Dados 1. SBC Horizontes. ISSN: 2175-9235. Disponível em: http://horizontes.sbc.org.br/index.php/2020/12/apresentacao-do-livro-algoritmos-e-estruturas-de-dados-1/

Compartilhe: