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

Listas &
Laços

Guardar vários valores de uma vez e fazer o computador repetir tarefas por nós — em Python e JavaScript.

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

Ao final, você será capaz de.

01

Entender o que é uma lista (Python) / array (JS)

02

Criar, acessar e modificar listas nas duas linguagens

03

Usar os laços for e while corretamente

04

Combinar lista + repetição para resolver problemas reais

03 / 15
Introdução · Analogia

A Chamada da Sala 📋

Imagine que o professor precisa fazer a chamada:

  • Ele tem uma lista com os nomes dos alunos
  • Ele percorre a lista, um por um
  • Para cada aluno, faz a mesma ação: "Presente?"

Isso é exatamente o que faremos hoje — em duas linguagens.

[0] Ana✓ presente
[1] Bruno✓ presente
[2] Carla✓ presente
[3] Diego✓ presente
04 / 15
Conceito · Parte 1

Lista / Array 📦

Uma coleção ordenada de valores guardada em uma única variável. Cada item tem um índice começando em 0.

Python → list
alunos = ["Ana", "Bruno", "Carla", "Diego"]

print(alunos[0])   # Ana
print(alunos[2])   # Carla
print(alunos[-1])  # Diego (último)
JavaScript → array
let alunos = ["Ana", "Bruno", "Carla", "Diego"];

console.log(alunos[0]);   // Ana
console.log(alunos[2]);   // Carla
console.log(alunos.at(-1)); // Diego (último)
[0]Ana
[1]Bruno
[2]Carla
[3]Diego
❓ Pergunta

Se eu quiser imprimir "Bruno", qual índice eu uso? E em JS, o que muda?

05 / 15
Kit Essencial

Operações com Listas 🛠️

Python
notas = [7, 8, 6]

notas.append(9)   # adiciona no final
notas.remove(6)   # remove pelo valor
len(notas)        # tamanho → 3

# [7, 8, 9]
JavaScript
let notas = [7, 8, 6];

notas.push(9);              // adiciona no final
notas = notas.filter(n => n !== 6); // remove pelo valor
notas.length;               // tamanho → 3

// [7, 8, 9]
⚠️ Equivalências: appendpush · len(lista)lista.length. Remoção pelo valor em JS não tem método direto — usamos filter.
06 / 15
Mão na massa · Prática

🟢 Praticar: Listas

Fácil

Situação: Monte a lista de presença do dia. Um aluno atrasado chega, outro sai mais cedo.

Python — esqueleto
presentes = [ ... ]   # 4 nomes

presentes.append( ... )
presentes.remove( ... )

print(presentes)
print(len(presentes))
print(presentes[0])
print(presentes[-1])
JavaScript — esqueleto
let presentes = [ ... ];  // 4 nomes

presentes.push( ... );
presentes = presentes.filter(n => n !== ...);

console.log(presentes);
console.log(presentes.length);
console.log(presentes[0]);
console.log(presentes.at(-1));
07 / 15
Repetição · Parte 1

Laço for 🔁

Percorre cada item de uma lista automaticamente.

Python → for x in lista
alunos = ["Ana", "Bruno", "Carla"]

for nome in alunos:
    print("Presente?", nome)
JavaScript → for ... of
let alunos = ["Ana", "Bruno", "Carla"];

for (let nome of alunos) {
    console.log("Presente?", nome);
}

"para cada nome dentro de alunos, faça…"

❓ Pergunta

Quantas vezes o print / console.log vai executar se eu adicionar mais 2 alunos?

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

🟡 Praticar: FOR

Médio

Situação: 5 notas. Descubra quem passou (≥ 6) e conte o total de aprovados.

Python
notas = [7.5, 4.0, 8.2, 5.9, 9.1]
aprovados = 0

for nota in notas:
    if ... :
        print("Aprovado ✅", nota)
        aprovados = ...
    else:
        print("Reprovado ❌", nota)

print("Total aprovados:", aprovados)
JavaScript
let notas = [7.5, 4.0, 8.2, 5.9, 9.1];
let aprovados = 0;

for (let nota of notas) {
    if (...) {
        console.log("Aprovado ✅", nota);
        aprovados = ...;
    } else {
        console.log("Reprovado ❌", nota);
    }
}

