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

 

  1. 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).
  2. Dado um número N inteiro positivo, determine 'N!' (Ex: N=5, imprima: 5 ! = 120).
  3. Receba um número indeterminado de valores inteiros não-nulos, e imprima seus quadrados.
  4. Dado um número inteiro positivo N, imprima os N primeiro inteiros ímpares.

“É divertido fazer o impossível, pois lá a concorrência é menor.”

Walt Disney

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
Made with Slides.com