01 / 15
Lógica de Programação · OBI · Aula 02

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.

ProfessorGuilherme Antunes FocoPreparação para a OBI Duração50 minutos
02 / 15
Objetivo da Aula

Ao final, você será capaz de.

01

Usar if / else para escolher entre dois caminhos

02

Encadear elif / else if quando existem mais de dois caminhos

03

Combinar condições com operadores lógicos (and/or/not · &&/||/!)

04

Usar condicionais aninhadas para problemas com várias camadas de decisão

03 / 15
Introdução · Analogia

A Bifurcação 🛣️

Saindo de casa, você olha pra janela:

  • SE estiver chovendo → pega o guarda-chuva ☔
  • SENÃO → pega os óculos de sol 🕶️

É exatamente isso que um if / else faz: testa uma condição e escolhe um de dois caminhos.

olha a janela
está chovendo?
SIM
☔ guarda-chuva
NÃO
🕶️ óculos
sai de casa
04 / 15
Conceito · Parte 1

Condicional if / else 🔀

O if executa um bloco só se a condição for verdadeira. O else é o "caso contrário".

Python — indentação
nota = 7

if nota >= 6:
    print("Aprovado ✅")
else:
    print("Reprovado ❌")
JavaScript — chaves
let nota = 7;

if (nota >= 6) {
    console.log("Aprovado ✅");
} else {
    console.log("Reprovado ❌");
}
⚠️ Python marca o bloco com indentação e :. JavaScript usa chaves { } e parênteses na condição.
05 / 15
Mão na massa · Prática

🟢 Praticar: Par ou Ímpar

Fácil

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.

Python — esqueleto
n = int(input("Número: "))

if n % 2 == 0:
    print(n, "é par")
else:
    print(n, "é ímpar")
JavaScript — esqueleto
let n = Number(prompt("Número:"));

if (n % 2 === 0) {
    console.log(n, "é par");
} else {
    console.log(n, "é ímpar");
}
❓ Pergunta

E se o usuário digitar um número negativo? Funciona igual? Por quê?

06 / 15
Revisão · Parte 2

Operadores de Comparação 🧮

Dentro do if, comparamos valores. O resultado sempre é um booleano.

Python
a == b   # igual
a != b   # diferente
a <  b   # menor
a >  b   # maior
a <= b   # menor ou igual
a >= b   # maior ou igual
JavaScript
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
⚠️ Em JS sempre use === e !==. O == faz conversões esquisitas ("5" == 5 vira true) e causa bugs bizarros.
07 / 15
Conceito · Parte 3

Múltiplos Caminhos — elif / else if

Quando a decisão tem mais de dois caminhos, encadeamos condições. Só uma é executada — a primeira que for verdadeira.

Python → elif
nota = 8.5

if nota >= 9:
    print("Conceito A")
elif nota >= 7:
    print("Conceito B")
elif nota >= 5:
    print("Conceito C")
else:
    print("Reprovado")
JavaScript → else if
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");
}
❓ Pergunta

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?

08 / 15
Mão na massa · Prática

🟡 Praticar: Faixa Etária

Médio

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+).

Python — esqueleto
idade = int(input("Idade: "))

if idade < 12:
    print("Criança")
elif idade < 18:
    print("Adolescente")
elif ...:
    print("Adulto")
else:
    print("Idoso")
JavaScript — esqueleto
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");
}
09 / 15
Conceito · Parte 4

Operadores Lógicos 🔗

Combinam várias condições numa só. Resultado é sempre booleano.

E (todos verdadeiros)

and · &&

idade >= 18 and tem_cnh

OU (pelo menos um)

or · ||

dia == "sab" or dia == "dom"

NÃO (inverte)

not · !

not aprovado → vira True se estava False

❓ Pergunta

Se idade = 20 e tem_cnh = False, o resultado de idade >= 18 and tem_cnh é verdadeiro ou falso?

10 / 15
Combinando

if + Operadores Lógicos 🎯

Exemplo: quem pode dirigir? Precisa ter 18+ e CNH.

Python
idade = 20
tem_cnh = True

if idade >= 18 and tem_cnh:
    print("Pode dirigir 🚗")
else:
    print("Não pode dirigir")
JavaScript
let idade = 20;
let temCnh = true;

if (idade >= 18 && temCnh) {
    console.log("Pode dirigir 🚗");
} else {
    console.log("Não pode dirigir");
}
11 / 15
Mão na massa · Desafio

🔴 Praticar: Pode Votar?

Desafio

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".

Python — esqueleto
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")
JavaScript — esqueleto
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");
}
12 / 15
Conceito · Parte 5

Condicionais Aninhadas 🪆

Um if dentro de outro. Usa-se quando a segunda decisão só faz sentido se a primeira já foi tomada.

Python
logado = True
admin = False

if logado:
    if admin:
        print("Painel admin")
    else:
        print("Painel usuário")
else:
    print("Faça login")
JavaScript
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");
}
⚠️ Dica: muitos níveis de aninhamento deixam o código ilegível. Se passar de 3 níveis, provavelmente dá pra simplificar com and/or.
13 / 15
Hora de praticar

Exercícios para Praticar 💪

Fácil

Peça um número. Imprima se é positivo, negativo ou zero.

Médio

Peça 3 números diferentes. Imprima o maior deles (sem usar max() ou Math.max()).

Desafio

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.

14 / 15
Projeto Final

Desafio: Classificador de Triângulo 🏆

1

Peça os 3 lados de um triângulo (a, b, c)

2

Verifique se forma triângulo: cada lado < soma dos outros dois

3

Se não formar → imprima "Não é triângulo"

4

Se formar → Equilátero (3 iguais), Isósceles (2 iguais) ou Escaleno (todos diferentes)

Python — dica
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")
JavaScript — dica
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");
}
15 / 15
Encerramento

O que aprendemos hoje

  • if / else → o programa escolhe um de dois caminhos
  • elif / else if → vários caminhos, só um executa
  • Operadores lógicosand/or/not (Py) · &&/||/! (JS)
  • Aninhadasif dentro de if; evitar mais que 3 níveis
  • Python vs JS → indentação vs chaves; == vs ===
📚 Próxima aula

Listas e laços (for e while) — repetir tarefas sem copiar código.

❓ Pergunta

Qual foi o mais difícil de entender: o encadeamento elif, os operadores lógicos ou as condicionais aninhadas? Por quê?