Olá, pessoal! Neste artigo vou abordar um tópico relacionado à programação que pouca gente aborda: a visualização de algoritmos. Este assunto é importante, pois ele pode ajudar a compreensão e o entendimento de novos algoritmos por quem está começando a aprendê-los e sente dificuldade de compreender como certos algoritmos funcionam. Além disso, a visualização de algoritmos pode agir como um ótimo motivador para o aprendizado.
Antes de começar a falar sobre o assunto do artigo, gostaria de aproveitar esta oportunidade e divulgar um curso online que lancei recentemente pelo iMastersPro. É o curso básico de lógica de programação voltado para o ensino das habilidades necessárias para quem quer se tornar um desenvolvedor. Acredito que muitos leitores do iMasters já possuem estas habilidades (definições de algoritmos, estruturas de controle, pseudocódigo, etc), contudo, a cada dia novas pessoas estão entrando na área, querendo aprender a programar. Este conteúdo é para elas, pois a linguagem utilizada no curso é simples e o conteúdo não se prende a detalhes de nenhuma linguagem de programação específica. Destaco também que este é um curso introdutório e que geralmente é recomendado como pré-requisito para outros cursos.
Voltando a falar sobre o tema do artigo, quando estamos aprendendo novos algoritmos geralmente passamos por algumas fases importantes. É comum começar com o correto entendimento do problema que o algoritmo se propõe a resolver. Neste ponto já começamos a compreender melhor o contexto e nos acostumar com certas terminologias, conceitos, métricas e algumas informações que vão nos ajudar a criar as variáveis, a lógica do algoritmo e como tratar as entradas e saídas.
A apresentação do algoritmo em si pode ser realizada de diversas maneiras. Alguns professores optam por apresentar diretamente uma fórmula matemática. Por exemplo, o algoritmo de mineração de dados utilizado para classificar dados em clusters k means pode ser apresentado como a fórmula abaixo.
Outra representação comum é apresentar o algoritmo em pseudo código, como o exemplo abaixo que descreve o mesmo algoritmo k-means.
Estas duas representações são relativamente abstratas e alguns alunos, especialmente aqueles que preferem informações visuais, podem ter dificuldade para compreensão. Nestes casos é comum apresentar alguns passos de execução de um algoritmo como imagem, como a figura abaixo que mostra o algoritmo Apriori para geração de regras de associação.
Outro recursos que vem se tornando muito interessante é o uso de animações no formato GIF animado para apresentar certos passos de execução do algoritmo. Sim, elas podem ser utilizadas para fins didáticos além de representar sentimentos de situações, comentários sarcárticos ou poses de gatos.
Apesar de serem muito interessantes, elas se baseiam em uma representação visual de um exemplo e de como apenas certos passos do algoritmo vão agir sobre o que está armazenado nas estruturas de dados empregadas. Abaixo apresento alguns bons exemplos de gifs animados que podem auxiliam muito quem está aprendendo um novo algoritmo.
Outra abordagem é tentar alguma representação física do algoritmo, tal como uma dança ou mesmo algum tipo de jogo onde pessoas representam certas partes da lógica envolvida no algoritmo. Os vídeos abaixo mostram exemplos desta técnica que geralmente é aplicada para ensinar algoritmos básicos para crianças ou pessoas com pouco conhecimento e experiência em programação.
Seguindo pela linha artística, o conceito de Algorithmic Art aborda a geração de arte através de algoritmos. Esta ideia não é muito útil para o ensino/aprendizado do funcionamento de algoritmos, porém pode ser utilizada como inspiração. Sem contar que o resultado é visualmente interessante. Abaixo são mostrandos alguns exemplos de Algorithmic Art.
Há também exemplos de uso de algoritmos na arquitetura e na música.
A exploração de algoritmos para visualização de dados também é algo que vem ganhando muito destaque altualmente na área artística. Um exemplo é a exposião de arte que contém apenas obras geradas a partir da utilização do algoritmo que gera treemaps.
De qualquer maneira, quem está começando a aprender o algoritmo e não possui algum contato com o contexto incluindo detalhes do problema, lógica, passos da solução, variáveis, entradas e saídas vai encontrar alguma dificuldade quando se deparar com qualquer uma destas formas didáticas de se apresentar um novo algoritmo e também algum programa, isto é, a implementação do algoritmo em alguma linguagem de programação. Desde modo, procurar outras maneiras de visualizar um algoritmo pode servalgo motivador, interessante e útil, especialmente entre pessoas que estão começando a programar.