Algoritmos Swift: fundamentos práticos para codar rápido

Algoritmos Swift: fundamentos práticos para codar rápido

Algoritmos: visão prática e fundamentos

Introdução

Algoritmo. Esse termo se popularizou bastante com as redes sociais.

Algoritmo do Instagram, algoritmo do YouTube, afinal, tudo é culpa do algoritmo que decide exatamente o que vai aparecer, que tipo de conteúdo vai aparecer na sua tela ou no seu celular, não é mesmo?

Mas afinal, o que são algoritmos?

Nesse vídeo aqui, a gente vai entender de forma bem prática o que são, na verdade, algoritmos e ver alguns tipos de algoritmos que são utilizados na resolução de problemas.

Esse é um conhecimento fundamental se você é programador e se você não é programador, mas gosta de tecnologia, te convido a assistir esse vídeo porque eu tenho certeza que vai ser esclarecedor.

Bora pro vídeo?

Apresentação do canal e objetivo

Olá, pessoal! Bora pra mais um vídeo. Eu sou a Karol Atequita. Seja bem-vindo ao meu canal, Atequita Dev.

Esse é um canal de tecnologia que tem muito conteúdo que vai te ajudar na sua jornada como programador.

E se você não é programador, muito conteúdo legal sobre tecnologia que você vai encontrar aqui.

Seja muito bem-vindo ao meu canal. Eu sempre respondo os comentários de vocês, então se você tem alguma recomendação, se você tem alguma sugestão, alguma dúvida, não deixe de comentar porque eu sempre escolho um comentário pra ler no final do vídeo.

Todo mundo que já é a raiz do canal aqui já sabe. Se você gostar desse conteúdo, não esquece de interagir porque assim você tá falando pro algoritmo do YouTube que esse conteúdo aqui é relevante, né?

Algoritmos é o que a gente vai falar aqui no vídeo de hoje.

Recentemente eu fiz um vídeo sobre lógica da programação, um vídeo introdutório e rápido de 10 minutos explicando conceitos básicos de lógica da programação.

E como a ideia do vídeo era ser realmente um conteúdo rápido, eu acabei dando uma pincelada ali em algoritmos.

Então a ideia é voltar um pouco nesse tópico e aprofundar um pouquinho mais, mostrando exemplos práticos de código mesmo, pra que você entenda melhor esse conceito.

Definitivamente esse é um tema fundamental, por isso merecia um vídeo dedicado pra isso, porque faz parte da base.

Aquilo que a gente chama da base que todo programador deveria saber.

E novamente pra esse conteúdo aqui eu conto com o apoio da escola DNC, que tem uma metodologia focada justamente em quê?

Na base. Sem pular etapas, sem fórmula mágica.

Não é um curso, é uma formação completa mesmo que vai te dar todo o embasamento em ciências da computação muito antes de te ensinar conhecimentos ali práticos de mercado.

Pra que você seja um programador que usa as ferramentas a seu favor e não seja refém delas.

Pra que você seja um profissional que vai entregar o que o mercado pede, mas que vai conseguir sempre evoluir e aprender coisas novas porque você tem uma base sólida.

E o bacana é que esse mês a escola DNC tá com uma oferta de virada de ano pra que você não adie os seus objetivos profissionais.

Pra saber mais sobre a formação em tecnologia da escola DNC, é só acessar o link na descrição desse vídeo.

Você com certeza já ouviu falar que programadores são na verdade resolvedores de problemas.

Isso mesmo, a gente resolve problemas criando soluções utilizando a tecnologia a nosso favor.

E pra que a gente possa efetivamente resolver esses problemas, a gente vai basicamente escrever soluções pra máquina.

Pra que a máquina nos ajude ali a resolver esses problemas.

Quando a gente fala em fornecer instruções pra máquina, a gente tá falando em codificar.

Utilizar a linguagem de programação pra poder comunicar com essa máquina.

E quando a gente fala em instruções, a gente tá justamente falando de algoritmos.

O que é um algoritmo?

O algoritmo é basicamente uma sequência de instruções pra que a gente possa resolver um problema ou realizar uma tarefa de forma eficiente.