console.log("Total aprovados:", aprovados);
09 / 15
Repetição · Parte 2

Laço while

Repete enquanto uma condição for verdadeira.

Python
contador = 1

while contador <= 3:
    print("Rodada", contador)
    contador = contador + 1
JavaScript
let contador = 1;

while (contador <= 3) {
    console.log("Rodada", contador);
    contador = contador + 1;
}
⚠️ Cuidado: se a condição nunca ficar falsa, o programa trava em loop infinito! Sempre altere a variável de controle dentro do laço.
10 / 15
Mão na massa · Desafio

🔴 Praticar: WHILE

Desafio

Situação: Sistema de senha do Wi-Fi — até 3 tentativas.

Python
senha_correta = "consa2026"
tentativas = 0

while tentativas < 3:
    senha = input("Digite a senha: ")
    if senha == senha_correta:
        print("✅ Acesso liberado!")
        break
    else:
        tentativas += 1
        print("❌ Restam:", 3 - tentativas)
JavaScript
const senhaCorreta = "consa2026";
let tentativas = 0;

while (tentativas < 3) {
    let senha = prompt("Digite a senha:");
    if (senha === senhaCorreta) {
        console.log("✅ Acesso liberado!");
        break;
    } else {
        tentativas += 1;
        console.log("❌ Restam:", 3 - tentativas);
    }
}
11 / 15
Combinando tudo

Lista + for: Calculando a Média 🎯

Python
notas = [7.5, 8.0, 6.5, 9.0]
soma = 0

for nota in notas:
    soma = soma + nota

media = soma / len(notas)
print("Média:", media)
JavaScript
let notas = [7.5, 8.0, 6.5, 9.0];
let soma = 0;

for (let nota of notas) {
    soma = soma + nota;
}

let media = soma / notas.length;
console.log("Média:", media);

Padrão clássico: acumulador → somatório → divisão. A lógica é idêntica nas duas linguagens.

12 / 15
Aplicação

Exemplos do Mundo Real 🌎

Carrinho de compras — total

Python
carrinho = [19.90, 5.50, 42.00]
total = 0
for preco in carrinho:
    total += preco
print("Total: R$", total)
JavaScript
let carrinho = [19.90, 5.50, 42.00];
let total = 0;
for (let preco of carrinho) {
    total += preco;
}
console.log("Total: R$", total);

Mesma estrutura: uma lista + um for passando por ela. Muda só o que acontece dentro.

13 / 15
Hora de praticar

Exercícios para Praticar 💪

Fácil

Crie uma lista com 5 frutas e imprima cada uma. Faça em Python e JS.

Médio

Dada uma lista de idades, conte quantas pessoas são maiores de 18.

Desafio

Peça 5 nomes (input/prompt), guarde numa lista e imprima.

Python — dica
alunos = []
for i in range(5):
    nome = input("Nome: ")
    alunos.append(nome)
print(alunos)
JavaScript — dica
let alunos = [];
for (let i = 0; i < 5; i++) {
    let nome = prompt("Nome:");
    alunos.push(nome);
}
console.log(alunos);
14 / 15
Projeto Final

Desafio: Mini Sistema de Notas 🏆

1

Peça o nome de 3 alunos e suas notas

2

Guarde em duas listas (nomes e notas)

3

Mostre a média da turma

4

Informe quem ficou acima da média

Python — dica de início
nomes = []
notas = []
# use for + input() + append() + len()...
JavaScript — dica de início
let nomes = [];
let notas = [];
// use for + prompt() + push() + .length...
15 / 15
Encerramento

O que aprendemos hoje

  • Listas / arrays → guardar várias informações em uma variável
  • Operaçõesappend/push, remove/filter, len/length
  • Laço for → repetir para cada item (for x in vs for ... of)
  • Laço while → repetir enquanto algo for verdade
  • Python vs JS → indentação vs chaves; lógica idêntica, sintaxe diferente
📚 Próxima aula

Listas dentro de listas (matrizes) e problemas clássicos da OBI!

❓ Pergunta

Das duas sintaxes de for, qual ficou mais clara pra você? Qual você usaria numa prova da OBI?