Pular para o conteúdo principal

Aula 07: Estruturas de Repetição (FOR e WHILE)

Objetivos de Aprendizagem​

Ao final desta aula, você deve ser capaz de:

  1. Usar o laço for para iterar sobre sequências.
  2. Usar range() para gerar sequências numéricas.
  3. Usar o laço while para repetir enquanto uma condição for verdadeira.
  4. Controlar laços com break e continue.
  5. Escolher entre for e while de acordo com o problema.

Conteúdo​

1) Laço for​

O laço for percorre cada elemento de uma sequência (lista, string, etc.).

frutas = ["maçã", "banana", "laranja"]
for fruta in frutas:
print(fruta)

Saída esperada:

maçã
banana
laranja

2) Função range()​

range() gera uma sequência de inteiros, muito usada com for.

# range(fim): de 0 até fim-1
for i in range(5):
print(i) # 0, 1, 2, 3, 4

# range(inicio, fim): de inicio até fim-1
for i in range(2, 6):
print(i) # 2, 3, 4, 5

# range(inicio, fim, passo)
for i in range(0, 10, 2):
print(i) # 0, 2, 4, 6, 8

Exemplo: tabuada​

def tabuada(numero):
for i in range(1, 11):
print(f"{numero} x {i} = {numero * i}")

tabuada(7)

3) Laço while​

O laço while repete enquanto uma condição for True.

contador = 0
while contador < 5:
print(f"Contagem: {contador}")
contador += 1

Atenção: sempre garanta que a condição vai se tornar False em algum momento, caso contrário o programa entra em loop infinito.

Exemplo: adivinha o número​

import random

numero_secreto = random.randint(1, 10)
tentativa = 0

while tentativa != numero_secreto:
tentativa = int(input("Adivinhe (1-10): "))
if tentativa < numero_secreto:
print("Muito baixo!")
elif tentativa > numero_secreto:
print("Muito alto!")

print("Acertou!")

4) break — interromper o laço​

break encerra o laço imediatamente, independente da condição.

for numero in range(1, 11):
if numero == 5:
break
print(numero)
# Imprime: 1, 2, 3, 4

Uso típico: busca em sequência​

nomes = ["Alice", "Bob", "Carol", "Diana"]
busca = "Carol"

for nome in nomes:
if nome == busca:
print(f"Encontrado: {nome}")
break

5) continue — pular para a próxima iteração​

continue pula o restante do corpo do laço e vai para a próxima iteração.

for numero in range(1, 11):
if numero % 2 == 0:
continue
print(numero)
# Imprime apenas os ímpares: 1, 3, 5, 7, 9

6) Quando usar for ou while?​

SituaçãoRecomendação
Iterar sobre uma coleção de elementosfor
Repetir um número fixo de vezesfor com range()
Repetir enquanto uma condição não for atingidawhile
Número de repetições desconhecido antecipadamentewhile

7) Exemplos contextualizados​

Exemplo A: soma de uma lista de notas​

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

for nota in notas:
soma += nota

media = soma / len(notas)
print(f"Média da turma: {media:.2f}")

Saída esperada: Média da turma: 7.30

Exemplo B: validação de entrada com while​

idade = -1
while idade < 0 or idade > 120:
idade = int(input("Digite sua idade: "))

print(f"Idade válida: {idade}")

Exemplo C: múltiplos lançamentos de um conjunto de dados​

from random import randint


def lancar_dado(numero_faces):
return randint(1, numero_faces)


def lancar_conjunto(numero_faces, numero_dados):
valores = ""
soma = 0

for indice_dado in range(numero_dados):
valor = lancar_dado(numero_faces)
soma += valor

if indice_dado == 0:
valores = f"{valor}"
else:
valores = f"{valores}, {valor}"

return valores, soma


faces = int(input("Número de faces do dado: "))
qtd_dados = int(input("Número de dados no conjunto: "))
qtd_lancamentos = int(input("Número de lançamentos: "))

for lancamento in range(qtd_lancamentos):
valores, soma = lancar_conjunto(faces, qtd_dados)
print(f"Lançamento {lancamento + 1}: {valores} (soma = {soma})")

Exemplo de uso:

  • Entrada: faces = 6, qtd_dados = 3, qtd_lancamentos = 4
  • Saída (valores variam):
    • Lançamento 1: 2, 6, 1 (soma = 9)
    • Lançamento 2: 5, 3, 4 (soma = 12)
    • Lançamento 3: 1, 1, 6 (soma = 8)
    • Lançamento 4: 4, 2, 2 (soma = 8)

Exercícios (checkpoints)​

  1. Use for e range() para imprimir os números de 1 a 10.
    • Critério de verificação: todos os números de 1 a 10 devem aparecer, um por linha.
  2. Escreva um programa que soma os números de 1 a 100 usando for.
    • Critério de verificação: o resultado deve ser 5050.
  3. Use while para pedir ao usuário um número positivo, repetindo enquanto ele digitar um negativo.
    • Critério de verificação: o laço só deve encerrar quando o usuário digitar um valor >= 0.
  4. Percorra uma lista de palavras e imprima apenas as que têm mais de 4 letras usando continue.
    • Critério de verificação: palavras com 4 letras ou menos não devem aparecer.
  5. Use for com break para encontrar o primeiro número divisível por 7 no intervalo de 1 a 50.
    • Critério de verificação: o resultado deve ser 7.
  6. Crie uma função contar_pares(lista) que retorna a quantidade de números pares na lista usando for.
    • Critério de verificação: para [1, 2, 3, 4, 5, 6], o resultado deve ser 3.

Referências​

Principais​

Aprofundamento​