e fala pessoal sou alisson e esse é o canal programação dinâmica no vídeo de hoje eu vou responder uma pergunta que eu recebo com frequência nas redes sociais que como que você pode estudar e aprender melhor estrutura de dados e algoritmos além disso também vou dar uma breve motivação de por quê que esse conhecimento é tão relevante para sua vida enquanto profissional de software antes de começar gostaria de convidar você ainda não se inscreveu no canal se inscrever e não esquece de ativar o sininho para receber notificações sempre que em relação a um vídeo novo
se você já acompanha nosso trabalho há algum tempo considera apoiar o nosso canal como membro e tem acesso a nossa laboratório de experimentos além de outros benefícios exclusivos toda vamos começar a conversar um pouquinho sobre o porquê de se estudar a estrutura de dados e algoritmos essas duas disciplinas elas costumam ser ser dadas em cursos superiores das áreas de software e também de matemática não fosse matemática que são mais voltados para baixo computacional também é comum ver essas disciplinas é o pessoal que é mais autodidata acho que às vezes faça um pouco ao largo é
dela e aí e às vezes procurando um pouco depois como aprender mais algumas coisas específicas o que é muito bom muito positivo mas mesmas pessoas que têm a oportunidade de acesso um curso superior e são expostas essas disciplinas muitas vezes não tem a dimensão de como que esse conhecimento da agregar na vida delas então particularmente eu gostei muito dessas disciplinas e alguns cursos elas são ministradas de maneira conjunta né mas na minha graduação lá no instituto militar de engenharia eu tive primeiro estrutura de dados e depois algoritmos separados realmente mas de todo modo faz sentido
pensar nessas duas coisas em conjunto porque no fim das contas estão preocupadas com o mesmo problema que é como que a gente consegue resolver problemas computacionais de maneira eficiente e por eficiência que a gente não tá falando de economizar uma linha de trocar uma operação de potenciação por um deslocamento de beach esse tipo de coisa que às vezes passo pela cabeça de quem de quem tá começando a programar né de povo tentar economizar um negócio aqui fazendo programa em uma chavinha não sei que não não é esse tipo de coisa que a deficiência usar esse
tipo de prática nem a positiva do ponto de vista de jardim de software é porque atrapalha a legibilidade do programa mas elas estão preparados com eficiência na ordem de magnitude mesmo das operações assim uma coisa que pode fazer diferença de você conseguir resolver um problema e você não conseguir resolver tem que vejo problema não tempo de vida abri o que o ser humano então tem um vídeo que eu gravei aqui no canal que eu falo sobre problema da busca né eu pergunto assim quanto equivale uma busca eficiente naquele vídeo eu faço uma abordagem de busca
em que você levaria bilhões de passos para conseguir encontrar algum registro que você tá procurando e uma outra abordagem que você levaria centenas de passos tá então a diferença ele é muito brutal e ela depende da forma como você organiza sua solução mas que a mente do algoritmo que você escolhe para resolver o seu problema se você é uma pessoa que trabalha o deseja trabalhar desenvolvendo alta tecnologia né trabalhar realmente na fronteira tecnológica em termos de inovação você precisa estudar estruturas de dados e algoritmos para que você entenda os problemas classe o som e principalmente
é compreendo as técnicas na hora que você pode dispor para você poder escolher melhores abordagens para um problema sobre o outro não sabem que você vai ter que replementares algoritmos que a gente tá estudando aqui tá na verdade o ideal é que você consiga realmente é utilizar coisas prontas que já foram testados e estão funcionando de maneira bem eficiente mas você precisa saber ele meu escolher a coisa adequada para o problema adequado tá em termos de utilização de memória a utilização de capacidade computacional e segundo talvez você tenha que sim que é implementar uma parcela
daquele organismo tá uma ideia daquelas técnica do algoritmo daqueles problemas devo do problema específico que você tá lidando então eu já tive que implementar é tipo uma coisa parecida com busca binária para resolver um problema de computação gráfica tá então no outro domingo eu e não é à toa que essas vemos empresas de tecnologia como google facebook amazon e por aí vai tem seus processos seletivos um lápis para que você seja avaliado o quanto o conhecimento de soluções computacionais tá e por aí vai diversos tipos de algoritmos diversos tipos de formas e os três tem
a sua maneira de raciocinar em cima de problemas clássicos de computação mesmo do outro lado alguns profissionais que não está trabalhando necessariamente eu ir na fronteira tecnologia né há muitas demandas de coisas para se fazer que o que poderia gerar inovações em termos de produtos e serviços mas que estão mais na área de você realmente saber como utilizar determinado ferve o aqui né uma linguagem eu consegui fazer as coisas ficarem juntos para você construir um produto mas vejo para esses profissionais ter uma dimensão maior né de como que as coisas funcionam entender melhor os problemas
de computação vai mudar a forma como você enxerga a programação estruturas de dados e algoritmos para receber penas que para mim mais impactaram a forma como eu poderia enxergar o ato de programar mesmo tá o azul de rede de desenvolver soluções paga e nacionais você pode começar por exemplo aqui da mesma forma que assimila os clássicos de literatura e filosofia vão te dar repertório para melhor compreender situações na vida e poder refletir sobre coisas que no seu dia a dia assimila os algoritmos né e os problemas clássicos de computação também vão ampliar seu repertório e
permite que você enxergue e situações do seu dia a dia em conta desenvolvedor de uma maneira muito diferente bom passar desse preâmbulo da motivação vamos ao núcleo desse vídeo que é como que você pode aprender e desenvolver melhor seus técnicos e não tem mistério é você realmente praticar o máximo que você puder então primeiro tem uma etapa que você tem que conhecer nessa em conhecer o problema a chuteira de dados o algoritmo e aqui no canal a gente já tem vários vídeos a respeito disso tô na playlist de estrutura de dados você vai encontrar as
listas tá tanta luz terrogação sequência ao contabilista em cadeado que é bastante importante para você entender outras estruturas mais complexas lá na frente vai contar pilhas filas é bem clássicos também temos conteúdo sobre árvores que a gente entende como implementar uma árvore binária uma árvore binária de busca e aí é um posto clássico dessa artitude dados seria também como as árvores balanceadas e a geralmente escolhe uma delas para bordar porque não dá para estudar tudo em um semestre então ou você vai ver uma árvore avl ou uma árvore rubro-negra e podem falar também um pouquinho
sobre uma árvore b com o tipo de árvore especial que que você tem para armazenamento persistente geralmente têm questão de grafos né então é muito importante entender é pelo menos como é que você pode representar grafos e percorrer os gratos a mistura idade muito importante na computação tá e outra estrutura especiais como o hip para implementar lista de prioridade e também a tabela de restam diga que as estruturas de dados básicas né as clássicas que você deveria se preocupar entender primeiramente e aí tem uma etapa disposição né você entende é qual que é a ideia
a estrutura de dados você deve focar principalmente entender como que ela faz busca inserção e remoção de novos elementos né então entenda como é que é a complexidade das operações facções vantagens e desvantagens dela e você vai ter que implementar tá não tem para onde correr você vai precisar implementar estas estruturas para você realmente entender então quando você tiver implementando se fosse uma série de dificuldades ave e isso vai te fazer se o melhor programador tá se desenvolver melhor mesmo nessa dessa capacidade e até compreender melhor essa teoria que você já tinha sido exposto a
chegar nesse ponto aqui que eu gravo esses videos para vocês e eu recebo vários feedbacks muito legais as pessoas comentando que a explicação foi muito boa ou foi didática aqui que eu tô demonstrando conhecimento ali então para chegar nesse ponto eu tive que implementar muitas vezes as estruturas de dados então experimentei e realmente no meu curso na graduação que foi um curso que foi na linguagem c eu imprimi crescer quando eu tava aprendendo uma a outra linguagem objeto de você tá aprendendo a desenvolver para o oeste e eu te avisei como como motivação assim né
de algum problema para resolver com aquela linguagem é antes de fazer realmente o os apps eu te avisei é implementação de estruturas de dados tá então implementei a árvore binária objective-c em prometer mais dessas coisas agora eu tenho perguntado para vocês aqui em pai então tá gente eu não tenho tempo enfim perguntei várias vezes as estruturas para entender cada vez mais sobre elas como recomendação de material para estudar essa parte além dos vídeos aqui do canal eu deixaria o livro estruturas de dados e seus algoritmos aqui do jaime luiz com esse sobrenome que eu não
consigo pronunciar e também lilian markenzon tá então eu tenho esse livro nessa edição mesmo aqui essa capinha verde ele tá emprestado com meu irmão eu não te vou mostrar aqui no vídeo e boa parte das ideias que a presença aqui nos vídeos segue é a forma como esse livro apresenta tá bom para quem quiser de que o erro eu vou deixar os links de afiliados aqui na descrição do vídeo e aí se você tiver interesse realmente encontrados também pode ajudar um pouco aqui o canal passando a parte de algoritmos eu desliguei para você entender primeiramente
problemas de ordenação e busca tá são os programas mais clássicos e que são base de vários outros problemas dessa da computação e aí busca é um mar muito grande tá porque tem tanto a questão de fazer uma busca a gente futuras lineares ali né você poder fazer uma busca linear uma bruxa vinagre como as buscas estruturas como o ar luiz e gráficos que que você já vai acabar estudando como tiver tirando as estruturas de dados tá eu entender bem esse problema da busca e da ordenação vai ser um diferencial para você depois disso algumas outras
técnicas que deve prestar bastante atenção algumas delas você vai acabar utilizando letra de alguma gente dessa dos algoritmos né então por exemplo recursão né muitos algoritmos de árvore e até mesmo de ordenação vão utilizar a recursão tem a técnica de dividir para conquistar que a base do mogi sorte e também de outros algoritmos recursivos é uma coisa é relevante para você tem no seu repertório e depois disso tem uma série de algoritmos que são algarismos a utilização então tem os algoritmos gulosos tem os algoritmos e programação dinâmica então o nome do canal é o mesmo
nome de uma de uma técnica né de solução de problemas e eventualmente você pode chegar a estudar sobre o que que é um problema lp completo que é um tipo de problema muito mais complicado de ser resolvido é num tempo razoável aí você vai conseguir apenas é bordar heurísticas nebular ideias algumas técnicas de tentar encontrar uma solução alguém não se não garante que aquela solução realmente é melhor solução de todos e que essa parte precisa fazer um colete uso é recomendado os outros vírus primeiro deles é esse algoritmos aqui do papa dmytro é um livro
mais fino mais conciso é geralmente não aborda todas as coisas dadas em um curso de um semestre mas e a borda bastante coisa coisas até que ficam de fora e fica só um pouco mais avançado está tem começa falando um pouco sobre alguns algoritmos mais dispersos de falar inclusive sobre sobre o ritmo de euclides para calcular o máximo divisor comum e depois eu entro uma parte mais específica de grafos e isso serve para os algoritmos de otimização e o segundo livro é claro a conhecida como bíblia dos algoritmos não sei dizer que é o do
corre né então esse aqui é realmente um livro denso né um livro grande é tem bastante conteúdo as inclusive vai abordar várias estruturas de dados que a gente tá vendo aqui que eu citei e eu iva que também tem bastante rigor matemático então ele pode afastar o as pessoas e o primeiro momento tá porque ele vai realmente explicar sobre notação do a grande alguma coisa anotações que você pode utilizar para entender sobre a complexidade né o consumo de recursos aos mesmos e ele vai sempre tentar provar de uma maneira bem rigorosa né fazer uma análise
da lide por que que eu vou isso não funciona e de como que você estiver na complexidade esse tipo de coisa então se você não tiver com uma base mais sólida de entender matematicamente o que que é uma função por exemplo é uma das coisas que a gente conhecimentos principais aí você essa questão de função e também um pouco de combinatória e probabilidade pode ter um o lamenta havia uma dificuldade inicial ao consumir seu livro não pode ser um livro de segunda passagem de algumas consultas pontuais em algumas partes além dos livros há várias plataformas
gratuitas que você pode exercitar o seu pensamento computacional resolvendo o problema está e você tá algumas delas aqui infelizmente já estão todas em inglês mas eu pretendo explorar no nossos laboratórios vários exercícios vários tipos de problemas em uma série experimental chamada 10.000 horas de código então vou apresentar alguns problemas e resolver para os membros em linguagem de programação da aliados para gente poder experimentar algumas coisas diferentes lá no nosso laboratório se você pode também se tornar membro do nosso canal para usufruir e interagir com esse conteúdo da primeira delas coisa apresentar é o rake and
que tem vários problemas classificados por tipo de habilidade ou por linguagem de programação ao por nível de dificuldade enfim você pode entregar agir com ela de várias formas né pode vir aqui ó parte de algoritmos seu pai então programação funcional várias coisas que você pode a questão está na forma de desafios abrir tentando resolver a segunda é muito interessante ela chama cold ninguém que ela ela propõe para você desafios computacionais assim também só que na forma de jovens titãs em ação espaço em que você vê um editor de texto de um lado e um game
do outro tá ele tinha que propõe o problema e aí você codifica da solução para você manda rodar os testes os testes vir na forma de coisas ali dentro dos jogos é então tipo anime eu achei uma vontade de destruir esse tipo de coisa e você que solucionar o problema não não morrer basicamente ele vendo alguém e uma decepção e essa assim em português seria sites pode brasil que apresenta problemas similares aos que a gente encontra na maratona de programação né que é uma competição que os estudantes da área desenvolvimento de software podem participar e
é uma experiência bem bem interessante tá então fica aí a dica em algumas plataformas que você pode encontrar problemas para você se desafiar e também se afiar nesse contei olá pessoal esse vídeo acho que não foi aqui espero que eu tenho conseguido de motivar a estudar esse conteúdo que é transformador na vida de um profissional de desenvolvimento de software e eu também ter atendido você com algumas indicações úteis por sua vez todos é que ela perguntou daqui não é exaustivo né e a gente pode continuar se difusão aqui nos comentários quem tiver aí outras recomendações
de bom juízo de bons materiais para para se estudar é claro que você pode colocar nos comentários a gente vai trocando uma ideia tá certo se você gostou do vídeo não esqueça de deixar o seu like nem se inscrever aqui no canal para dar aquele apoio ao trabalho muito obrigado e até a próxima e aí e aí e aí [Música] e aí