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.

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.

Um mapa de planejamento do gerenciador de tarefas. No centro, uma caixa Gerenciador de Tarefas. Ao redor, quatro caixas de operação ligadas a ela: adicionarTarefa, listarTarefas, concluirTarefa e buscarTarefa. Abaixo, uma nota lista as regras: descrição não vazia, tarefa tem estado pendente ou concluída, não concluir tarefa inexistente.
O plano do projeto: as quatro operações viram funções, e as regras (casos de borda) já aparecem no planejamento.

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.