Só aí já deu pra entender o quanto os algoritmos são importantes.

Porque eles fazem parte da base, né?

A base de resolução de problemas.

Pra que a gente consiga dar instruções, pra que a gente consiga estruturar as nossas instruções.

E resolver esses problemas.

Algoritmo como comparação de instruções

Nesse vídeo que eu fiz, falando sobre conceitos básicos de lógica da programação, eu cito justamente que o algoritmo parece muito com um manual de instrução.

Com certeza você já comprou alguma coisa na internet que você precisou montar essa coisa. Ou uma cadeira, um objeto, que seja. Que você precisou seguir umas instruções pra que aquilo seja montado. Ou basicamente seguir instruções pra que você consiga fazer aquilo funcionar.

E é justamente por isso que eu gosto de comparar o manual de instruções com o algoritmo. Porque você tem instruções que são sequenciadas. Então você tem uma ordem pra seguir os passos certinhos. Pra que você consiga concluir aquela tarefa. Por exemplo, montar essa cadeira gamer aqui. Então tem todos os passos. Quais parafusos você vai conectar ali. É na onde. Pra que você consiga, de fato, concluir aquela tarefa.

E quando a gente fala em redes sociais. Por que algoritmos e redes sociais?

Bom, as redes sociais são softwares complexos. Que tem diversos algoritmos pra diversos propósitos, né? Mas quando normalmente você ouve falar aí de algoritmo do YouTube ou do Instagram. A gente tá falando especificamente do algoritmo de recomendação de conteúdo. Que vai decidir que tipo de conteúdo vai aparecer no seu feed, por exemplo. Como que ele vai saber exatamente que tipo de conteúdo eu tenho que exibir pra Carol. Pra prender a atenção dela. Já que esse é o objetivo de toda rede social. Que você passe cada vez mais tempo interagindo ali.

Então como que ele pode saber o melhor conteúdo pra você? Que tipo de parâmetros ele vai verificar, né? Que tipo de lógica ele vai aplicar e verificar. Pra poder sugerir o melhor conteúdo. E é justamente esse o problema que os algoritmos de conteúdo vieram pra resolver.

Então digamos que a rede social, ela tem um problema. Que tipo de conteúdo eu vou exibir pro meu usuário? E através desses algoritmos de recomendação, ela vai resolver esse problema.

Esse algoritmo, então, ele vai fazer uma série de cálculos. Considerando N fatores que podem verificar, por exemplo. Poxa, que tipo de conteúdo a Carol costuma gostar e interagir mais? Que tipo de conteúdo ela tem mais afinidade? Pode fazer alguns cálculos em relação ao meu histórico ali de navegação. Pode verificar, inclusive, afinidades em comum que eu tenha com outros usuários que eu sigo, por exemplo. Pra poder recomendar conteúdos que estão em trend, né? Então tem uma série de cálculos que podem ser feitos pra poder pensar no melhor conteúdo. Pra exibir na tela pra que eu continue interagindo ali. É o chamado efeito TikTok. O TikTok tem um algoritmo poderosíssimo que consegue realmente viciar os seus usuários. É dopamina pra todo lado. Pra basicamente te manter ali na tela viciado. Prendendo a sua atenção de fato.

Se você tivesse uma rede social, qual seria o seu algoritmo de recomendação? Como que você faria esse algoritmo? Para pra pensar.

E muito mais do que resolver problemas criando esses algoritmos. Um programador, ele precisa saber resolver problemas da melhor forma possível. Então, de repente, você usa um algoritmo, mas na verdade ele não é tão performático assim. Ele não é tão escalável assim. Então ele resolve um problema. Mas à medida que você escala esse problema, esse algoritmo já não vai resolver isso de uma forma tão boa assim.

E eu vou dar um exemplo muito legal que são os algoritmos de busca. Que é bastante utilizado ali em vários tipos de software. Pra gente entender como que funciona um algoritmo de busca, pensa numa lista de número. Onde a gente vai ter o número 10, o número 12, o número 16, o número 18 e o número 22. Pensando que essa lista está ordenada de forma crescente, como que você faria pra buscar o número 16 nessa lista? Para pra pensar.

