LÓGICA E LINGUAGEM DE PROGRAMAÇÃO

Gerenciador de tarefas em dois módulos

Registro de Aula S14A3 — Semana 14 · Aula 3 – Aplicação em módulos: interface e lógica
Unidade 2 – Modularização e separação de responsabilidadesBase: Capítulos 32 a 40 — funções, parâmetros, return e módulosTempo: 50 minEntrega: AVA (documento com as respostas)Arquivo: NOME_TURMA_S14A3
ATIVIDADE PROPOSTA

O que vocês vão resolver

Vocês vão construir um gerenciador de tarefas dividido em dois arquivos: main.py, o módulo de interface, que exibe o menu e conversa com o usuário; e tarefas.py, o módulo de lógica, que guarda e manipula os dados. A aplicação cresce em três partes: primeiro a fundação (menu), depois adicionar e listar, e por fim concluir e remover.

Observação: o card desta atividade no AVA vem intitulado “Do caos à ação: priorizando melhorias”, com um texto de abertura sobre retrospectiva de Sprint — mas o procedimento do roteiro e as perguntas de consolidação são todos sobre esta aplicação em Python. Os blocos de código também não vieram no arquivo do roteiro; o código de referência desta página foi escrito para preencher essa lacuna.

OBJETIVOS

O que vocês vão aprender aqui

SOLUÇÃO DIGITAL

Ferramenta usada nesta aula

PY
Python 3 + terminal
Os dois arquivos ficam na mesma pasta e o programa é executado pelo terminal com python3 main.py. O relatório é preenchido nesta página e exportado em PDF pelo navegador.
ENTENDA

Dois arquivos, duas responsabilidades

A ideia central da semana: quem <b>fala com o usuário</b> não é quem <b>mexe nos dados</b>. Essa separação é o que permite trocar o menu sem tocar na lógica — e vice-versa.

main.py Módulo de interface exibe o menu, lê o que ousuário digita e chama asfunções tarefas.py Módulo de lógica guarda a lista e sabeadicionar, listar, concluir eremover main.py importa de tarefas.py — nunca o contrário. A lógica não precisa saber que existe um menu.
As quatro operações em tarefas.pylista_de_tarefas = [] adicionar_tarefa(nome)sem retorno — só inclui na listalistar_tarefas()sem retorno — só exibe, numerando com enumeratemarcar_concluida(numero)recebe o número que o usuário vêremover_tarefa(numero)idem — converte para índice antes de mexer na listaRepare que as quatro trabalham sobre a mesma lista, que vive dentro do módulo de lógica.
O detalhe que engana: numeração x índiceo usuário vê: 1, 2, 3a lista guarda em: 0, 1, 2 indice = numero - 1sempre converta ANTES de acessar a lista enumerate(lista, start=1)numera a exibição começando em 1Contar a partir de 1 é natural para quem usa; contar a partir de 0 é como a lista funciona. O código faz a ponte.

Como preencher este relatório

  1. 1Leia o cenário e observe os diagramas — eles mostram o conceito que a sua resposta precisa usar.
  2. 2Preencha a identificação do grupo no Passo 0.
  3. 3Responda um passo de cada vez, na ordem. Cada passo traz uma dica de como pensar logo abaixo do enunciado.
  4. 4Confira o checklist no final — ele verifica se não ficou nada faltando.
  5. 5Clique em Gerar PDF da resposta. Na janela de impressão, escolha Destino: Salvar como PDF e salve como NOME_TURMA_S14A3.
  6. 6Envie esse PDF no AVA. O que vocês digitarem fica salvo neste computador sozinho — dá para fechar a página e voltar depois.
PASSO 0

Identificação

Estes dados montam a capa e a folha de rosto do relatório em PDF.

PROCEDIMENTOS

Construam a aplicação em três partes

Os códigos de referência abaixo de cada passo foram escritos para esta página, já que o roteiro original veio sem os blocos de código.

