Junto com algoritmos, estruturas de dados são um tema fundamental para a formação de qualquer desenvolvedor, independente da linguagem.
Nessa série, vou discutir algumas estruturas de dados, e mostrar as implementações disponibilizadas em .NET e seu uso de maneira prática.
Mas antes de começarmos com tudo, peço para que leia bem o tópico a seguir. Pode ser útil!
O que muitos desenvolvedores pensam de algoritmos e estruturas de dados
Já escutei muitos desenvolvedores perguntando: porque tenho que estudar todas essas coisas complicadas? Eu nunca vou utilizá-las no mundo real! Pode não ser o seu caso, mas arrisco dizer que as chances são grandes de que você tenha escutado algo desse tipo na universidade ou ambiente de trabalho.
É muito comum desenvolvedores de todos os níveis evitarem estudar sobre algoritmos e estruturas de dados, já que eles são muito complicados e não vão usar em seus trabalhos. Mas a grande questão é, utilizamos eles em nosso dia a dia, mesmo sem notar.
Um grande exemplo é o de busca em uma agenda telefônica física. Temos o nome da empresa, e então buscamos já a partir do meio da agenda. Se na página atual tiver empresas começando com letra maior do que o que buscamos, devemos buscar na parte anterior. Se não, buscamos na parte posterior da agenda. Essa pessoa acabou de usar o algoritmo de busca binária (Binary Search) sem nem saber!
Além desse exemplo, existem muitos outros que usamos no dia a dia e que mostram que ter essas habilidades não são úteis somente em uma entrevista de emprego. Eles ajudam a resolver problemas do mundo real.
Comecei com isso porque é um tema que gosto, mas que noto que muitos desenvolvedores negligenciam. Mas tem uma razão pela qual se recomenda se começar os estudos em programação por algoritmos e estruturas de dados. E eu já vi muitos exemplos de pessoas que não conseguiam resolver problemas simples de lógica em código por não conhecerem algoritmos ou estruturas de dados adequados para o problema em mãos.
O que são estruturas de dados?
Estruturas de dados oferecem uma maneira específica de se armazenar e organizar dados em um computador. Através do seu uso é possível resolver problemas do mundo real, como:
- Gerenciar uma fila de atendimento
- Defazer a última alteração em um artigo
Esses problemas podem ser resolvidos com estruturas de dados, como as a seguir:
- Fila
- Pilha
Vou detalhar cada uma delas e mostrar um exemplo real de seu uso com C# e .NET.
Fila
Uma fila implementa uma ordenação de tipo FIFO (First-In, First-Out), onde o primeiro valor adicionado será o primeiro a ser removido. Basicamente, é a mesma coisa que no mundo real! Os primeiros que chegam para serem atendidos, serão atendidos primeiro, por exemplo. Em .NET, a classe que implementa essa estrutura de dados é a Queue e Queue.
Operações
As principais operações de uma fila são:
- Enqueue: realiza a inserção de um valor.
- Peek: retorna o próximo valor, mas não remove.
- Dequeue: retorna o próximo valor, e remove.
Exemplo
Abaixo eu mostro um exemplo de seu uso. A idéia é permitir gerenciar senhas geradas para fila de atendimento
Com a classe que utiliza a estrutura de dados fila para armazenar as senhas geradas para atendimento.
Após executar o código, o resultado é mostrado logo abaixo.
Pilha
Uma pilha implementa uma ordenação de tipo LIFO (Last-In, First-Out), onde o último valor adicionado será o primeiro a ser removido. Um exemplo do mundo real é o de pilha de pratos para lavar, onde o que estiver no topo (último empilhado) será o primeiro a ser lavado. Em .NET, a classe que implementa essa estrutura de dados é a Stack e Stack.
Operações
- Push: realiza a inserção de um valor.
- Peek: retorna o próximo valor, mas não o remove da pilha.
- Pop: retorna o próximo valor e remove da pilha.
Exemplo
Abaixo eu mostro um exemplo de seu uso. A idéia é permitir desfazer as alterações feitas em um artigo de blog.
Com a classe que utiliza a estrutura de dados pilha para armazenar as alterações de algum contexto, basta no contexto que preferir.
Após executar o código, o resultado é mostrado logo abaixo.
Quer alavancar sua carreira como Desenvolvedor(a) .NET?
Além de Desenvolvedor .NET Sênior, eu sou instrutor de mais de 700 alunos e também tenho dezenas de mentorados.
Conheça o Método .NET Direto ao Ponto, minha plataforma com mais de 800 videoaulas, com cursos cobrindo temas relacionados a linguagem C# e Programação Orientada a Objetos, APIs REST com ASP NET Core, Microsserviços com ASP NET Core, HTML, CSS e JavaScript, Desenvolvimento Front-end com Angular, Desenvolvimento Front-end com React, JavaScript Intermediário, TypeScript, Formação Arquitetura de Software, Microsoft Azure, Agile, SQL, e muito mais.
Inclui comunidade de centenas de alunos, suporte por ela, plataforma e e-mail, atualizações regulares e muito mais.
Clique aqui para ter mais informações e garantir sua vaga
Conclusão
Foi abordado neste artigo a importância do estudo de algoritmos e estruturas de dados, além de apresentadas duas estruturas de dados: fila e pilha. Para cada uma foram apresentados os principais conceitos, e um exemplo prático de seu uso com a plataforma .NET e C#.
Dev .NET Sênior com experiências para Irlanda e Estados Unidos, 2x Microsoft MVP, 9x Microsoft Certified, MBA em Arquitetura de Soluções, Fundador e Instrutor LuisDev Treinamentos,