Baixe o app para aproveitar ainda mais
Prévia do material em texto
Repetição em Python: Laços while ELP11 – Linguagem de Programação I Prof. José Osório IFSP – Campus Pirituba Repetição é a alma da computação Veremos hoje: • Revisão do if • Correção do questionário avaliativo • Comando while • Comandos break e continue • Exercícios Revisão - if e blocos if Condição: comando 1 dentro do if comando 2 dentro do if comando fora do if • Depois da condição tem ':' • Os comandos dentro do if são deslocados para a direita, ou indentados • O primeiro comando não indentado, ou seja, alinhado com o if, está fora do if e marca o fim do bloco. • Esse formato vale também para o else e o elif Correção do questionário avaliativo • Vamos ver diretamente no questionário. Calcule a soma dos números de 1 a 10 Fácil: soma = 1+2+3+4+5+6+7+8+9+10 Resolvido em uma linha. OK, então calcule a soma dos números de 1 a 100. Precisamos de algo melhor. Introduzindo laços while (enquanto) i = 1 # Inicialização soma = 0 while i <= 10: # ENQUANTO i <= 10, executa abaixo print(f'Somando {i}')# Corpo do while soma = soma + i; i = i + 1 # Atualização da variável de controle print(f'A soma de 1 a 10 é {soma}') #Saiu do while • ENQUANTO a condição for satisfeita, executa os comandos indentados. • Testa a condição ANTES do laço • Termina o laço quando a indentação vai para a esquerda. Linhas vazias não contam. • Laços while são muito usados • Note como as variáveis soma e i realmente variam. Início Fluxograma – comando while Preparação Condição FIM Bloco ou comando Verdadeira Falsa Só 10? Quero mais genérico. limite = int(input('Digite o limite da soma: ')) i = 1 # Inicialização soma = 0 while i <= limite: # ENQUANTO True, executa abaixo print(f'Somando {i}') # Corpo do while soma = soma + i; i = i + 1 # Atualização da variável de controle print(f'A soma de 1 a {limite} é {soma}') #Saiu do while Usando o while para perguntar várias vezes ao usuário prompt = ('\nDiga-me algo que eu repito. ' 'Tecle "sair" para encerrar: ') mensagem = '' while mensagem != 'sair': mensagem = input(prompt) print(mensagem) print('Fim') Aninhamento: comandos dentro de comandos • Os comandos que tem blocos, como if, else e while, podem ser aninhados, ou seja, um colocado dentro do outro • Já tínhamos visto if dentro de if. • Podemos também ter um if dentro de um while, ou um while dentro de if, ou dentro de um else. • While dentro de while também é comum. • O poder da computação vem desses aninhamentos. Deixando o usuário decidir quando sair • No exemplo anterior, a mensagem 'sair' também é impressa. E se não quisermos imprimir 'sair'? É fácil resolver o problema com um if: prompt = ('\nDiga-me algo que eu repito. ' 'Tecle "sair" para encerrar: ') mensagem = '' while mensagem != 'sair': mensagem = input(prompt) if mensagem != 'sair' print(mensagem) Usando uma flag (bandeirinha) • Programas podem querer terminar por diversas condições • Essas condições podem aparecer em pontos diferentes do laço while • Testar todas as condições no while pode ser trabalhoso • Podemos usar uma variável para armazenar se o while deve terminar ou não. • Aí o while pode testar somente esta variável. Usando uma flag – exemplo prompt = ('\nDiga-me algo que eu repito. ' 'Tecle "sair" para encerrar: ') ativo = True # Esta é nossa flag while ativo: mensagem = input(prompt) if mensagem == 'sair': ativo = False # Levanta a bandeirinha else: print(mensagem) Usando break para sair de um laço • Você pode sair imediatamente de um laço while usando o comando break. prompt = ('\nDiga-me algo que eu repito. ' 'Tecle "sair" para encerrar: ') while True: mensagem = input(prompt) if mensagem == 'sair': break else: print(mensagem) Início Condição FIM Comando de outras linguagens: do-while. Python não tem. PreparaçãoPreparação Comandos Verda deira Falsa Testa a condição no final do laço Usando break para testar a condição no fim do laço while • Python não tem do-while, mas você pode usar if...break para terminar um laço no seu final while True: ... if condição: break print('fim') Usando continue para "cortar caminho" • continue, no corpo de um laço, volta ao início do laço para testar a condição e, se verdadeira, executar a próxima iteração. O continue pula todo o final do while. • Exemplo: contar de 1 a 10, mas imprimindo só os números ímpares: n_atual = 0 while n_atual < 10: n_atual = n_atual + 1 if n_atual % 2 == 0: continue print(n_atual) print('fim') Evitando laços infinitos • Todo programador um dia vai cometer um erro e seu programa vai cair num laço infinito. Chamamos isso de "entrar em loop". • Pressione Ctrl-C se seu programa não sair normalmente. • Teste bem a condição do seu while para não cair em laços infinitos. Iteração ou repetição – manual do usuário • while é um laço. Em inglês, loop. Outro tipo de laço é o for, que veremos depois • Cada execução do laço se chama iteração. • Pense primeiro no interior do laço. Lá vai ficar o coração do seu algoritmo: como você vai construir o resultado desejado a cada iteração. No caso, é a linha: soma = soma + i • Em seguida, pense na sua variável de controle e como ela vai variar a cada iteração. No caso, é a linha i = i + 1. Essa parte é fácil, em geral. • A seguir, decida se vai checar a condição no início do while, ou se vai usar break para testar no final ou no meio do laço. • Depois, considere a condição para a saída do laço. Tem que sair quando atingir o ponto exato, ou seja, depois de somar o 10 e antes de somar o 11. • Por fim, considere a inicialização correta das variáveis antes do laço. Não seria correto inicializar i com zero nem soma com um. Exercícios • Fazer e entregar, agora durante a aula, o questionário em classe desta semana. São só duas questões.
Compartilhar