Módulo 9 - Dividir para conquistar e a recursão
Dividir para conquistar: quebrar o problema grande
8 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 08/07/2026
O que você vai aprender
- Entender a decomposição: quebrar um problema grande em partes menores.
- Transformar cada subproblema numa função com um trabalho claro.
- Perceber que funções pequenas se combinam para resolver o todo.
- Reconhecer quando um problema pede para ser dividido.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Dividir para conquistar: quebrar o problema grande.
Os objetivos desta aula. Entender a decomposição: quebrar um problema grande em partes menores. Transformar cada subproblema numa função com um trabalho claro. Perceber que funções pequenas se combinam para resolver o todo. Reconhecer quando um problema pede para ser dividido.
Veja o essencial, parte por parte.
O grande assusta, o pequeno se resolve. Decompor é quebrar um problema grande em subproblemas menores e fáceis.
De cima para baixo: pensar antes de escrever. Uma forma prática de decompor é pensar de cima para baixo.
O tamanho certo de cada função. Uma dúvida natural: até onde dividir?
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
O grande assusta, o pequeno se resolve
Diante de um problema grande, iniciante congela e experiente sorri, porque conhece o truque mais antigo da resolução de problemas: não resolva o grande, quebre-o em pequenos. Organizar uma festa parece impossível como um bloco só, mas vira uma lista tranquila quando você separa em partes: mandar convites, comprar comida, escolher música, arrumar o local. Cada parte é simples; a festa inteira é só a soma delas. Programar funciona exatamente assim. Um programa de folha de pagamento parece um monstro, até você perceber que ele é feito de pedaços menores: calcular o salário bruto, descontar o imposto, somar os benefícios, gerar o holerite. Cada pedaço é uma função do tamanho da sua cabeça.
A decomposição é onde as funções que você estudou no módulo anterior mostram todo o valor. Cada subproblema vira uma função com um nome que diz o que ela faz e um trabalho bem delimitado: calcularImposto, montarMensagem, validarEmail. O programa principal deixa de ser um paredão de instruções e vira uma sequência legível de chamadas, quase um resumo em português do que acontece. Quem lê entende o todo sem se afogar nos detalhes, e quem conserta um bug sabe exatamente em qual função mexer. Escrever um programa grande sem decompor é como escrever um livro sem capítulos: até dá, mas ninguém acha nada, nem você.
De cima para baixo: pensar antes de escrever
Uma forma prática de decompor é pensar de cima para baixo. Comece pelo problema inteiro e pergunte: quais são as três ou quatro grandes partes disto? Escreva o programa principal como se essas partes já existissem, chamando funções que você ainda nem criou: primeiro calcule o salário bruto, depois desconte os impostos, depois some os benefícios. Nesse momento você está projetando, não codando os detalhes. Só depois você desce e resolve cada função, e, se alguma ainda for grande, aplica a mesma quebra dentro dela. Essa abordagem tem uma vantagem enorme: você organiza o raciocínio antes de se perder nas minúcias, exatamente o passo planejar do método dos quatro passos que abriu o curso.
// o programa principal lê como um resumo do que acontece:
função gerarHolerite(funcionario)
bruto <- calcularSalarioBruto(funcionario)
impostos <- calcularImpostos(bruto)
beneficios <- somarBeneficios(funcionario)
liquido <- bruto - impostos + beneficios
retorne montarHolerite(funcionario, bruto, impostos, liquido)
fim
// cada função chamada é um subproblema resolvido à parteO programa principal vira um resumo legível: cada linha delega um subproblema a uma função com nome claro.
🎮 Jogo da aula
Decomponha a tarefa
Quebrar em partes um programa que calcula a média final de um aluno. Ordene os subproblemas numa sequência que faça sentido.
O tamanho certo de cada função
Uma dúvida natural: até onde dividir? A regra prática que os programadores seguem é que cada função deve fazer UMA coisa, e fazê-la bem. Se você não consegue descrever o que uma função faz sem usar a palavra e (ela calcula o imposto E monta o relatório E envia o e-mail), ela provavelmente deveria ser mais de uma função. Por outro lado, não é preciso exagerar e criar uma função para cada linha; o objetivo é legibilidade, não fragmentação. O bom tamanho é aquele em que a função cabe na sua cabeça de uma vez e tem um nome honesto. Essa disciplina, que você vai aprofundar no módulo de código limpo, começa aqui, na hora de decidir como quebrar o problema.
Teste rápido
Por que decompor um problema grande em funções menores facilita a programação?
Perguntas frequentes
- O que é decompor um problema?
- É quebrá-lo em subproblemas menores e mais fáceis, resolver cada um e combinar as soluções. Em programação, cada subproblema costuma virar uma função. É a estratégia dividir para conquistar, que transforma uma tarefa grande e assustadora numa sequência de tarefas pequenas e gerenciáveis.
- Como sei em quantas partes dividir?
- Uma boa regra é que cada função faça uma coisa só. Se você precisa da palavra e para descrever o que ela faz, provavelmente são duas funções. O objetivo é que cada parte caiba na sua cabeça e tenha um nome honesto. Não é preciso fragmentar cada linha; o alvo é clareza, não pedaços minúsculos.
- O que é pensar de cima para baixo?
- É começar pelo problema inteiro e escrevê-lo como uma sequência de partes grandes, chamando funções que você ainda vai criar. Primeiro você projeta o esqueleto (calcule isto, depois aquilo) e só depois desce e resolve cada função. Assim você organiza o raciocínio antes de se perder nos detalhes.
- Decompor não dá mais trabalho do que escrever tudo direto?
- No começo parece, mas economiza muito depois. Código decomposto é mais fácil de entender, testar e consertar, e as funções pequenas costumam ser reaproveitadas. Escrever tudo num bloco só é rápido para escrever e péssimo para manter. A decomposição é um investimento que se paga na primeira vez que você precisa mexer no código.
- Decomposição tem a ver com funções puras?
- Tem. Quando você decompõe bem, muitas das funções menores acabam sendo puras (só calculam a partir das entradas e retornam), o que as torna fáceis de testar. Decompor e manter as partes puras são hábitos que se reforçam e levam a um código organizado e confiável.
- Isso vale só para programas grandes?
- O ganho é maior nos grandes, mas o hábito se treina nos pequenos. Mesmo num programa médio, separar em funções com nomes claros deixa tudo mais legível. E a decomposição é a porta de entrada para a recursão, o próximo assunto, que é uma forma especial e elegante de dividir para conquistar.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.