Condicionais
& Decisões
Agora o programa passa a tomar decisões: se algo é verdade, faça X; caso contrário, faça Y. Em Python e JavaScript lado a lado.
Agora o programa passa a tomar decisões: se algo é verdade, faça X; caso contrário, faça Y. Em Python e JavaScript lado a lado.
Usar if / else para escolher entre dois caminhos
Encadear elif / else if quando existem mais de dois caminhos
Combinar condições com operadores lógicos (and/or/not · &&/||/!)
Usar condicionais aninhadas para problemas com várias camadas de decisão
Saindo de casa, você olha pra janela:
É exatamente isso que um if / else faz: testa uma condição e escolhe um de dois caminhos.
O if executa um bloco só se a condição for verdadeira. O else é o "caso contrário".
nota = 7
if nota >= 6:
print("Aprovado ✅")
else:
print("Reprovado ❌")
let nota = 7;
if (nota >= 6) {
console.log("Aprovado ✅");
} else {
console.log("Reprovado ❌");
}
:. JavaScript usa chaves { } e parênteses na condição.
Situação: Peça um número inteiro ao usuário e descubra se ele é par ou ímpar. Dica: o resto da divisão por 2 (%) diz tudo.
n = int(input("Número: "))
if n % 2 == 0:
print(n, "é par")
else:
print(n, "é ímpar")
let n = Number(prompt("Número:"));
if (n % 2 === 0) {
console.log(n, "é par");
} else {
console.log(n, "é ímpar");
}
E se o usuário digitar um número negativo? Funciona igual? Por quê?
Dentro do if, comparamos valores. O resultado sempre é um booleano.
a == b # igual
a != b # diferente
a < b # menor
a > b # maior
a <= b # menor ou igual
a >= b # maior ou igual
a === b // igual (use 3 iguais!)
a !== b // diferente
a < b // menor
a > b // maior
a <= b // menor ou igual
a >= b // maior ou igual
=== e !==. O == faz conversões esquisitas ("5" == 5 vira true) e causa bugs bizarros.
Quando a decisão tem mais de dois caminhos, encadeamos condições. Só uma é executada — a primeira que for verdadeira.
nota = 8.5
if nota >= 9:
print("Conceito A")
elif nota >= 7:
print("Conceito B")
elif nota >= 5:
print("Conceito C")
else:
print("Reprovado")
let nota = 8.5;
if (nota >= 9) {
console.log("Conceito A");
} else if (nota >= 7) {
console.log("Conceito B");
} else if (nota >= 5) {
console.log("Conceito C");
} else {
console.log("Reprovado");
}
Se nota = 10, qual conceito aparece? E se fosse nota = 9? Por que o código não imprime dois conceitos mesmo com nota = 10 satisfazendo várias condições?
Situação: Peça a idade do usuário e imprima a categoria: Criança (< 12), Adolescente (12–17), Adulto (18–59) ou Idoso (60+).
idade = int(input("Idade: "))
if idade < 12:
print("Criança")
elif idade < 18:
print("Adolescente")
elif ...:
print("Adulto")
else:
print("Idoso")
let idade = Number(prompt("Idade:"));
if (idade < 12) {
console.log("Criança");
} else if (idade < 18) {
console.log("Adolescente");
} else if (...) {
console.log("Adulto");
} else {
console.log("Idoso");
}
Combinam várias condições numa só. Resultado é sempre booleano.
idade >= 18 and tem_cnh
dia == "sab" or dia == "dom"
not aprovado → vira True se estava False
Se idade = 20 e tem_cnh = False, o resultado de idade >= 18 and tem_cnh é verdadeiro ou falso?
Exemplo: quem pode dirigir? Precisa ter 18+ e CNH.
idade = 20
tem_cnh = True
if idade >= 18 and tem_cnh:
print("Pode dirigir 🚗")
else:
print("Não pode dirigir")
let idade = 20;
let temCnh = true;
if (idade >= 18 && temCnh) {
console.log("Pode dirigir 🚗");
} else {
console.log("Não pode dirigir");
}
Situação: No Brasil o voto é obrigatório dos 18 aos 69 anos, e opcional aos 16/17 e 70+. Peça a idade e imprima: "não vota", "voto opcional" ou "voto obrigatório".
idade = int(input("Idade: "))
if idade < 16:
print("não vota")
elif (idade >= 16 and idade < 18) or idade >= 70:
print("voto opcional")
else:
print("voto obrigatório")
let idade = Number(prompt("Idade:"));
if (idade < 16) {
console.log("não vota");
} else if ((idade >= 16 && idade < 18) || idade >= 70) {
console.log("voto opcional");
} else {
console.log("voto obrigatório");
}
Um if dentro de outro. Usa-se quando a segunda decisão só faz sentido se a primeira já foi tomada.
logado = True
admin = False
if logado:
if admin:
print("Painel admin")
else:
print("Painel usuário")
else:
print("Faça login")
let logado = true;
let admin = false;
if (logado) {
if (admin) {
console.log("Painel admin");
} else {
console.log("Painel usuário");
}
} else {
console.log("Faça login");
}
and/or.
Peça um número. Imprima se é positivo, negativo ou zero.
Peça 3 números diferentes. Imprima o maior deles (sem usar max() ou Math.max()).
Peça um ano e diga se é bissexto. Regra: divisível por 4 E (não divisível por 100 OU divisível por 400).
Faça cada um em Python e em JavaScript.
Peça os 3 lados de um triângulo (a, b, c)
Verifique se forma triângulo: cada lado < soma dos outros dois
Se não formar → imprima "Não é triângulo"
Se formar → Equilátero (3 iguais), Isósceles (2 iguais) ou Escaleno (todos diferentes)
a = float(input("Lado a: "))
b = float(input("Lado b: "))
c = float(input("Lado c: "))
if a < b + c and b < a + c and c < a + b:
# é triângulo — classifique
...
else:
print("Não é triângulo")
let a = parseFloat(prompt("Lado a:"));
let b = parseFloat(prompt("Lado b:"));
let c = parseFloat(prompt("Lado c:"));
if (a < b + c && b < a + c && c < a + b) {
// é triângulo — classifique
...
} else {
console.log("Não é triângulo");
}
and/or/not (Py) · &&/||/! (JS)if dentro de if; evitar mais que 3 níveis== vs ===Listas e laços (for e while) — repetir tarefas sem copiar código.
Qual foi o mais difícil de entender: o encadeamento elif, os operadores lógicos ou as condicionais aninhadas? Por quê?