S04 - Atividade de Aprendizagem (1 de 3): Laços While (While Loops)
Visão Geral
Muitos problemas complexos podem ser resolvidos repetindo tarefas simples de maneira contínua. Por exemplo, um software de edição de imagem ou filme pode repetir o mesmo procedimento para cada quadro do filme ou para cada pixel de uma imagem. Da mesma forma, os programas que modelam os dados financeiros de uma empresa ou realizam análises científicas precisam examinar cada ponto de dados, um após o outro.
Nesta semana, você conhecerá as ferramentas necessárias para fazer com que seus programas executem etapas muitas vezes e aplicará isso criando um enigma de palavras interativo.
Laços de Repetição (Loops)
Uma característica importante dos programas é a capacidade do computador de repetir certas etapas continuamente. Este conceito é chamado de loop e será o tópico desta semana.
Existem diversas variações de loops dependendo da quantidade vezes ou das condições nas quais o programa deve
repetir aquele código. Em Python, dizemos ao programa para fazer um loop usando a palavra-chave for
ou while, dependendo da situação específica.
Material de Preparação
Existem dois tipos de loops em Python, loops while e loops for. Esta atividade de
aprendizagem se concentrará nos loops while, e a próxima nos loops for.
Assista aos seguintes vídeos:
Link Direto: Laços de Repetição While
Link Direto: Variáveis e Laços de Repetição
Um loop while continua enquanto algo ainda é verdade, ou desde que seja verdade,
ou se reformularmos a frase, “até que não seja mais verdade".
Por exemplo, você pode continuar pedindo um número ao usuário enquanto ele digitar números menores que 10 e parar assim que ele inserir um número maior que esse:
numero = 0
# Continue executando o loop enquanto o valor de numero for menor que 10
while numero < 10:
numero = int(input("Qual é o número? "))
print("Loop concluído")
A saída deste programa pode ser assim:
Qual é o número? 3
Qual é o número? 7
Qual é o número? 2
Qual é o número? 24
Loop concluído
Isso também funciona quando o computador está atualizando um valor, em vez de obter informações do usuário (input). O seguinte programa conta até 5 e então para:
# Comece com o número 1
numero = 1
# Continue executando o loop enquanto numero for menor ou igual a 5
while numero <= 5:
# Exiba numero
print(f"O número é: {numero}")
# Atualize numero para ser um a mais do que era
numero = numero + 1
print("Loop concluído")
A saída deste programa deve ser assim:
O número é: 1
O número é: 2
O número é: 3
O número é: 4
O número é: 5
Loop concluído
Declarando variáveis antes de serem usadas
Assim como acontece com as instruções if, quaisquer variáveis que serão usadas na expressão
while precisam ser declaradas e receber valores antes de serem utilizadas nessa
expressão.
No exemplo a seguir, o programa causará um erro porque tenta verificar se numero é menor que 10, mas
a variável ainda não existe.
# EXEMPLO DE CÓDIGO INCORRETO: Este código não define um valor para a variável
# antes dela ser usada no loop
while numero < 10: # ERRO, numero ainda não está definido
numero = int(input("Qual é o número? "))
print("Loop concluído")
O exemplo a seguir corrige o erro definindo um valor para a variável antes dela ser usada no loop.
# EXEMPLO DE CÓDIGO CORRETO: Este código define um valor para a variável
# antes dela ser usada no loop.
numero = 0
while numero < 10:
numero = int(input("Qual é o número? "))
print("Loop concluído")
Em um exemplo como esse, para qual valor você deveria inicializar a variável? A resposta é que você pode escolher
qualquer valor que permita ao programa entrar no loop. No caso acima, o loop será executado enquanto
numero for menor que 10. Então, se começássemos com algo acima de 10, ele nunca funcionaria:
# EXEMPLO DE CÓDIGO INCORRETO: Este código define um valor para a variável que impede
# o código de entrar no loop.
numero = 25 # ERRO: Este valor é maior que 10, então o loop não será executado
while numero < 10: # O corpo deste loop NUNCA será executado
numero = int(input("Qual é o número? "))
print("Loop concluído")
Nos dois exemplos a seguir, o erro é corrigido atribuindo um valor para a variável que permite a execução do loop.
# EXEMPLO DE CÓDIGO RAZOÁVEL: Este código define um valor para a variável
# que permite que o loop seja executado.
# Mas não é o ideal, porque define um valor não padrão de 6.
numero = 6 # Este valor é menor que 10, então o loop será executado, mas não é padrão
while numero < 10: # O corpo deste loop funcionará perfeitamente
numero = int(input("Qual é o número? "))
print("Loop concluído")
# EXEMPLO DE CÓDIGO CORRETO : Este código define um valor para a variável
# que permite que o loop seja executado.
# Ele usa um valor de inicialização padrão de 0.
numero = 0 # Este valor é menor que 10 e é um valor padrão
while numero < 10: # O corpo deste loop funcionará perfeitamente
numero = int(input("Qual é o número? "))
print("Loop concluído")
Observe que nos dois exemplos anteriores, a variável está definida com um valor menor que 10, então o loop será
executado. Tecnicamente, qualquer número menor que 10 funcionaria (incluindo números negativos), mas é prática
comum inicializar variáveis inteiras não utilizadas como 0 ou -1 , inicializar strings
como "" e inicializar variáveis booleanas como False.
Escopo de Variável
Assim como você precisa declarar uma variável antes do loop se quiser usá-la na instrução de condição, as
variáveis que são declaradas primeiro dentro do corpo de um loop (ou uma instrução if) não deveriam
ser usadas após o loop. Às vezes, linguagens de programação como Python permitem que isso funcione, mas não é
considerado uma boa prática, porque pode causar o surgimento de bugs no código que são difíceis de rastrear.
# EXEMPLO DE CÓDIGO INCORRETO: Este código usa a variável "nome" fora do loop em que
# foi declarada
numero = 0
while numero < 10:
numero = int(input("Qual é o número? "))
nome = input("Qual é o seu nome?")
print(f"Seu nome é: {nome}")
# EXEMPLO DE CÓDIGO CORRETO: Este código primeiro declara a variável "nome" antes do loop, para
# que possa ser usado posteriormente.
numero = 0
nome = ""
while numero < 10:
numero = int(input("Qual é o número? "))
nome = input("Qual é o seu nome?")
print(f"Seu nome é: {nome}")
Instruções da Atividade
Demonstre sua compreensão dos loops concluindo a seguinte tarefa.
Escreva um programa em Python que faça cada uma das seguintes funções:
-
Use um loop while para solicitar ao usuário um número positivo (>= 0). Continue perguntando enquanto o número for negativo, então exiba o número. Por exemplo:
-
Use um loop
whilepara simular uma criança pedindo um doce aos pais. Faça com que o programa continue em loop até que o usuário responda “sim" e, então, faça com que o programa exiba “Obrigado". Por exemplo:
Por favor, digite um número positivo: -3
Desculpe, esse número é negativo. Tente novamente.
Por favor, digite um número positivo: -8
Desculpe, esse número é negativo. Tente novamente.
Por favor, digite um número positivo: -1
Desculpe, esse número é negativo. Tente novamente.
Por favor, digite um número positivo: 12
O número é: 12
Posso pegar um doce? não
Posso pegar um doce? não
Posso pegar um doce? não
Posso pegar um doce? não
Posso pegar um doce? sim
Obrigado.
Exemplo de Solução
Exemplo de Solução
Quando terminar seu programa, por favor, consulte o exemplo de solução para comparar sua abordagem com a apresentada.
Primeiro, trabalhe para concluir o programa sem consultar o exemplo de solução. Caso tenha trabalhado por um longo tempo e ainda enfrente dificuldades, sinta-se à vontade para usar o exemplo para ajudá-lo a finalizar seu programa.
Procedimento de Teste
Verifique se seu programa funciona corretamente seguindo cada etapa deste procedimento de teste:
-
Para o programa de números positivos, insira vários números negativos e depois um positivo.
-
Tente inserir um número positivo primeiro e certifique-se de que ele não pergunte novamente.
-
Tente inserir 0 e certifique-se de que ele o trata corretamente como um número positivo.
-
Para o programa de doces, teste seu último loop inserindo diferentes quantidades de “não" antes de finalmente dizer “sim".
-
Tente dizer “sim" na primeira vez e certifique-se de que funciona conforme o esperado.
Envio de Tarefa
Quando você tiver concluído todas as atividades de aprendizagem desta semana, volte ao Canvas e responda ao respectivo questionário.
Próxima Atividade
- S04 - Atividade de Aprendizagem (2 de 3): Laços For (For Loops)
Outros Links:
- Voltar para: Visão Geral da Semana | Página Inicial