Estruturas
De Repetição
Kethllen Andrey Santos
UFU
2016
Informática para Biotecnologia
As estruturas de repetição são recursos que permitem que um certo trecho do código do programa seja repetido, um determinado número de vezes.
Em python temos as seguintes estruturas de repetição : while e for
Estruturas de repetição

- O while é um comando que manda um bloco de código ser executado "enquanto" uma condição for satisfeita. Assim, permite que sejam criados loops de execução, como temos em jogos e aplicativos com interface gráfica.
- O while é um comando muito útil, mas pode ser perigoso, pois se não tratarmos corretamente o critério de parada , o laço pode ser interminável, e o programa não faz o que deveria fazer.
While
# Soma de 0 a 100 incorreta(laço infinito)
soma=0
numero=1
while numero<=100:
soma+=numero
print soma
# Soma de 0 a 100 correta
soma=0
numero=1
while numero<=100:
soma+=numero
numero+=1
print soma
5050
- É a junção de dois ou mais while, um dentro do outro, ou seja aninhados, assim como vimos com as condições de decisões (if, else, elif).
- Agora resolveremos um exemplo para ficar mais claro:
Dado um número 'n' de empresa e
um numero 'm' de meses, e o ganho
e gastos positivos e inteiros de cada mês ,
imprimir se a empresa ficou comdéfice,
lucro, ou indiferente ,e imprimir o valor
corresponde a essa balança.
Veja o Exemplo de Execução ao lado:
Nested while loops
Digite o numero de empresas: 2
Digite o numero de meses: 2
Empresa 1:
Mes 1:
Digite o ganho da empresa no mes: 500
Digite o gasto da empresa no mes: 500
Mes 2:
Digite o ganho da empresa no mes: 600
Digite o gasto da empresa no mes: 600
A empresa 1 ficou indiferente(balança = R$ 0)
Empresa 2:
Mes 1:
Digite o ganho da empresa no mes: 500
Digite o gasto da empresa no mes: 600
Mes 2:
Digite o ganho da empresa no mes: 800
Digite o gasto da empresa no mes: 1000
A empresa 2 fechou com defice de R$ -300
Código de resolução
>>> #Resolucao do exemplo
n = int(input("Digite o numero de empresas: "))
m = int(input("Digite o numero de meses: "))
empresa = 1
while empresa <= n:
mes=1
balanca = 0
print 'Empresa', empresa, ':'
while mes <= m:
print 'Mes', mes, ':'
ganho = int(input("Digite o ganho da empresas no mes: "))
gasto = int(input("Digite o gasto da empresas no mes: "))
balanca = balanca + ganho - gasto
mes = mes +1
if balanca == 0:
print 'A empresa',empresa,'ficou indiferente(balanca = R$ 0)'
elif balanca > 0:
print'A empresa',empresa,'fechou com lucro de',balanca
else:
print'A empresa',empresa,'fechou com defice de',balanca
empresa = empresa +1
A estrutura de repetição for é um ciclo que percorre uma determinada sequência a partir do uso de uma variável qualquer. Uma das vantagens de usar essa estrutura, é que ela dispensa o "incremento" da sua variável, ou seja ela já realiza isso por si só observe:
For
#imprimir uma sequência de 0 a 9
for i in range(10):
print(i)
0
1
2
3
4
5
6
7
8
9
#imprimir uma lista de inteiros
l = [1,2,3,4,5]
for i in l:
print(i)
1
2
3
4
5
#imprimir uma lista de strings
d = ['arroz', 'feijao', 'carne', 'batata']
for i in d:
print 'Estou cozinhando ', i
Estou cozinhando arroz
Estou cozinhando feijao
Estou cozinhando carne
Estou cozinhando batata
A função range(inicio, parada, passos_de_comprimento), é muito útil em laços, pois retorna uma lista de inteiros, começando no argumento de “inicio”, sendo menor que o argumento “parada”, seguindo uma interação por “passos_de_comprimento”, que por padrão é 1, que podem ser usados como sequência para o laço.
Range
for i in range(1,20,2):
print (i)
1
3
5
7
9
11
13
15
17
19
Em python os comandos break e continue servem para alterar o fluxo de um loop. Os loops como já vimos são executados iterativamente enquanto satisfazem uma determinada condição. Mas as vezes queremos terminar a iteração atual ou até mesmo parar o laço completamente sem checar a condição de parada . Então para esses casos usamos os comandos: break e continue.
Comandos BREAK e CONTINUE

O comando break, termina o loop que o contenha. Ou seja mediante esse comando o compilador faz uma ruptura imediata do loop mesmo se a condição de parada não estiver sido satisfeita. Se ele estiver dentro de um loop aninhado ( um laço dentro de outro) , o break terminará o laço mais interno, ou seja, aquele do qual ele pertence ao bloco.
Break

Break
#Exemplo do uso do break em laço comum
for val in "string":
if val == 'i':
break
else:
print val
s
t
r
The end
#Exemplo uso do break em laço infinito
cont=0
while True:
print("Loop infinito")
cont +=1
if cont == 3:
break
print ("The end")
Loop infinito
Loop infinito
Loop infinito
The end
Veja agora alguns exemplos do uso do break em alguns loops :
Continue
O comando continue é usado para ignorar o resto do código dentro de um laço, apenas para a iteração atual. O loop não termina, ele apenas para , e continua normalmente na próxima iteração.

Continue
Vejamos agora um exemplo do uso do continue:
for val in "string":
if val == 'i':
continue
else:
print val
print("The end")
s
t
r
n
g
The end
>>>
Pass
Em python, pass é uma declaração nula. A diferença entre o comando pass e um comentário, é que enquanto o compilador ignora completamente o comentário, o pass não é ignorado, porém nada acontece quando ele é executado . Ou seja, usa-se para reservar um espaço, quando criamos uma função ou um laço no qual não queremos implementar no momento, mas almejamos desenvolve-la no futuro.
#Exemplo em um loop
for val in "sequencia":
pass
#Exemplo em uma classe
class example:
pass
#Exemplo em uma função
def function(args):
pass
Exercícios
- Faça um programa que receba dois números, base e expoente, calcule e mostre a o resultado da potência. Mas NÃO utilize a função potência da linguagem (Ex: 2**3).
- Dado um número N inteiro positivo, determine 'N!' (Ex: N=5, imprima: 5 ! = 120).
- Receba um número indeterminado de valores inteiros não-nulos, e imprima seus quadrados.
- Dado um número inteiro positivo N, imprima os N primeiro inteiros ímpares.
“É divertido fazer o impossível, pois lá a concorrência é menor.”
Resolução dos exercícios
#Exercicio 01
base = int(input("Digite o valor da base: "))
expoente = int(input("Digite o valor do expoente: "))
cont=0
produto=1
while cont<expoente:
produto*=base
cont+=1
print base,'elevado a', expoente, '=', produto
#Exercicio 02
n = int(input("Digite o valor de n: "))
cont=n-1
produto=n
while cont>1:
produto*=cont
cont-=1
print n,'! =', produto
#Exercicio 3
n = int(input("Digite o primeiro numero: "))
while True:
if n==0:
break
print n,'ao quadrado =',n*n
n = int(input("Digite o proximo numero: "))
#Exercicio 4
n = int(input("Digite o primeiro numero: "))
aux=1
for cont in range(n):
print aux
aux+=2
Aula 07 - Estruturas de repetição
By Kethllen Andrey
Aula 07 - Estruturas de repetição
- 1,312