Iteração em Python (Laços) Jurandy Soares Data: 28 de Abril de 2010s
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)
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?
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())
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: '))
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.
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
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.
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.
Conta Pares e Ímpares
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.
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?
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)
Exemplo com Cadeia de Caracteres espacos = '' for letra in 'Instituto': print(espacos, letra, sep='') espacos += ' ' Saída: I n s t i t u
t o
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
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
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 passo é a diferença entre os valores consecutivos do intervalo Observação: os colchetes ("[]") indicam que o argumento é opicional
Exemplos de Intervalo em Python >>> list(range(0, 13)) # passo implícito [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] >>> list(range(13)) # ini e passo implícitos [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] >>> list(range(2,15)) # passo implícito [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] >>> list(range(3,100,3)) # ini, fim e passo explicitados [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)) # fim > ini e passo < 0 [20, 17, 14, 11, 8, 5, 2]
Exemplo Numérico de Para com Intervalo for n in range(1,101): print(n)
Exemplo Numérico de Para com Intervalo (cont.) soma = 0 for n in range(1,101): soma += n print(soma)