Fluxo de dados e validação inicial

Organizar entrada, transformação, verificação e saída em etapas claras.

Fluxo de dados e validação inicial

Objetivo da aula

Organizar entrada, transformação, verificação e saída em etapas claras.

Regra desta aula: vamos assumir que você nunca viu este assunto antes. Nenhum termo importante será usado sem explicação e todo exemplo deve ser entendido linha por linha, não apenas copiado.

Começando do zero

Um programa interativo confiável costuma separar etapas. Primeiro recebe dados, depois tenta convertê-los, valida regras, processa e só então mostra o resultado. Quando tudo é misturado em uma expressão gigante, fica difícil descobrir se o problema estava na entrada, na conversão, na regra ou na apresentação.

Uma imagem mental para entender

Pense em uma pequena fábrica: matéria-prima entra, passa por inspeção, é transformada e depois embalada. Se uma peça defeituosa entrar direto na máquina sem inspeção, o problema se espalha. O fluxo de dados de um programa também se beneficia de etapas claras.

Conceitos essenciais, sem pular etapas

Receber

Capturar o dado bruto, muitas vezes como texto.

Converter

Interpretar o formato para o tipo necessário.

Validar

Verificar regras do domínio, como limites e valores permitidos.

Processar

Executar o cálculo ou transformação principal apenas com dados já considerados válidos para aquele caminho.

Apresentar

Explicar o resultado ao usuário com contexto e unidades.

Modelo mental

ENTRADA BRUTA → CONVERSÃO → VALIDAÇÃO → PROCESSAMENTO → SAÍDA

Exemplo 1 — primeiro veja o programa inteiro

idade_texto = input("Idade (0 a 120): ")
idade = int(idade_texto)

idade_valida = 0 <= idade <= 120
print("Idade válida?", idade_valida)

if idade_valida:
    proxima_idade = idade + 1
    print("No próximo aniversário:", proxima_idade)

Agora vamos ler linha por linha

  • A entrada chega como texto.
  • A conversão cria um inteiro ou falha se o formato não for numérico.
  • A comparação verifica a regra de faixa.
  • O cálculo só acontece quando a condição indica que o valor atende à regra. Aqui já usamos um if simples como antecipação do módulo seguinte.

Saída esperada

A saída depende da entrada fornecida.

Exemplo 2 — o mesmo conceito em outra situação

nota = float(input("Nota de 0 a 10: "))
valida = 0 <= nota <= 10
print("Entrada válida?", valida)

Converter para float não garante que a nota esteja na faixa. O valor 99.0 é um float válido e ainda assim viola a regra do domínio.

Experimento guiado

Não pule esta parte. Programação só começa a fazer sentido quando você prevê um resultado, executa e compara a previsão com o que realmente aconteceu.

  1. Liste as cinco etapas do fluxo para um cadastro de quantidade de produtos.
  2. Digite um valor numérico fora da faixa e observe que a conversão funciona, mas a validação falha.
  3. Escreva nomes intermediários como nota_valida em vez de esconder toda a regra em uma mensagem.
  4. Explique qual etapa falharia se o usuário digitasse “dez” em vez de “10”.

Mini desafio

Modele o fluxo para temperatura entre -50 e 60 °C: receber texto, converter para float, validar faixa e mostrar se o dado é aceitável.

Solução comentada

temperatura_texto = input("Temperatura em °C (-50 a 60): ")
temperatura = float(temperatura_texto)
valida = -50 <= temperatura <= 60
print("Temperatura válida?", valida)

Depois de executar a solução, altere pelo menos um valor e explique por que o novo resultado mudou. Se você só copiou e não consegue explicar cada linha, refaça o desafio em uma versão menor.

Erros comuns e por que acontecem

  • Misturar entrada, conversão, validação e cálculo em uma linha difícil de investigar.
  • Achar que “é número” significa “é válido”.
  • Esquecer unidade ou faixa no prompt e tornar a entrada ambígua.
  • Usar um valor inválido mesmo depois de detectar que a validação falhou.

Cheque se você realmente entendeu

Qual etapa vem depois da conversão?

Resposta: Normalmente a validação das regras do domínio.

O número 150 pode ser um int válido e uma idade inválida?

Resposta: Sim. Tipo e regra do domínio são questões diferentes.

Por que separar etapas?

Resposta: Para tornar o fluxo compreensível, testável e mais fácil de depurar.

Resumo em linguagem simples

Nesta aula, o ponto central foi Fluxo de dados e validação inicial. Tente explicar o modelo ENTRADA BRUTA → CONVERSÃO → VALIDAÇÃO → PROCESSAMENTO → SAÍDA sem olhar a tela. Depois, escreva um exemplo próprio menor que os apresentados. Esse exercício de explicação é parte do aprendizado, não um extra.

Conexão com a próxima aula

Na próxima aula, Condição booleana e if, vamos aproveitar exatamente o que foi construído aqui. Você não precisa memorizar tudo; precisa conseguir reconhecer o conceito e reconstruí-lo com raciocínio e testes.