Baixe o app para aproveitar ainda mais
Prévia do material em texto
Estrutura de Repetição While Estrutura de Repetição While Comando while Estrutura recomendada quando o número de repetições for desconhecido, sendo necessário um teste (condição) para interromper a repetição. Sintaxe: while CONDIÇÃO: comando A comando B ... #Fim while Fluxo de execução: 1) Avalia a condição, resultando True ou False 2) Se resultar False, sai do laço 3) Se resultar True executa todos os comandos e retorna ao inicio Comando while Alguma variável da CONDIÇÃO deverá ter seu valor alterado através de um comando de leitura ou de atribuição, antes da estrutura de repetição e dentro da estrutura (na maioria das vezes como último comando do laço). # Programa Exemplo teste = 'Sim' while teste == 'Sim': print('Laço executado‘) teste = input('Deseja repetir (Sim/Nao)?: ‘) print() #fim while #Fim Exemplo Boa prática de programação! Procure comentar o código para indicar o término de um laço. Não é obrigatório mas previne erros de identação. Comando while Exemplos errados #Exemplo errado 1 while num > 0: num = int(input('NUM: ')) print('Dobro de', num, '=', 2*num) #fim while Comando while Exemplos errados #Exemplo errado 1 while num > 0: #ERRO: faltou inicializar “num” antes do laço. num = int(input('NUM: ')) print('Dobro de', num, '=', 2*num) #fim while Comando while #Exemplo errado2 valor = 0 while valor <= 0: quadrado = valor**2 print('O quadrado de', valor, '=', quadrado) #fim while Comando while #Exemplo errado2 valor = 0 while valor <= 0: quadrado = valor**2 print('O quadrado de', valor, '=', quadrado) #ERRO: faltou atualizar “valor” dentro do laço. #fim while Este código esta em loop infinito, ou seja, a condição sempre será True. Comando while Exemplo: Substitua um for por while #Exemplo for for k in range(10): print(k) #fim for Comando while Exemplo: Substitua um for por while #Exemplo for for K in range(10): print K #fim for #Equivalente while k = 0 while k < 10: print(k) k = k + 1 #fim while Comando while - Exercícios 1) Ler vários números inteiros e informar o triplo de cada um. O algoritmo acaba quando entra Enter. Comando while - Exercícios 1) Ler vários números inteiros e informar o triplo de cada um. O algoritmo acaba quando entra Enter. # Lê números e informa o triplo de cada um num = input('num: ') while num != '': num = int(num) triplo = 3*num print('O triplo de', num, '=', triplo) num = input('\nnum: ') #fim while Comando while - Exercícios 2) Entrar com vários números enquanto forem positivos. Informar quantos números foram digitados e a média deles. Comando while – Exercício 2 # Retorna a quantidade de números digitados e a média deles num = eval(input('NUM: ')) cont = soma = 0 while num > 0: cont += 1 soma += num num = eval(input('\nNUM: ')) #Fim while media = soma/cont print('\nForam digitados', cont, 'números.') print('A média dos números = %0.1f' %media) Comando while – Exercício 2 # Retorna a quantidade de números digitados e a média deles num = eval(input('NUM: ')) cont = soma = 0 while num > 0: cont += 1 soma += num num = eval(input('\nNUM: ')) #Fim while if cont > 0: media = soma/cont print('\nForam digitados', cont, 'números.') print('A média dos números = %0.1f' %media) Comando while - Exercícios 3) Faça um algoritmo para calcular a área de um triângulo retângulo. Esse programa não pode permitir a entrada de dados inválidos, ou seja, medidas menores ou iguais a 0. Comando while – Exercício 3 # Cálculo da área de um triângulo retângulo base = 0 while base <= 0: base = eval(input('Base: ')) #fim while base alt = 0 while alt <= 0: alt = eval(input('Altura: ')) #fim while alt area = base * alt / 2 print('Área = ', area) Comando while - Exercícios 4) Dados vários números inteiros positivos com três algarismos, informar se o algarismo da casa das centenas é PAR ou ÍMPAR. Interromper o laço se o número tiver menos ou mais de três algarismos. Comando while – Exercício 4 # Retornar se algarismo da casa das centenas é PAR ou ÍMPAR num = eval(input('NUM = ')) while 99 < num < 1000: cent = num//100 if cent%2 == 0: print('Número', cent, 'PAR.‘) else: print('Número', cent, 'IMPAR.‘) num = eval(input('NUM = ')) #fim while Comando while - Exercícios 5) Ler vários números inteiros e informar quantos entre 100 e 200 foram digitados. Quando o valor 0 (zero) for lido, o algoritmo deverá cessar sua execução. Comando while – Exercício 5 # Informa quantos números entre 100 e 200 foram digitados num = int(input('NUM = ')) cont = 0 while num != 0: if 100 < num < 200: cont += 1 num = int(input('NUM = ')) #fim while print('Foram digitados', cont, 'nºs entre 100 e 200.‘) Comando while - Exercícios 6) Faça um algoritmo que leia uma quantidade indeterminada de números inteiros positivos e conte quantos deles estão nos seguintes intervalos: [0-25], [26-50], [51-75] e [76-100]. A entrada de dados deverá terminar quando for lido um número negativo. Comando while – Exercício 6 # Informa a quantidade de número nos intervalos num = int(input('NUM = ')) cont1 = cont2 = cont3 = cont4 = 0 while num >= 0: if num <= 25: cont1 += 1 elif num <= 50: cont2 += 1 elif num <= 75: cont3 += 1 elif num <=100: cont4 += 1 num = int(input('NUM = ')) #fim while print('Quant. de nºs no intervalo [0-25] = ', cont1) print('Quant. de nºs no intervalo [25-50] = ', cont2) print('Quant. de nºs no intervalo [50-75] = ', cont3) print('Quant. de nºs no intervalo [75-100] = ', cont4) Exemplo de teste no final palavra = 'UEM' print(palavra) tamanho = len(palavra) i = tamanho - 1 while True: print(palavra[i]) i -= 1 #outros comandos if i < 0: #teste no final break #fim while Exemplo de teste no final Suponha que você queira, por algum motivo estranho, somar os números naturais (1, 2, 3 etc.) até obter um total maior ou igual a 100. Como seria o laço de repetição em pascal, java e python? Laço em Pascal repeat n := n + 1; total := total + n; until (total >= 100); Laço em Java do { n = n + 1; total = total + n; } while (total < 100); Laço em Python while True: n += 1 total += n if total >= 100: break Teste no final em Python Generalizando, qualquer loop com teste no final pode ser codificado em Python usando- se uma combinação de while e if ... break, assim: while True: comando1 comando2 # etc. if condicao_final: break #fim while Exercicios 1) Faça um algoritmo que leia vários grupos de quatro valores (a,b,c,d) e mostre-os na ordem lida, em ordem crescente e decrescente. Exercicio 1 while True: a = eval(input('a= ')) b = eval(input('b= ')) c = eval(input('c= ')) d = eval(input('d= ')) print('Ordem inicial: ', a,b,c,d) while 1: if a > b: a,b = b,a if b > c: b,c = c,b if c > d: c,d = d,c if a < b < c < d: break #fim while print('Crescente: ', a,b,c,d) print('Decrescente: ', d,c,b,a) if input('\nDigite R para repetir: ').upper() != "R": break #fim while Exercício 2 Faça um algoritmo que leia um número indeterminado de valores para M, todos inteiros e positivos, um de cada vez. Se M for par, verifique quantos divisores possui. Se M for ímpar, calcule a soma dos números inteiros de 1 até M (M não deve entrar nos cálculos). Mostre os resultados doscálculos realizados. Finalize a entrada de dados com M = 0 ou negativo. Exercício 2 while 1: M = int(input('M: ')) if M <= 0: break if M%2 == 0: DIV = 2 for K in range(1, M//2): if M%K == 0: DIV = DIV + 1 print('Divisores = ', DIV) else: SOMA = 0 for K in range(M): SOMA = SOMA + K print('Soma = ', SOMA) #fim while Exercicio 3 Faça um algoritmo que apresente um menu de opções para o cálculo das seguintes operações entre dois números: adição, subtração, multiplicação e divisão. O programa deve possibilitar ao usuário a escolha da operação desejada, a exibição do resultado e a volta ao menu de opções. O programa só termina quando for escolhida a opção de saída. Comando while - Exercícios Dentro de laços é possível usar dois comandos adicionais para ajudar no controle dos mesmos. Os comandos são: break: este comando interrompe a execução do laço. continue: este comando vai para a próxima iteração do laço imediatamente. Exercício 4 O cardápio de uma lanchonete é o seguinte: Especificação Código Preço Cachorro quente 100 R$ 3,50 Bauru simples 101 R$ 4,30 Bauru com ovo 102 R$ 5,00 Hambúrguer 103 R$ 4,00 Cheeseburguer 104 R$ 5,00 Refrigerante 105 R$ 3,50 Faça um algoritmo que leia o código dos itens pedidos e as quantidades desejadas. Calcule e mostre o valor a ser pago por item (preço * quantidade) e o total geral do pedido. Considere que o cliente deve informar quando o pedido deve ser encerrado. # Cardápio de uma lanchonete valor = total = 0 while True: codigo = input('Informe o codigo: ') if codigo == '100': valor = 3.50; esp = 'Cachorro quente' elif codigo == '101': valor = 4.30; esp = 'Bauru simples' elif codigo == '102': valor = 5.00; esp = 'Bauru com ovo' elif codigo == '103': valor = 4.00; esp = 'Hamburguer' elif codigo == '104': valor = 5.00; esp = 'Cheeseburger' elif codigo == '105': valor = 3.50; esp = 'Refrigerante' else: print('Informe um produto valido'); continue qtde = int(input('Informe a quantidade: ')) print('\tQtde: ' , qtde, ' \t\tProduto: ', esp) print('\tUnidade = %5.2f \tTotal = %5.2f' %( valor, valor * qtde)) total += valor * qtde if(input('\nDeseja continuar? (S/N): ').upper() == 'N'): break #fim while print('\nTotal do pedido = %5.2f' %total) Exercício 4
Compartilhar