1
Parte 1 — Criem os dois arquivos e expliquem a responsabilidade de cada um.
Como pensar: Os dois ficam na mesma pasta. Em tarefas.py, comecem com a lista vazia que vai guardar tudo.
# tarefas.py — módulo de lógica lista_de_tarefas = []
2
Parte 1 — Montem o menu em main.py e testem a fundação.
Como pensar: Neste momento as opções ainda mostram mensagens temporárias. Rodem python3 main.py e testem as opções 1, 2 e 3 antes de seguir.
# main.py — módulo de interface (versão da Parte 1) while True: print("\n=== GERENCIADOR DE TAREFAS ===") print("1. Adicionar tarefa") print("2. Listar tarefas") print("3. Sair") opcao = input("Escolha uma opção: ") if opcao == "1": print("[em breve] adicionar") elif opcao == "2": print("[em breve] listar") elif opcao == "3": print("Até logo!") break else: print("Opção inválida.")
3
Parte 2 — Escrevam adicionar_tarefa e listar_tarefas em tarefas.py.
Como pensar: Cada tarefa guarda duas informações: o nome e se já foi concluída. Na listagem, o enumerate com start=1 numera para o usuário.
# tarefas.py lista_de_tarefas = [] def adicionar_tarefa(nome_tarefa): lista_de_tarefas.append({"nome": nome_tarefa, "concluida": False}) print(f'Tarefa "{nome_tarefa}" adicionada.') def listar_tarefas(): if len(lista_de_tarefas) == 0: print("Nenhuma tarefa cadastrada.") return print("\nSuas tarefas:") for indice, tarefa in enumerate(lista_de_tarefas, start=1): status = "[x]" if tarefa["concluida"] else "[ ]" print(f"{indice}. {status} {tarefa['nome']}")
4
Parte 2 — Conectem as funções ao menu e testem.
Como pensar: Em main.py, importem as funções na primeira linha e troquem as mensagens temporárias pelas chamadas. Adicionem duas ou três tarefas e listem.
# main.py — primeira linha from tarefas import adicionar_tarefa, listar_tarefas # dentro do if/elif if opcao == "1": nome = input("Nome da tarefa: ") adicionar_tarefa(nome) elif opcao == "2": listar_tarefas()
O que fizemosSaída obtidaFuncionou?
Adicionamos 3 tarefas
Listamos as tarefas
5
Parte 3 — Escrevam marcar_concluida e remover_tarefa.
Como pensar: As duas recebem o número que o usuário vê e precisam converter para índice. Validem o intervalo antes de mexer na lista — senão o programa quebra com um número fora da faixa.
def marcar_concluida(numero): indice = numero - 1 if 0 <= indice < len(lista_de_tarefas): lista_de_tarefas[indice]["concluida"] = True print("Tarefa marcada como concluída.") else: print("Número inválido.") def remover_tarefa(numero): indice = numero - 1 if 0 <= indice < len(lista_de_tarefas): removida = lista_de_tarefas.pop(indice) print(f'Tarefa "{removida["nome"]}" removida.') else: print("Número inválido.")
6
Parte 3 — Atualizem o menu e façam o teste final.
Como pensar: O menu passa a ter 5 opções. Testem a sequência completa: adicionar, listar, marcar uma como concluída, listar de novo para ver o [x], e remover.
from tarefas import adicionar_tarefa, listar_tarefas, marcar_concluida, remover_tarefa # novas opções elif opcao == "3": numero = int(input("Número da tarefa: ")) marcar_concluida(numero) elif opcao == "4": numero = int(input("Número da tarefa: ")) remover_tarefa(numero)
Passo do testeSaída obtidaFuncionou?
Adicionar tarefas
Listar
Marcar uma como concluída
Listar de novo (aparece o [x]?)
Remover uma tarefa
7
Colem a versão final dos dois arquivos.
Como pensar: É o resultado da aplicação completa, com separação de responsabilidades.
8
Perguntas de consolidação.
Como pensar: As três do roteiro. A terceira é a mais importante: ela liga uma decisão de código a uma decisão de experiência do usuário.
CONFIRA

Checklist antes de gerar o PDF

Ao clicar em “Gerar PDF da resposta”, o navegador monta o relatório completo no padrão de roteiro de aula prática — com capa, folha de rosto, objetivos, procedimentos, as respostas do grupo e as referências. Na janela de impressão, escolha Destino: Salvar como PDF, salve como NOME_TURMA_S14A3 e envie no AVA.
AVALIAÇÃO

Como esta atividade será avaliada

CritérioPontos
Separação correta entre módulo de interface e módulo de lógica3,0
As quatro funções implementadas e funcionando3,0
Uso de enumerate e conversão correta de numeração para índice2,0
Respostas de consolidação2,0
REFERÊNCIAS

De onde veio o conteúdo desta aula

Curso Técnico em Desenvolvimento de Sistemas
Roteiro de Aula Prática
Lógica e Linguagem de Programação
Gerenciador de tarefas em dois módulos
São Paulo - SP
2026
Roteiro de Aula Prática
Gerenciador de tarefas em dois módulos
Roteiro de Aula Prática apresentado ao componente curricular Lógica e Linguagem de Programação, como requisito parcial de avaliação do 2º bimestre.
São Paulo - SP
2026

Roteiro de Aula Prática

Nome da disciplina: LÓGICA E LINGUAGEM DE PROGRAMAÇÃO
Unidade: 2 – Modularização e separação de responsabilidades
Aula: 3 – Aplicação em módulos: interface e lógica
Base teórica: Capítulos 32 a 40 — funções, parâmetros, return e módulos

Objetivos

  • Separar uma aplicação em módulo de interface e módulo de lógica.
  • Importar funções de um módulo para outro com from … import ….
  • Implementar funções para adicionar, listar, concluir e remover itens de uma lista.
  • Usar enumerate para numerar itens e converter a numeração do usuário em índice de lista.

Solução digital

Python 3 + terminal.

Os dois arquivos ficam na mesma pasta e o programa é executado pelo terminal com python3 main.py. O relatório é preenchido nesta página e exportado em PDF pelo navegador.

Procedimento / Atividade

Atividade proposta: Vocês vão construir um gerenciador de tarefas dividido em dois arquivos: main.py, o módulo de interface, que exibe o menu e conversa com o usuário; e tarefas.py, o módulo de lógica, que guarda e manipula os dados. A aplicação cresce em três partes: primeiro a fundação (menu), depois adicionar e listar, e por fim concluir e remover.

Observação: o card desta atividade no AVA vem intitulado “Do caos à ação: priorizando melhorias”, com um texto de abertura sobre retrospectiva de Sprint — mas o procedimento do roteiro e as perguntas de consolidação são todos sobre esta aplicação em Python. Os blocos de código também não vieram no arquivo do roteiro; o código de referência desta página foi escrito para preencher essa lacuna.

Procedimentos para a realização da atividade

Checklist de entrega

Critérios de avaliação

CritérioPontos
Separação correta entre módulo de interface e módulo de lógica3,0
As quatro funções implementadas e funcionando3,0
Uso de enumerate e conversão correta de numeração para índice2,0
Respostas de consolidação2,0

Referências

  • SEDUC-SP — Roteiro de Atividade Prática SISANO1C1B2S14A3AP (Partes 1 a 3 e perguntas de consolidação).
  • Apostila da disciplina — Capítulos 32 a 40: funções, parâmetros, return, módulos e pacotes.
  • Documentação oficial do Python — Built-in Functions: enumerate().
  • Documentação oficial do Python — Tutorial, seção 6: módulos e import.
salva sozinho neste computador