Iteração em Python (Laços)

Propaganda
Iteração em Python (Laços)
Jurandy Soares
Data:
28 de Abril de 2010s
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Fluxo de Controle: Laços
• Lembre-se que a ordem em que os comandos de um programa são executados é
chamado de fluxo de programa
• Até então temos visto execução sequencial (comandos executados um após o outro
na ordem em que aparecem no programa) e comando de controle de seleção
(comandos são executados condicionalmente)
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Fluxo de Controle: Laços (cont.)
Considere a seguinte tarefa: * Você deseja entrar com um valor inteiro não nulo e quer
assegurar que o programa não continuará até que o usuário tenha entrado com um valor
apropriado. * Você entrou com uma sequencia de valores de comprimento arbitrário e
deseja contar o número de valores e computar a média
Pergunta:
Como podemos escrever um código para executar uma dessas
tarefas que envolvem repetição?
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Comandos de Iteração (Laços)
Em muitas tarefas de programação desejamos que um bloco de comandos seja
executado repetidamente até que determinada condição seja satisfeita.
Exemplo:
escreva('Entre com um inteiro não nulo: ')
inteiroNaoNulo = inteiro(entrada())
enquanto inteiroNaoNulo == 0:
escreva('Erro: um inteiro não nulo era esperado.')
escreva('Entre com um inteiro não nulo: ')
inteiroNaoNulo = inteiro(entrada())
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Comandos de Iteração (Laços) (cont.)
Exemplo anterior passado para Python 3.x:
print('Entre com um inteiro não nulo: ')
inteiroNaoNulo = int(input())
while inteiroNaoNulo == 0:
print('Erro: um inteiro não nulo era esperado.')
inteiroNaoNulo = int(input('Entre com um inteiro não nulo: '))
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Comando de Iteração: Enquanto..faça
O comando de iteração "enquanto" (while em Inglês) é uma instrução de repetição, onde
a expressão lógica é testada antes de o bloco de instruções subjacente.
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Formato Padrão do "Enquanto..Faça"
A estrutura básica do comando "enquanto" (while) envolve quatro etapas:
1. inicialização de uma variável de controle
2. teste de interrupção envolvendo a variável de controle
3. execução do bloco de comandos
4. atualização da variável de controle
inicialização
while teste:
bloco_while
atualização
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Um Exemplo de Laço
Problema:
Escreva um trecho de código que leia uma sequencia de inteiros
até que o valor zero seja encontrado e que calcule e exiba a soma
dos números lidos.
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Sua Vez
Problema:
Escreva um programa que leia uma sequencia de inteiros até que o
valor zero seja encontrado e conte e exiba a quantidade de
números pares e de números ímpares lidos, sem contar com o 0.
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Conta Pares e Ímpares
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Sua Vez, Novamente
Problema:
Idéia:
Escreva um programa que, dadas duas variáveis inteiras, largura e
altura, exiba um retângulo de '+' da largura e altura.
Inicie resolvendo um problema simples: dada uma variável inteira
largura, exiba uma largura de '+' em uma linha.
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Exiba uma Linha de '+'s
Código para exibir uma linha de largura preenchida com '+':
#
#
#
#
#
...
...
...
...
...
Idéia:
Como iremos exibir altura de linhas de largura de colunas de '+'s?
Em outras palavras, como repetimos o código acima altura vezes?
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Formato padrão do "Para...em"
Interprete o "para...em" como "para cada...em"
para nomeVar em Sequencia:
bloco_para
for letra in 'Seu Nome Completo':
print(letra)
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Exemplo com Cadeia de Caracteres
espacos = ''
for letra in 'Instituto':
print(espacos, letra, sep='')
espacos += ' '
Saída:
I
n
s
t
i
t
u
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
t
o
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Exemplo Numérico
for n in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
print(n, end=' ')
print()
Saída:
0 1 2 3 4 5 6 7 8 9
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Exemplo Numérico (cont.)
soma = 0
for n in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
soma += n
print (soma)
Saída:
45
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Intervalo
• Na álgebra:
[início, fim[
Inclui início, mas não fim
• Em Python:
range([ini], fim, [passo]) Onde:
• ini é o valor inicial do intervalo
• fim é o valor final do intervalo, não incluso
Observação:
• passo é a diferença entre os valores consecutivos do intervalo
os colchetes ("[]") indicam que o argumento é opicional
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Exemplos de Intervalo em Python
>>> list(range(0, 13))
#
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
>>> list(range(13))
#
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
>>> list(range(2,15))
#
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
>>> list(range(3,100,3))
#
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30,
33, 36, 39, 42, 45, 48, 51, 54, 57, 60,
63, 66, 69, 72, 75, 78, 81, 84, 87, 90,
93, 96, 99]
>>> list(range(20,0,-3))
#
[20, 17, 14, 11, 8, 5, 2]
passo implícito
ini e passo implícitos
passo implícito
ini, fim e passo explicitados
fim > ini e passo < 0
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Exemplo Numérico de Para com Intervalo
for n in range(1,101):
print(n)
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Exemplo Numérico de Para com Intervalo
(cont.)
soma = 0
for n in range(1,101):
soma += n
print(soma)
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Download