Achei que a forma lógica mais simples que você pode fazer não sabendo a posição do número que você está buscando, seria verificar de um em um. Então eu vou começar desde o início. Eu vou no 10, verifico se ele é o número 16. Se ele não foi, eu vou pro próximo. Então eu vou no 12, verifico se ele é o número 16. Se não foi o próximo, no caso, o 16. E aí eu encontrei o meu número. E assim eu posso verificar se aquele número realmente existe naquela lista. E isso que nós fizemos aqui é bem trivial, é bem lógico, é bem simples. É o que a gente chama de algoritmo de busca linear.

E se a gente fosse escrever isso em código, seria basicamente esse código que eu vou mostrar aí na tela pra vocês, escrito em Swift. Então basicamente a gente vai ter ali uma função de busca linear, onde eu vou dar a minha lista de números e vou passar o valor que eu estou buscando. Ele vai fazer um loop ali entre todos os números, verificando um por um se aquele número é o número buscado. E se for, eu vou retornar verdadeiro, ou seja, aquele número foi encontrado.

Beleza, a gente tem um algoritmo. A gente tem uma sequência de passos ali, de instruções, para serem seguidas para que a gente consiga cumprir a tarefa, no caso, achar o nosso número. Mas o que acontece se eu estiver buscando o número 13 aí nessa lista? O que vai acontecer? Vamos verificar? A gente vai ali verificar o número 10, a gente vai verificar o número 12, o número 16, o número 18, o número 22. Ou seja, a gente vai passar por todos os números da lista. A gente não vai encontrar o número 13 porque ele não está na nossa lista. Mas pensando justamente que os nossos números estão em ordem crescente, será que faz sentido eu continuar buscando o meu número, sabendo que o número que eu estou buscando é maior do que aquele número? Será que eu não posso fazer uma verificação para otimizar esse algoritmo?

Com certeza, e é isso que a gente está fazendo aqui nesse outro código que eu vou mostrar aqui para a tela. Então ele vai verificar número por número, mas se o número que ele está verificando for maior do que o número buscado, ele já vai retornar falso. Ou seja, ele já vai sair daquele loop e eu não vou verificar os próximos números, eu já tenho uma busca mais otimizada nesse sentido.

Quando você pensa em uma lista pequena de números, isso não parece um problema, mas quando você tem uma lista imensa de números, com certeza esse tipo de otimização faz muita diferença.

Agora imagina, se a gente tivesse uma lista ali de 500 números, será que essa forma de buscar um por um seria a forma mais performática de fazer essa busca? Será que não tem outro tipo de lógica e algoritmo que a gente possa utilizar? Para pra pensar, como que você busca uma página específica dentro de um livro?

E eu até peguei o meu livro aqui de CSS avançado, esse é velho, está até sujo inclusive, olha só, tem muito tempo esse livro aqui. Então como que você faria para encontrar uma página específica nesse livro? Será que você iria olhar uma por uma? Não. Por exemplo, se eu quisesse buscar a página sem, eu ia abrir em uma certa página aqui e verificar se a página sem, ela é menor ou maior do que a página que eu abri. E assim eu iria verificando, ou seja, de uma forma mais otimizada do que passando página por página para poder encontrar a página específica. E é engraçado porque a gente faz isso mesmo que sem pensar, a gente já tem esse raciocínio de, poxa, eu vou abrir em um lugar, eu vou verificar mais ou menos ali se está na página que eu quero, né? Mas essa lógica que a gente aplicou, mesmo sem querer, é um algoritmo muito utilizado ali que é chamado de binary search.

Em que consiste esse algoritmo? Esse algoritmo consiste em dividir para conquistar. Então basicamente, se eu estou procurando uma página no meio desse número ali, por exemplo, eu tenho 500 páginas aqui nesse livro. Se eu quero procurar a página 200, o que eu vou fazer? Eu vou abrir no meio, vou verificar ali em qual página eu estou, se é maior ou menor do que a página que eu estou buscando. Se for menor, o que eu vou fazer? Eu vou descartar toda essa metade aqui e vou buscar novamente na metade aqui. Então eu vou abrir na metade aqui, verificar se é menor ou maior, e assim eu vou abrindo metade por metade até encontrar a página que eu estou buscando. Ou seja, é uma forma muito mais otimizada do que passar página por página verificando um por um se é a página que eu estou buscando.

