4.3: Comparar Ciclos e Alternativas ao repeat-until

Agora que já aprendeste a usar os ciclos for e while, a empresa PyTalento pediu-te para explorar outras formas de repetir tarefas e decidir quando usar cada tipo de ciclo. Em algumas linguagens de programação, existe uma estrutura chamada repeat-until, que executa um bloco de código repetidamente até que uma condição seja satisfeita. Embora o Python não tenha um ciclo repeat-until nativo, podemos usar o ciclo while para simular o mesmo comportamento.

Objetivos

  • Compreender as diferenças entre os ciclos for e while.
  • Aprender a simular o comportamento de um ciclo repeat-until usando while.
  • Saber quando usar cada tipo de ciclo.

Comparação entre for e while

Os ciclos for e while têm propósitos ligeiramente diferentes:

  • O ciclo for é ideal para situações em que sabes o número de iterações de antemão, como ao repetir uma tarefa um número fixo de vezes.
  • O ciclo while é mais adequado para quando precisas de repetir uma tarefa até que uma condição seja satisfeita, sem saber exatamente quantas vezes isso vai acontecer.

Exemplo de Ciclo for:

      
  # Exemplo de ciclo for para repetir uma tarefa 5 vezes
  for i in range(5):
      print("Esta é a iteração número:", i)
      
    

Este ciclo for repete-se 5 vezes, já que sabemos de antemão quantas iterações são necessárias.

Exemplo de Ciclo while:

      
  # Exemplo de ciclo while que continua até o utilizador introduzir um número válido
  numero = -1

  while numero < 0:
      numero = int(input("Introduz um número positivo: "))

  print("Número válido introduzido:", numero)
      
    

Neste exemplo, o ciclo while continua até que o utilizador introduza um número positivo. Não sabemos quantas vezes o utilizador terá de introduzir o número corretamente, por isso o ciclo while é mais adequado aqui.

Simular o Ciclo repeat-until com while

Em algumas linguagens de programação, existe um ciclo chamado repeat-until (ou do-while), que garante que o bloco de código é executado pelo menos uma vez e depois continua a repetir-se até que uma condição seja satisfeita. Embora o Python não tenha um ciclo repeat-until, podemos simular o seu comportamento com o ciclo while da seguinte maneira.

Estrutura de um Ciclo repeat-until:

O ciclo repeat-until pode ser descrito assim:

      
  repeat
      bloco de código
  until condição
      
    

Este ciclo executa o "bloco de código" repetidamente até que a "condição" seja verdadeira. A diferença para o while normal é que o bloco de código é sempre executado pelo menos uma vez.

Simulação com while:

Para simular um repeat-until em Python, usamos um ciclo while com a condição invertida. O código pode ser estruturado da seguinte forma:

      
  # Simular repeat-until com while
  while True:
      numero = int(input("Introduz um número positivo: "))

      if numero >= 0:
          break  # Sair do ciclo se a condição for satisfeita

  print("Número válido introduzido:", numero)
      
    

Aqui, usamos o ciclo while True para garantir que o bloco de código é sempre executado pelo menos uma vez. Depois, usamos a instrução break para sair do ciclo quando a condição é satisfeita (neste caso, quando o número introduzido é positivo).

Quando Usar Cada Tipo de Ciclo

De forma geral, deves escolher entre os ciclos for e while com base no seguinte:

  • Usa for quando sabes à partida quantas iterações serão necessárias (por exemplo, repetir 10 vezes).
  • Usa while quando o número de iterações depende de uma condição que pode mudar de forma imprevisível (por exemplo, continuar até que o utilizador introduza um valor válido).
  • Usa while True com uma instrução break para simular um ciclo repeat-until ou quando precisas de garantir que o código será executado pelo menos uma vez.

Exercício Prático

A empresa PyTalento pediu-te que desenvolvas um programa que continue a pedir uma password até que o utilizador introduza a password correta. O programa deve garantir que a mensagem para introduzir a password é exibida pelo menos uma vez. O programa deve seguir os seguintes passos:

Requisitos:

  1. Pede ao utilizador para introduzir a password.
  2. Continua a pedir até que a password correta seja introduzida (podes definir uma password, como "12345").
  3. Quando a password correta for introduzida, imprime uma mensagem de sucesso e termina o programa.

Exemplo de Código:

      
  # Simular o comportamento do repeat-until com while
  password_correta = "12345"

  while True:
      password = input("Introduz a password: ")

      if password == password_correta:
          print("password correta! Acesso permitido.")
          break  # Sair do ciclo quando a password estiver correta
      else:
          print("password incorreta. Tenta novamente.")
      
    
<< 4.2: Ciclo while em Pytho... Índice 5: Funções e Criação de C... >>