Módulo 15 - Projeto final: o Gerenciador de Tarefas
Planejar o gerenciador: entender e decompor
8 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 08/07/2026
O que você vai aprender
- Aplicar o método dos quatro passos para entender o projeto.
- Listar as operações que o gerenciador precisa oferecer.
- Decompor o projeto em funções pequenas com nomes claros.
- Montar o esqueleto do programa antes de escrever os detalhes.
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: Planejar o gerenciador: entender e decompor.
Os objetivos desta aula. Aplicar o método dos quatro passos para entender o projeto. Listar as operações que o gerenciador precisa oferecer. Decompor o projeto em funções pequenas com nomes claros. Montar o esqueleto do programa antes de escrever os detalhes.
Veja o essencial, parte por parte.
O que o gerenciador precisa fazer. Antes de codar, planeje: entenda o que o programa faz e decomponha em partes.
O esqueleto no papel. O esqueleto do programa é o plano virado quase-código: você escreve as funções que vão existir e o laço principal que as chama, deixando os detalhes para depois.
Por que planejar primeiro poupa tanto trabalho. Pode dar vontade de pular o planejamento e ir direto ao código, mas os minutos gastos aqui se pagam com juros.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
O que o gerenciador precisa fazer
Um Gerenciador de Tarefas é aquele programa que guarda a sua lista de afazeres: adiciona uma tarefa nova, mostra tudo que falta fazer, marca uma como concluída e ajuda a achar uma tarefa específica. Simples de descrever, e é justamente por isso que serve tão bem de projeto final: cada operação dele usa uma peça diferente do curso. Antes de escrever qualquer código, aplicamos o passo mais importante do método dos quatro passos, entender. O que entra? Comandos do usuário e os dados de cada tarefa. O que sai? A lista atualizada e as respostas às consultas. Quais são as regras? Uma tarefa tem uma descrição e um estado (pendente ou concluída); não faz sentido concluir uma tarefa que não existe; a descrição não pode ser vazia. Já surgem os casos de borda antes mesmo de uma linha de código, exatamente como deve ser.
Com o problema entendido, vem a decomposição. Em vez de imaginar um programão único que faz tudo, listamos as operações e transformamos cada uma numa função com nome honesto. Adicionar uma tarefa vira adicionarTarefa. Mostrar a lista vira listarTarefas. Marcar como feita vira concluirTarefa. Procurar vira buscarTarefa. Cada função fará uma coisa só, seguindo a regra do módulo de código limpo, e o programa principal será um resumo legível que chama essas funções conforme o usuário pede. Repare que ainda não escrevemos nenhuma delas; estamos projetando o esqueleto, decidindo as partes e como elas se encaixam. Esse trabalho de cima para baixo é o que evita se perder depois: quando você começar a preencher cada função, já saberá exatamente o papel dela no todo.
O esqueleto no papel
O esqueleto do programa é o plano virado quase-código: você escreve as funções que vão existir e o laço principal que as chama, deixando os detalhes para depois. Esse esqueleto já revela decisões importantes. O programa vai rodar num laço, mostrando um menu e esperando o usuário escolher uma operação, até ele pedir para sair, uma clássica combinação de laço com sentinela que você aprendeu lá atrás. A escolha do menu pede uma decisão de vários caminhos, terreno do escolha-caso. E cada opção do menu chama uma das funções que decompusemos. Escrever esse esqueleto primeiro é como montar a planta de uma casa antes de levantar as paredes: você vê o todo, percebe o que falta e corrige no barato, no papel, antes de investir esforço no código detalhado.
// esqueleto do gerenciador (o miolo de cada função vem nas próximas aulas)
tarefas <- lista vazia
repita
mostrarMenu()
opcao <- lerOpcaoDoUsuario()
escolha opcao
caso "adicionar": adicionarTarefa(tarefas)
caso "listar": listarTarefas(tarefas)
caso "concluir": concluirTarefa(tarefas)
caso "buscar": buscarTarefa(tarefas)
caso "sair": escreva("Até logo!")
caso contrário: escreva("Opção inválida")
fim
até opcao = "sair"O esqueleto usa laço com sentinela (repita até sair) e escolha-caso (o menu). Cada opção chama uma função decomposta.
🎮 Jogo da aula
Do problema ao esqueleto
Ordene os passos de planejamento do gerenciador, do primeiro ao último, seguindo o método que você aprendeu.
Por que planejar primeiro poupa tanto trabalho
Pode dar vontade de pular o planejamento e ir direto ao código, mas os minutos gastos aqui se pagam com juros. Ao decompor antes, você descobre problemas de projeto enquanto eles ainda são baratos de corrigir: um esqueleto no papel se refaz em segundos, um código emaranhado leva horas. Você também ganha um mapa: se um bug aparecer, saberá em qual função procurar, porque cada uma tem uma responsabilidade clara. E consegue trabalhar por partes, terminando e testando uma função de cada vez, com a satisfação de ver o projeto crescer em pedaços que funcionam, em vez de encarar um monstro único que só roda quando está inteiro. Este é o segredo que separa quem termina um projeto de quem desiste no meio: dividir o grande em pequenos, e atacar um pequeno de cada vez. Nas próximas aulas, é exatamente o que faremos, preenchendo o esqueleto função por função.
Teste rápido
Por que montar o esqueleto do programa (as funções e o laço principal) antes de escrever os detalhes é uma boa prática?
Perguntas frequentes
- Por que começar pelo planejamento e não pelo código?
- Porque planejar revela problemas de projeto enquanto eles são baratos de corrigir, no papel, em segundos. Ir direto ao código costuma levar a emaranhados que custam horas para desfazer. O planejamento também dá um mapa do projeto e permite trabalhar por partes, uma função de cada vez.
- O que é decompor um projeto?
- É quebrá-lo em operações menores, cada uma virando uma função com um trabalho claro. No gerenciador, adicionar, listar, concluir e buscar viram funções separadas. O programa principal apenas as chama conforme o usuário pede, ficando legível como um resumo. É o dividir para conquistar aplicado a um projeto de verdade.
- O que é o esqueleto do programa?
- É a estrutura inicial escrita como as funções que vão existir e o laço principal que as chama, sem os detalhes ainda. Mostra as partes e como se encaixam. É o resultado de planejar de cima para baixo, e serve de guia para depois preencher cada função com segurança.
- Por que definir o escopo (o que o programa NÃO faz) é importante?
- Porque projetos que crescem sem controle nunca terminam. Definir cedo o que está dentro e o que está fora mantém o trabalho focado. No gerenciador, o escopo são as operações essenciais; recursos extras podem vir depois. Saber onde parar é parte de planejar bem.
- Já dá para ver conceitos do curso no esqueleto?
- Vários. O laço principal que roda até o usuário sair é um laço com sentinela. O menu que escolhe entre operações é um escolha-caso. Cada operação é uma função decomposta. E as regras que surgiram no entendimento (descrição não vazia) são casos de borda a validar. O projeto amarra o curso todo.
- Preciso acertar o plano de primeira?
- Não. O plano é um rascunho que pode mudar conforme você entende melhor o problema. A vantagem é que mudar o plano é barato. Muitas vezes, ao preencher uma função, você percebe que o esqueleto precisa de um ajuste, e tudo bem. Planejar não é adivinhar tudo; é ter um mapa que você refina.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.