E como que ficaria isso no código? No código, isso ficaria basicamente essa função que eu vou mostrar aqui para vocês de binary search. Basicamente, a gente vai ter dois ponteiros, o início e o fim. E a gente vai mudando ali esses ponteiros de acordo com a nossa verificação. Então sempre eu tenho o início e o fim, eu vou ter o meio, e aí eu vou fazendo a verificação. Se o valor que eu estou procurando é exatamente o meio ali entre o início e o fim, então beleza, eu botei true. É porque eu achei aquele valor que eu estava buscando. Então se ele for maior do que o meio, aí eu vou mudar os meus ponteiros. Por exemplo, se eu estou buscando a página 300, então eu vou fazer o seguinte. Ao invés do meu início ser o zero, a página inicial, e o meu fim ser a página final do livro, a minha página inicial vai ser a página do meio. Ou seja, eu descartei toda a outra metade e aí continuei a minha busca. E assim a gente vai restringindo cada vez mais o nosso início e fim e fazendo a nossa busca pelo valor do meio ali para encontrar o número que a gente está buscando.

Bom, e agora você já conhece dois algoritmos diferentes de busca que você pode aplicar de acordo com o seu problema.

E o que vai medir se um algoritmo é mais performático que o outro é o que a gente chama de notação Big O. A notação Big O é o que vai basicamente nos permitir classificar e comparar esses algoritmos para entender o que é mais performático ou não para cada situação que a gente está enfrentando, para cada problema que a gente quer resolver.

Inclusive, se você quiser que eu traga um conteúdo específico sobre Big O, comenta aqui embaixo Big O, porque eu sei que você quer esse conteúdo, que a gente pode agregar mais esse conteúdo na nossa playlist de conteúdos fundamentais para programadores. Aliás, se você não conferir a nossa playlist, a gente tem uma playlist onde eu falo sobre alguns conceitos fundamentais, por exemplo, lógica da programação, que é esse vídeo que eu falei, orientação a objetos, estrutura de dados e agora algoritmos. E a ideia é que a gente cresça essa playlist cada vez mais. Então, se você tem alguma recomendação, não deixe de comentar.

Recursos da formação e conteúdos adicionais

Eu espero que esse conteúdo tenha sido útil para você. E se você busca uma formação que vai te preparar como programador, para ser um programador eficiente, que vai ter o seu lugar no mercado, pelo que você entrega de valor, dá uma olhadinha na formação em tecnologia da escola DNC. Justamente por focar na base e ter uma metodologia focada em prática, é que ela possui um índice de empregabilidade superior a 98%. E isso só pode ser realidade em uma escola que tenha seriedade, se preocupa com a qualidade da educação que ela entrega, e principalmente com a trajetória de cada aluno.

E lembrando que esse mês está rolando uma oportunidade especial para que você consiga estudar ali na escola DNC. Não deixe de conferir o link na descrição desse vídeo.

E agora eu quero saber de você, o que você achou desse vídeo? Você tem alguma dúvida sobre o que eu expliquei aqui, sobre algoritmos? Algum outro tema que você queira sugerir aqui para o canal? Não deixe de comentar. E assim como é de costume, eu vou responder um comentário que deixaram em outro vídeo aqui do canal.

