Condições compostas e aninhamento
Objetivo da aula
Escolher entre combinar condições e aninhar decisões.
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
Algumas regras dependem de mais de uma condição. Podemos combinar perguntas com and, or e not, ou colocar uma decisão dentro de outra. O objetivo não é “usar o máximo de operadores”; é escrever a regra de forma que uma pessoa consiga conferir.
Uma imagem mental para entender
Pense em uma autorização: “pode entrar se tiver ingresso e idade mínima”. Isso é uma regra composta. Já “se tiver ingresso, então verifique a idade” é uma forma aninhada de representar passos. As duas podem produzir resultados semelhantes, mas contam a história de maneiras diferentes.
Conceitos essenciais, sem pular etapas
Condição composta
Combina expressões booleanas em uma condição maior, como tem_ingresso and idade >= 18.
Aninhamento
É um if dentro de outro. Pode ser útil quando a segunda pergunta só faz sentido depois da primeira, mas excesso de níveis dificulta leitura.
Nomes intermediários
Guardar partes da regra em nomes como idade_ok e pagamento_ok pode tornar a condição final mais clara.
Parênteses
Podem deixar explícita a intenção em expressões com combinações de and e or. Quando a regra está difícil de explicar, quebre-a em partes.
Modelo mental
CONDIÇÕES SIMPLES → NOMES INTERMEDIÁRIOS → REGRA COMPOSTA → DECISÃO
Exemplo 1 — primeiro veja o programa inteiro
idade = 20
tem_ingresso = True
bloqueado = False
idade_ok = idade >= 18
pode_entrar = tem_ingresso and idade_ok and not bloqueado
if pode_entrar:
print("Entrada liberada")
else:
print("Entrada negada")
Agora vamos ler linha por linha
- A comparação da idade vira um booleano nomeado.
not bloqueadoexige que o estado bloqueado seja falso.- A variável
pode_entrarreúne a regra completa em um nome legível. - O
iffica simples: ele só pergunta pelo resultado da regra.
Saída esperada
Entrada liberada
Exemplo 2 — o mesmo conceito em outra situação
tem_ingresso = True
idade = 16
if tem_ingresso:
if idade >= 18:
print("Entrada liberada")
else:
print("Idade insuficiente")
else:
print("Sem ingresso")
O aninhamento permite mensagens diferentes para motivos diferentes. Porém, conforme o número de níveis aumenta, funções e regras intermediárias podem ser melhores.
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.
- Teste o primeiro exemplo mudando uma condição por vez.
- Escreva uma tabela de casos: ingresso sim/não, idade suficiente sim/não, bloqueado sim/não.
- Compare a versão composta e a aninhada. Qual comunica melhor a necessidade do seu exercício?
- Evite mais níveis de aninhamento do que consegue explicar facilmente em voz alta.
Mini desafio
Uma compra é aprovada se houver estoque e o pagamento estiver aprovado, desde que a conta não esteja bloqueada. Modele a condição com nomes intermediários.
Solução comentada
tem_estoque = True
pagamento_aprovado = True
conta_bloqueada = False
compra_aprovada = tem_estoque and pagamento_aprovado and not conta_bloqueada
print("Compra aprovada?", compra_aprovada)
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
- Escrever uma condição longa sem separar conceitos.
- Usar aninhamento profundo para regras que poderiam ser nomeadas e testadas separadamente.
- Esquecer como
notaltera a leitura da condição. - Misturar “e” e “ou” sem parênteses ou sem testar combinações relevantes.
Cheque se você realmente entendeu
Quando um nome intermediário ajuda?
Resposta: Quando uma parte da regra tem significado próprio e torna a condição final mais legível.
Aninhamento é sempre ruim?
Resposta: Não. Ele é útil quando uma decisão depende claramente de outra, mas deve ser usado com cuidado.
Como testar uma condição composta?
Resposta: Variando sistematicamente as combinações dos valores booleanos e verificando fronteiras numéricas.
Resumo em linguagem simples
Nesta aula, o ponto central foi Condições compostas e aninhamento. Tente explicar o modelo CONDIÇÕES SIMPLES → NOMES INTERMEDIÁRIOS → REGRA COMPOSTA → DECISÃO 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, Projetando e testando regras, 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.