Curso gratuito
Curso de Lógica de Programação Avançado
O topo da trilha: estruturas de dados, algoritmos clássicos e pensamento de projeto. A parte final do Curso de Lógica de Programação do ValorFinal, para quem já domina dados, funções e os algoritmos de busca e ordenação e quer pensar como um projetista de software. Aqui você aprende as estruturas de dados que sustentam os programas de verdade: a pilha (o botão desfazer e a pilha de chamadas), a fila (atendimento e prioridade), a lista ligada (nós e ligações), a árvore (hierarquias e busca binária) e o grafo (redes, mapas e conexões). Depois vêm os algoritmos que as movem: busca em largura e em profundidade, o menor caminho, dividir para conquistar, backtracking, merge sort e quick sort, e a ideia de memoização e programação dinâmica para não recalcular à toa. Ainda descobre a tabela hash por dentro (por que o dicionário é quase instantâneo), as máquinas de estado que modelam semáforos e jogos, e os princípios de engenharia que separam código descartável de código que dura: tipo abstrato de dados, modularidade, acoplamento e coesão, invariantes, imutabilidade e funções puras. Cada aula tem um jogo educativo inédito e diagramas 2D próprios. No Laboratório de Estruturas você vê a pilha, a fila e a busca em largura acontecerem passo a passo; no capstone você monta um Mapa de Rotas que encontra o caminho mais curto. Sem promessa de emprego ou fórmula mágica: o raciocínio de estruturas e algoritmos que serve para qualquer linguagem e para o resto da sua vida de programador.
Por Cesar Gargiulo, especialista em segurança da informação (GUARDIASEC). Revisão editorial da equipe ValorFinal.
- Preço
- Grátis, sem cadastro para ler
- Carga horária
- 14 horas
- Conteúdo
- 15 módulos e 59 aulas
- Nível
- Avançado
- Formato
- Texto, vídeo e áudio
- Prática
- Exercício em cada aula, laboratório e missão prática
- Exame final
- 20 questões, aprovação com 70%
- Certificado
- Verificável, para assinantes VIP
Em resumo
O Curso de Lógica de Programação Avançado fecha a Trilha Lógica do ValorFinal com estruturas de dados e algoritmos, de graça e online. Ao todo são 59 aulas em 15 módulos, cerca de 14 horas de estudo, com um vídeo por módulo e, em cada aula, um jogo e um resumo em áudio. As estruturas estudadas são pilha, fila, lista ligada, árvore, grafo e tabela hash, e os algoritmos incluem busca em largura e em profundidade, backtracking, merge sort, quick sort, memoização e programação dinâmica. O curso também trata de máquinas de estado, modularidade, invariantes e funções puras. Tudo é escrito em pseudocódigo em português, e a última aula traduz a solução para uma linguagem real. O projeto final é um Mapa de Rotas que acha o menor caminho. A leitura das aulas é aberta, sem cadastro, e o certificado verificável é dos assinantes do ValorFinal VIP.
Comece do jeito certo
Por onde você quer começar?
Escolha o seu ponto de partida. Você pode mudar quando quiser: todo o conteúdo fica liberado.
Para quem é este curso
Para quem já domina o conteúdo do curso intermediário de lógica, como matrizes, dicionários, recursão, busca e ordenação, e quer entender as estruturas que os programas usam por dentro. Serve a estudantes da disciplina de estrutura de dados e a quem já programa numa linguagem e quer escolher com critério entre lista, fila, árvore e dicionário, inclusive para encarar uma entrevista técnica.
Antes de começar: Conhecer o conteúdo do Curso de Lógica de Programação Intermediário: listas, matrizes, dicionários, conjuntos, funções, recursão, busca e ordenação. Não é preciso saber uma linguagem de programação, porque as aulas usam pseudocódigo em português.
O que você vai saber fazer
- Separar interface e implementação com tipos abstratos de dados
- Usar pilhas e filas, da pilha de chamadas e do botão desfazer à fila de prioridade
- Inserir e remover nós em listas ligadas e escolher entre lista ligada e vetor
- Buscar em árvores binárias de busca e percorrer árvores em pré-ordem, em-ordem e pós-ordem
- Representar grafos e aplicar busca em largura, busca em profundidade e menor caminho
- Ordenar com merge sort e quick sort e evitar recálculo com memoização e programação dinâmica
- Entender funções hash, colisões e por que a busca na tabela hash é O(1) em média
- Modelar sistemas com máquinas de estado, módulos coesos, invariantes e funções puras
O que você leva neste curso
O conteúdo é todo gratuito. Veja o que cada plano libera antes de começar.
Conta grátis
R$ 0
- ✓ Ler todas as aulas, sem login
- ✓ Salvar o progresso só neste aparelho
- ✓ Fazer as mini-provas de cada módulo
- ✓ Conquistar e ver todas as medalhas
- ✓ Compartilhar as conquistas no LinkedIn
♛ ValorFinal VIP
Certificado + extras
- ✦ Tudo do plano grátis
- ✦ Certificado de conclusão verificável em PDF com o seu nome
- ✦ Open Badge do certificado (credencial aberta, padrão 1EdTech, para o LinkedIn e carteiras de medalhas)
- ✦ Certificado ancorado no Bitcoin (OpenTimestamps), com comprovante verificável de forma independente
- ✦ Anotações nas aulas, com grifar para anotar e sincronizadas entre aparelhos
- ✦ Valim, o tutor de IA, dentro das aulas
- ✦ Comunidade de dúvidas por aula, com a 1a resposta do Valim
- ✦ Liga semanal de XP e Hall da Fama do curso
- ✦ Progresso salvo na sua conta e sincronizado entre aparelhos (no mesmo computador, cada conta vê só o seu avanço)
- ✦ Portal inteiro sem anúncios
Conteúdo do curso
Módulo 1: Boas-vindas ao avançado
3 aulasNos dois primeiros cursos da trilha você aprendeu a resolver problemas: montar a lógica, escrever o laço, tratar a lista. Agora a régua sobe. O avançado é sobre PROJETAR a solução: escolher a estrutura de dados que guarda a informação do jeito certo e o algoritmo que age sobre ela com eficiência. Este módulo de abertura explica essa virada, apresenta o tipo abstrato de dados (o contrato entre o que uma estrutura faz e como ela faz) e desenha o mapa das estruturas e algoritmos que você vai dominar.
Módulo 2: Pilhas: a estrutura em que o último entra e sai primeiro
4 aulasA pilha é a primeira estrutura abstrata deste curso, e uma das mais úteis. A regra dela cabe numa frase: o último a entrar é o primeiro a sair. É a lógica de uma pilha de pratos, do botão desfazer, do voltar do navegador e da própria forma como o computador organiza as chamadas de funções. Neste módulo você aprende a pensar em pilha, a empilhar e desempilhar só pelo topo, e a usar essa estrutura para resolver um problema clássico: checar se os parênteses de uma expressão estão balanceados.
Módulo 3: Filas: o primeiro a chegar é o primeiro a sair
4 aulasA pilha atende sempre o último que chegou. A fila faz o contrário e o mais justo: o primeiro a entrar é o primeiro a sair, exatamente como a fila do banco ou do caixa do mercado. Este módulo ensina o comportamento FIFO, as duas pontas da fila (a frente de onde se sai e o fim onde se entra), as operações de enfileirar e desenfileirar, a fila de prioridade que fura a ordem por bons motivos, e como decidir entre pilha e fila em cada problema.
Módulo 4: Listas ligadas: a corrente de nós
4 aulasO vetor guarda os valores encostados um no outro, numerados por índice. A lista ligada faz diferente: espalha os valores pela memória e amarra cada um ao próximo por uma ligação, como os vagões de um trem. Você não chega a um valor pelo índice, chega seguindo a corrente. Em troca, inserir e remover no meio fica barato: basta religar duas ligações, sem empurrar ninguém. Este módulo ensina o nó, a inserção barata, a escolha entre lista e vetor e as variações dupla e circular.
Módulo 5: Árvores: hierarquia, busca e percursos
4 aulasPilha, fila e lista guardam dados em fila indiana, um atrás do outro. A árvore quebra essa linha: cada nó pode apontar para vários outros abaixo de si, formando ramos que descem de uma raiz até as folhas. É a estrutura por trás das pastas do computador, do organograma da empresa e dos menus que se abrem em submenus. Este módulo ensina a anatomia da árvore, a árvore binária, a árvore de busca binária (que acha um valor cortando o problema pela metade) e as três formas de percorrer uma árvore.
Módulo 6: Grafos: vértices, arestas e o mundo em rede
4 aulasA árvore organiza uma hierarquia, mas boa parte das relações do mundo não tem chefe nem raiz: amigos que se conhecem, cidades ligadas por estradas, páginas que apontam umas para as outras. Essas redes pedem uma estrutura mais livre, o grafo, feito de vértices (os pontos) e arestas (as ligações). Este módulo apresenta a anatomia do grafo, seus tipos (dirigido ou não, com peso ou sem), as duas formas clássicas de guardá-lo na memória e como enxergar grafos escondidos em problemas do dia a dia.
Módulo 7: Percursos em grafos: largura, profundidade e caminho
4 aulasTer um grafo desenhado não adianta se você não sabe andar por ele. Este módulo ensina as duas maneiras clássicas de visitar os vértices: a busca em largura, que explora por camadas usando uma fila, e a busca em profundidade, que vai fundo primeiro usando pilha ou recursão. Com a busca em largura você acha o caminho mais curto em número de passos, e com o conjunto de visitados você evita andar em círculos para sempre.
Módulo 8: Recursão avançada: dividir, voltar e escolher
4 aulasVocê já sabe que uma função pode chamar a si mesma e parar num caso base. Agora vem o que a recursão faz de verdade quando é bem usada: quebrar um problema grande em metades (dividir para conquistar), enxergar o trabalho total numa árvore de chamadas, tentar caminhos e voltar quando dão errado (backtracking) e decidir com clareza quando a recursão vale mais que um laço. São as técnicas por trás do merge sort, da busca binária e da solução de labirintos.
Módulo 9: Ordenação eficiente: merge sort e quick sort
4 aulasNo intermediário você ordenou com bolha, seleção e inserção. Funcionam, mas ficam lentos quando a lista cresce, porque comparam quase tudo com quase tudo. Este módulo mostra a virada de chave: aplicar dividir para conquistar à ordenação. O merge sort divide a lista pela metade e intercala as metades ordenadas. O quick sort escolhe um pivô e particiona. Os dois chegam a O(n log n), a faixa que dá conta de milhões de itens, e no fim você aprende a escolher qual usar.
Módulo 10: Memoização e a ideia da programação dinâmica
4 aulasA recursão é elegante, mas ingênua ela pode ser um desperdício assustador: o Fibonacci recursivo refaz o mesmo cálculo milhões de vezes. Este módulo mostra o problema, a cura e a filosofia por trás dela. A memoização guarda cada resultado numa tabela e reusa em vez de recalcular. A marca que pede essa técnica são os subproblemas sobrepostos, o mesmo pedacinho aparecendo de novo e de novo. E a programação dinâmica vira o jogo de cabeça para baixo: em vez de descer quebrando o problema, sobe montando a resposta a partir dos casos pequenos, como quem conta os degraus de uma escada.
Módulo 11: Tabelas hash: o dicionário por dentro
4 aulasNo intermediário você usou o dicionário como uma caixa mágica: dá a chave, recebe o valor, quase na hora. Este módulo abre a caixa. Por dentro há um vetor comum e uma função hash que transforma a chave num número de posição, mandando a busca direto ao lugar certo em vez de olhar item por item. Você vai entender a função de dispersão, o problema das colisões e as duas saídas clássicas (encadeamento e sondagem), e por fim por que tudo isso resulta num custo O(1) em média, e quando esse quase instantâneo começa a falhar.
Módulo 12: Máquinas de estado: estados, transições e eventos
4 aulasNem todo programa é só cálculo. Uma catraca, um semáforo, o campo de senha e a tela de um jogo têm uma coisa em comum: guardam uma situação atual e mudam de situação segundo regras fixas quando algo acontece. Essa ideia tem nome, máquina de estado, e é uma das ferramentas mais úteis para domar a lógica confusa dos if aninhados. Este módulo ensina a enxergar estados e transições, a modelar um semáforo, a validar entradas como um autômato e a organizar as telas de um jogo.
Módulo 13: Abstração e modularidade: código que dura
4 aulasUm programa que funciona resolve o problema de hoje; um programa bem organizado aguenta a mudança de amanhã. Este módulo ensina a projetar: dividir o código em módulos com uma responsabilidade cada, esconder o COMO atrás de uma interface simples, medir acoplamento e coesão para saber quando uma peça está saudável, e definir invariantes, as promessas que uma estrutura mantém sempre. É a diferença entre empilhar código e construir algo que você consegue mudar sem medo.
Módulo 14: Imutabilidade e efeitos: código previsível
4 aulasUm dado pode ser mudado no lugar ou copiado com a alteração, deixando o original intacto. Uma função pode só devolver um resultado ou também mexer no mundo lá fora, salvando um arquivo ou mandando um e-mail. Escolher bem entre essas opções é o que separa código confuso de código que se testa em segundos e roda em paralelo sem susto. Este módulo destrincha mutável x imutável, a função pura a fundo, o efeito colateral isolado na borda e a previsibilidade que abre caminho para a concorrência.
Módulo 15: Projeto final: Mapa de Rotas
4 aulasChegou a hora de juntar as peças. Neste projeto você constrói um Mapa de Rotas: um programa que acha o caminho entre dois pontos de uma rede. Primeiro modela a rede como um grafo, depois acha o menor caminho com busca em largura usando uma fila e um conjunto de visitados, monta o programa inteiro e, por fim, traduz o pseudocódigo para uma linguagem de verdade. É o encerramento da Trilha Lógica, e a ponte para escrever código em uma linguagem.
Estruturas de dados só servem para passar em entrevista técnica?
Não. As estruturas do Curso de Lógica de Programação Avançado estão em programas que você usa todo dia. A pilha é o que faz o botão desfazer reverter primeiro a última ação, e é a mesma estrutura da pilha de chamadas, que o programa usa para voltar de cada função. A fila organiza o atendimento por ordem de chegada, e a fila de prioridade deixa o caso urgente passar na frente. Um mapa de ruas é um grafo, e a busca em largura acha o caminho com menos trechos. A tabela hash é o mecanismo por trás do dicionário, e uma máquina de estado descreve um semáforo ou as telas de um jogo. O projeto final junta grafo, fila e conjunto de visitados num Mapa de Rotas que acha o menor caminho entre dois pontos.
Exercícios de estruturas de dados com respostas
As perguntas de verificação de todas as aulas, reunidas numa página só, com o gabarito comentado e o link para a aula que ensina cada assunto. Dá para revisar antes do exame final ou testar o que você já sabe antes de começar.
Abrir a lista de exercíciosPerguntas frequentes
O Curso de Lógica de Programação Avançado é gratuito?
Sim. O Curso de Lógica de Programação Avançado tem aulas, jogos, diagramas, Laboratório de Estruturas, mini-provas e exame final gratuitos, e a leitura das aulas dispensa cadastro. A assinatura ValorFinal VIP entra só para quem quer o certificado de conclusão verificável, o progresso sincronizado entre aparelhos, o tutor de IA dentro das aulas e o portal sem anúncios.
Preciso ter feito os cursos básico e intermediário de lógica?
É o ideal. O Curso de Lógica de Programação Avançado é a parte 3 da Trilha Lógica e assume que você já organiza dados em matrizes, dicionários e conjuntos, escreve funções e conhece busca, ordenação e a notação Big-O. Quem já tem essa base pode começar por outro ponto no nivelamento da página do curso, como as árvores ou os percursos em grafos, e todo o conteúdo fica liberado desde o início.
Preciso saber uma linguagem de programação para estudar estruturas de dados no curso?
Não. O Curso de Lógica de Programação Avançado ensina estruturas de dados e algoritmos em pseudocódigo em português, porque pilha, fila, árvore, grafo e tabela hash funcionam do mesmo jeito em qualquer linguagem. A última aula faz a tradução: o SE vira if, o ENQUANTO vira while, a fila vira a deque da biblioteca padrão do Python, o conjunto de visitados vira set e o dicionário faz o papel de mapa.
Quanto tempo leva o curso de lógica de programação avançado?
O Curso de Lógica de Programação Avançado tem carga estimada de 14 horas para as 59 aulas, os jogos, as mini-provas, o Laboratório de Estruturas, a Missão prática e o exame final. Você estuda no seu ritmo: informe no plano de estudo da página do curso quantos minutos por dia tem livres, e ele mostra a data prevista de conclusão.
O curso avançado de lógica tem certificado?
Tem, e ele é exclusivo de quem assina o ValorFinal VIP. Para emitir o certificado do Curso de Lógica de Programação Avançado, você precisa passar nas mini-provas de todos os módulos e no exame final, que sorteia 20 questões do curso inteiro e exige 70% de acerto. O documento traz o seu nome, um código de verificação público, um Open Badge e um carimbo de data no Bitcoin pelo OpenTimestamps.
Qual a diferença entre pilha e fila?
A pilha segue a regra LIFO, em que o último a entrar é o primeiro a sair, como uma pilha de pratos: você empilha, desempilha e espia sempre no topo. A fila segue a regra FIFO, em que o primeiro a entrar é o primeiro a sair, como a fila do banco: o item entra pelo fim e sai pela frente. No Curso de Lógica de Programação Avançado, a pilha resolve o problema dos parênteses balanceados, e a fila é a peça central da busca em largura.
Qual a diferença entre busca em largura e busca em profundidade?
A busca em largura, ou BFS, explora o grafo em camadas, do mais perto para o mais longe, com uma fila, e por isso encontra o caminho com menos passos. A busca em profundidade, ou DFS, segue um caminho até o fim antes de voltar, com uma pilha ou com a própria recursão, e o primeiro caminho que ela acha pode ser longo e cheio de voltas. No Curso de Lógica de Programação Avançado, as duas usam um conjunto de visitados para não girar para sempre num grafo com ciclo.
Por que a busca numa tabela hash é tão rápida?
A tabela hash calcula o índice da chave e vai direto ao balde onde o valor está, sem percorrer os outros itens, e por isso a busca pela chave é O(1) em média, com dez ou com dez milhões de pares. O Curso de Lógica de Programação Avançado mostra também o limite dessa média: quando muitas chaves colidem no mesmo balde, a busca vira uma pequena varredura, e o fator de carga indica a hora de a tabela crescer.
O que é programação dinâmica?
Programação dinâmica é a técnica de montar a resposta de um problema grande a partir das respostas de problemas menores, sem recalcular nenhuma. No Curso de Lógica de Programação Avançado, o exemplo é a sequência de Fibonacci: a versão recursiva ingênua refaz as mesmas contas em galhos diferentes, a memoização guarda cada resultado num cache e a programação dinâmica de baixo para cima preenche uma tabela com um laço, a partir dos casos base.
Qual a diferença entre o curso intermediário e o avançado de lógica?
O Curso de Lógica de Programação Intermediário ensina a organizar dados em matrizes, textos, dicionários e conjuntos e a usar busca, ordenação e a notação Big-O. O Avançado, parte 3 da Trilha Lógica, abre essas estruturas por dentro e acrescenta as que os programas usam nos bastidores, como pilha, fila, lista ligada, árvore, grafo e tabela hash, com algoritmos como busca em largura, merge sort, quick sort e programação dinâmica.
Qual é o projeto final do curso avançado de lógica?
O projeto final do Curso de Lógica de Programação Avançado é um Mapa de Rotas. A rede de ruas ou de estações vira um grafo, a busca em largura com fila e conjunto de visitados acha o menor caminho em número de passos, e o programa reconstrói a rota seguindo de trás para frente o ponto de onde cada lugar foi descoberto. Na Missão prática, a mesma ideia é montada no navegador, missão a missão.
O que estudar depois do curso avançado de lógica?
O ValorFinal sugere o Curso de Python Básico, porque o Python tem escrita próxima do pseudocódigo das aulas e roda no navegador, no Playground do curso. A trilha Python continua no Intermediário e no Avançado, e várias estruturas vistas no Curso de Lógica de Programação Avançado já vêm prontas na linguagem, como a deque para filas, o set para conjuntos e o dicionário, que é uma tabela hash.
Guias para ler antes ou depois do curso
Outros cursos gratuitos da mesma área
- Curso de Informática BásicaDo zero ao computador no dia a dia
- Curso de Python BásicoDo zero ao seu primeiro programa de verdade, programando desde a primeira aula
- Curso de Python IntermediárioAprofunde em POO, decoradores, geradores, testes e projetos de verdade
- Curso de Python AvançadoDomine tipagem, async, metaclasses, performance e engenharia de software de verdade
- Curso de Lógica de ProgramaçãoAprenda a pensar como programador, com jogos e desenhos em toda aula
- Curso de Lógica de Programação IntermediárioO próximo degrau: dados de verdade, algoritmos clássicos e código que se lê
Quem fez este curso
Cesar Gargiulo
Especialista em Cloud Security e Segurança da Informação
Cesar Gargiulo é fundador do ValorFinal e especialista em segurança da informação. Reúne atuação técnica em ambientes AWS, proteção de aplicações e infraestrutura crítica com a experiência de tocar as próprias empresas. A trajetória passa por Nomad, Núclea e UOL EdTech, além dos projetos de segurança ofensiva e defensiva conduzidos na GUARDIASEC. É pós-graduado em Offensive Cyber Security pela FIAP e tem MBA em Governança Estratégica de TI pela FHO Uniararas.
O avançado é onde você para de só usar estruturas prontas e passa a entender como elas funcionam por dentro: a pilha, a fila, a árvore, o grafo, a tabela hash. Quem projeta software de verdade sabe qual estrutura casa com cada problema e qual algoritmo a move, da busca em largura ao merge sort. Cada aula traz um jogo e um diagrama para fixar o raciocínio, sem matemática pesada e sem decoreba. É a base de estruturas de dados e algoritmos que serve para qualquer linguagem e para o resto da sua vida de programador.