E o comentário é da Joyce Mara. Carol, como você sabia que queria trabalhar com o que você trabalha hoje? Eu estou me questionando se não estou na área errada. Apesar de gostar, só isso não basta. Esse é um ponto muito importante, Joyce. Inclusive, muito obrigada pelo seu comentário. Eu respondi ele para você, mas eu achei interessante trazer para cá, porque eu acho que é uma dúvida muito comum das pessoas que entram na área de tecnologia. Porque normalmente elas não têm a visão de quão amplo é esse mercado em relação à programação. Na verdade, não só em relação à programação, mas a esse mercado como um todo. Então, como que eu me permiti me encontrar nesse mercado como desenvolvedora iOS, que é o que eu trabalho hoje? Principalmente experimentando, né? Então, eu comecei trabalhando com games e web. E eu sempre fui aberta ao aprendizado, a aprender coisas novas, experimentar coisas novas. Eu acho que ter essa abertura é importante para que você experimente e que para você, de repente, se encontre em outra área. Então, isso é muito importante. Então, não necessariamente você vai entrar numa área que vai ser amor e paixão à primeira vista. Você tem que se permitir descobrir. Então, de repente, você não gosta daquela área. Vai experimentando outra área. Vai experimentando outras possibilidades no mercado de tecnologia. A gente tem muitas carreiras dentro da programação, dentro desse mercado, que você pode experimentar e, de repente, se encontrar. Foi o que aconteceu comigo. Durante a minha jornada, eu tive a possibilidade de experimentar bastante. Foi aí que eu me encontrei. Então, fica essa dica. Muito obrigada pelo seu comentário. E eu espero que eu tenha conseguido te ajudar.

E antes de eu me despedir para o próximo vídeo, vocês já sabem que vocês devem maratonar os conteúdos aqui do Atequita Flix. E não deixem de se inscrever para a gente se encontrar toda semana. E eu vou indicar outros dois conteúdos para você assistir aqui na sequência. Um dos conteúdos vai ser justamente esse vídeo, onde eu falo sobre a base da lógica da programação. Um conteúdo rápido para te ajudar você que está iniciando na programação. E o outro conteúdo vai ser uma recomendação do algoritmo do YouTube.

E agora o que eu vou fazer? Vou praticar alguns algoritmos, né? Afinal, a gente sempre tem que praticar. Se inscreve aí porque tem muito conteúdo legal pra você.

Conteúdos fundamentais recomendados

Essa seção consolida a ideia de que há uma playlist com conteúdos que aprofundam fundamentos, como lógica da programação, orientação a objetos, estrutura de dados e agora algoritmos. A ideia é que a gente cresça essa playlist cada vez mais, para apoiar quem está iniciando na área ou para quem quer consolidar a base de conhecimentos. Caso haja interesse em temas específicos, sugiro comentar para que possam ser agregados à playlist e ao conteúdo do canal.

Big O e desempenho de algoritmos

A notação Big O é apresentada como o principal mecanismo para classificar e comparar algoritmos, entendendo o que é mais performático para cada situação. Ela aparece como um ponto de referência importante dentro da discussão sobre algoritmos de busca, que já foi apresentada acima, e serve para orientar decisões de implementação baseadas em desempenho teórico frente a cenários de uso reais.

Caso haja interesse em aprofundar esse conteúdo, o autor convida a comentar com a palavra Big O para indicar esse tema específico na playlist de conteúdos fundamentais para programadores.

Encerramento da discussão sobre algoritmos

Além de apresentar conceitos, a discussão reforça a ideia de que algoritmos são a base da resolução de problemas com o uso da tecnologia. O objetivo é entender como instruções organizadas de forma sequencial ajudam a chegar a soluções, especialmente quando lidamos com problemas de recomendação em redes sociais, busca em listas ordenadas e outras situações do dia a dia do desenvolvimento de software.

O conteúdo enfatiza ainda que a construção de soluções eficientes depende da compreensão de como estruturar instruções para a máquina, da avaliação de cenários de uso e da escolha de algoritmos que melhor atendam à necessidade de forma escalável e performática.

Ao longo do material, há referências a conceitos básicos de lógica da programação, à busca linear e à busca binária, além de discussões sobre a importância de entender o desempenho de algoritmos através da notação Big O e de refletir sobre a aplicabilidade de diferentes estratégias de resolução de problemas em contexto de tecnologia e desenvolvimento de software.

Está desenvolvendo um projeto digital e precisa de um site moderno, performático e bem estruturado?
Eu posso te ajudar a transformar essa ideia em uma solução completa — com foco em performance, design e funcionalidade.
Acesse yurideveloper.com.br ou chame no WhatsApp:
(37) 99670-7290.
Vamos criar algo incrível juntos!!