Executando verificação de segurança...
4

Estrutura de Dados E Algoritimos

O que exatamente é Estrutura De Dados e Algoritimos?

Estou estudando Python e pela primeira vez me deparei com isso, não sei o que é, apenas sei que é complicado e que dizem que vale apena estudar.

Poderiam me informar o porque estudar esse conteudo? Segue abaixo o que vou estudar. Vale apena? Vai me ajudar como progamador?

RoadMaph

Carregando publicação patrocinada...
2

Opa, tudo beleza? Então, vou falar um um pouco sobre cada um.

Estrutura de dados, como o próprio nome sugere, são formas de se organizar e manipular os dados, essas diferentes formas são aplicadas dependendo do contexto (por exemplo, em determinado problema uma estrutura do tipo Fila atende melhor do que do tipo Pilha), cada um tem suas particularidades, além de que estão presentes em programas do cotidiano de um programador, como, por exemplo: Serviços de Mensageria como o Kafka (Fila), callstack do JS (Pilha), entre tantos outros.

Já os algoritmos, pode-se dizer de forma grosseira que são maneiras de trabalhar com as estruturas, por exemplo: algoritmos de busca e ordenação. Existem inúmeros cenários onde uma busca (ou ordenação) deve ser feita da forma mais rápida e performática possível, por isso, como programador, é importante ter um conhecimento prévio desses algoritmos. Um bom exemplo de aplicação de algoritmos são os aplicativos de mapas, onde eles calculam de maneira super rápida o melhor trajeto para determinado local, para isso são utilizados algoritmos para estruturas de grafos.

Sei que foi uma explicação bem superficial, mas espero que tenha sido claro e que tenha te dando um incentivo nesse ponto kkkk. É isso, tmj!

1

Cara muito obrigado, eu tava achando que era coisa para inteligencia artificial e ja ia pularkk. Quem diria que é algo extremamente importante, pelo que entendi do seu e de outros comentários é basicamente a base de um bom progamador.

1
1

Aproveitando, acho que deu pra ver como todo mundo acha que isso é importante, e é mesmo. Acho que pra você aprimorar mais ainda seus conhecimentos, vc pode escrever tutorias ou resumos do que você aprendeu sobre cada assunto. Pode ser pra postar por aqui mesmo um "diário de estudo em estrutura de dados", acho que vai agregar bastante valor.

1

Estrutura de Dados e algoritmos não é algo que se pergunte "se vale a pena" é matéria obrigatória para quem quer se tornar um bom programador.

Seguinte, em linguagens de alto nível como python3 // cpp algumas dessas estruturas já vem declaradas. Como no caso do Sorting e do Hash table(que você conhece como algoritmo).

Mas tem várias estruturas que podem otimizar ao maximo seu código que não foram declarados:
- Stack
- Linked List
- Queue
- Trees
- Heaps

Por exemplo, tu quer fazer o cadastro de 10.000 pessoas simultâneas no dia de pico de uma black friday, utilizando apenas async//await tu pode até achar uma solução temporária mas a mágica do sistema não quebrar seria alocar recursos na implementação de uma fila, onde um worker escreveria o usuário no banco de dados, enquanto outro worker colocaria mais pessoas na fila.

O mesmo vale para as outras estruturas

2

Atrelado a isso que o KitsuneSemCalda falou, também recomendo ao final do estudo das estruturas de dados que ele colocou, você fazer um estudo sobre complexidade assintótica e analisar os tempos de execução de cada estrutura, isso é bom para desenvolver um raciocínio crítico em relação a sua forma de escrever código e consequentemente irá melhorar sua escrita de código.

Suponha que você tem uma matriz de tamanho n para linhas e colunas e você deseja percorrer ela para fazer alguma operação, para isso terá que ser usado um for aninhando e isso tem uma complexidade assintótica, no pior caso, de O(n^2), nesse caso eu estou analisando o pior caso e pra isso uso a notação Big O (Limite Superior), mas existem outras notações como a Theta (Limite Restrito) e a Omega (Limite Inferior).

É algo um pouco difícil de entender, mas depois que entender vai te ajudar bastante principalmente em entrevistas de emprego no exterior, nunca participei de uma, mas já vi alguns vídeos no YouTube e vi que é algo que eles cobram muito isso de saber o tempo de execução de um algoritmo e como otimizá-lo pra que ele tenha uma complexidade assintótica melhor.

2

Um dos que eu recomendo dos vídeos de algoritmos e estrutura de dados que o @messiasolimpio citou são em ordem:

- https://www.youtube.com/watch?v=Gp2m8ZuXoPg&list=PLdsnXVqbHDUcQIuiH9b-i9A85H3A2ZW5W&index=6 : Hello World, Como você nunca viu. Entendendo C
- https://www.youtube.com/watch?v=YyWMN_0g3BQ&list=PLdsnXVqbHDUcQIuiH9b-i9A85H3A2ZW5W&index=7 : O que vem depois do Hello World! Consertando meu C
- https://www.youtube.com/watch?v=9GdesxWtOgs&list=PLdsnXVqbHDUcQIuiH9b-i9A85H3A2ZW5W&index=8 : Árvorés e estruturas de dados. O começo de tudo 

Essa sequencia de vídeos pertencem ao Fabio Akita mas ele é bem completinho nas noções básicas

1

Acho que saber isso é o que diferencia devs bons de devs ruins.

Todo programa precisa de estruturas de dados: Armazenar uma lista de usuários, uma lista de favoritos, um dicionário de valores etc. Mas, qual é a vantagem de cada tipo de estrutura e porquê escolher entre uma ou outra?

A estrutura certa depende do que você quer. As estruturas tendem a cumprir quatro objetivos:

  1. Acesso
  2. Gravação
  3. Busca
  4. Exclusão

Algumas são mais rápidas em uns pontos, outras em outros. Não existe uma estrutura de dados que é boa em todos os 4 pontos. Por isso é importante saber estrutura de dados. Em algum momento você precisará de uma estrutura que tenha acesso rápido e busca rápida, e não se importará com gravação e exclusão tão rápidos assim.

1

Quando for estudar algoritmos, dá uma olhada nesse site que recomendei nesse post. Me ajudou bastante a entender e visualizar do que se tratava cada estrutura de algoritmo! Boa sorte nos estudos!!

1

Isso é simplismente a base que todo bom programador deveria ter, em uma entrevista em uma big tech por exemplo, se você não souber isso, será descartado imediatamente

1

Cara que loucura, eu não sabia nem que isso existia. Já progamo em uma empresa, com python e django, tô aprimorando minha base. Vou estudar sobre!! Obrigado pelo aviso.

1

Sem problemas, hoje em dia é mais "atraente" estudar sobre frameworks e novas bibliotecas, porém estrutura de dados e algoritimos esta em baixa rsrs
Procure sobre Elemar JR, ele vende um curso sobre isso, mas tem muito material na internet/youtube