Algoritmos e Estruturas de Dados
Modo escuroModo escuroModo escuroPágina inicial

Introdução

Por que estudar algoritmos e estruturas de dados?

Algoritmos e estruturas de dados (doravante AEDs) são conceitos fundamentais para o entendimento das ciência da computação, a compreensão desses dois conceitos servirá como uma base sobre a qual muitos outros assuntos serão desenvolvidos. Portanto, se essa base estiver sólida, posteriormente será mais fácil entender assuntos mais complexos. É comum que os estudantes inicialmente evitam estudar AEDs, por vezes, por acharem o assunto muito complexo ou por acreditarem que terá pouca ou nenhuma aplicação para a sua vida cotidiana/profissional. Com o tempo, essa percepção inicial não se sustenta, dada a importância do assunto não somente para o estudo, mas também na prática profissional do futuro desenvolvedor. O domínio de AEDs tem forte influência na capacidade de resolver problemas recorrentes de programação, uma vez que sua principal função é a estruturação do software de forma a desempenhar eficientemente as mais diversas tarefas computacionais.


Pra que estruturar nossas tarefas?

Para compreender melhor a necessidade de AEDs, vamos nos afastar brevemente do contexto computacional através de uma simples analogia, analise a seguinte situação: você vai a um restaurante com a sua família, vocês se sentam em uma mesa e pedem churrasco, arroz e feijão. Por acaso, esse restaurante funciona de maneira desestruturada, os funcionários não ordenam cronologicamente a realização dos pedidos, e não organizam os pedidos em blocos únicos de informação, a cozinha apenas recebe notas do que devem preparar e os garçons umas outras notas, que dizem para onde devem levar a comida já preparada. Dessa forma, sob protesto de outros clientes que pediram antes de vocês, após 10 minutos vocês são servidos com o feijão, passados 10 minutos adicionais chega o arroz, vocês estranham, mas como a fome aperta, começam a comer assim mesmo. Após outros 20 minutos chega o churrasco, mas todos já perderam a fome, por descontentamento e por terem se saciado apenas com arroz e feijão (que por sinal estavam uma delícia). Essa experiência gastronômica te dá uma má impressão sobre esse restaurante (independentemente da qualidade e sabor da comida servida), pois a falta de organização transformou sua refeição em um momento aquém das expectativas. Pensando como desenvolvedores de soluções, como poderíamos resolver o principal problema desse restaurante? A desorganização do estabelecimento em questão pode ser resolvida de forma simples: num primeiro momento, o pedido deve ser realizado anotando todos os itens desse pedido em uma lista, em seguida, o pedido deve ser colocado em uma fila junto com os demais pedidos, para que a cozinha o prepare na ordem em que foi pedido (evitando assim injustiças entre os clientes). Tomando essas duas medidas, utilizando uma lista de itens pedidos e uma fila de clientes, o restaurante se tornará mais eficaz e eficiente, melhor utilizando os escassos recursos de tempo, produtos, pessoal, etc. e obtendo renome não somente pela boa comida, mas pelo bom atendimento. Se você entendeu bem, agora deve estar se perguntando “mas o que isso tem a ver com algoritmos e estruturas de dados”? Perceba que sequenciamos as atividades envolvidas na tarefa, e utilizamos listas e uma fila para auxiliar nesse sequenciamento. É justamente isso o que algoritmos fazem (sequenciam operações para executar uma tarefa), assim como as estruturas de dados (organizam os dados para auxiliar as tarefas). Se esse exemplo parece muito óbvio, é essa a intenção, tornar óbvia a necessidade de utilizarmos algoritmos e estruturas de dados para realizar nossas tarefas, desde as mais básicas até as mais complexas.