Buscar

Estrutura de Repetição while em python

Prévia do material em texto

Python 3.x 
Estrutura de Repetição 
while 
Introdução à Ciência da Computação 
 
Prof. Edison Ishikawa 
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
Sumário 
• Atribuição 
• Atualizando variáveis 
• Iterações 
• Revisitando o laço for 
• Laço while 
• Rastreando um programa 
• Contadores 
• Tabelas 
• break 
• continue 
• Laços aninhados 
• Algoritmos 
 
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
Iteração 
• Computadores são frequentemente usados 
para realizar automaticamente tarefas 
repetitivas 
• Repetir tarefas idênticas ou similares sem 
cometer erros é algo que computadores 
fazem bem e as pessoas não 
• Execuções repetidas de um conjunto de 
comandos é chamado de iteração D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
Atribuição 
• Em Python, um comando de atribuição pode fazer duas 
variáveis iguais, mas como atribuições futuras podem 
mudar uma ou outra, elas não precisam se manter iguais 
 
 
 
 
 
 
• Em algumas linguagens de programação os símbolos ← 
ou := são usados como operador atribuição para evitar 
confusão 
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
Exemplo 
 a = 5 
 b = a #após a execução desta linha, a e b são iguais 
 a = 3 #após a execução desta linha, a e b não são iguais 
Atualizando variáveis 
• Quando um comando de atribuição é executado, o lado 
direito da expressão ( o que está à direita do = ) é 
calculado primeiro 
• Este cálculo produz um valor 
• E este valor é atribuído à variável que está do lado 
esquerdo da expressão 
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
Exemplo 
 n = 5 
 n = 3 * n + 1 
Inicializando variáveis 
• Antes de atualizar o valor de uma variável, você tem que 
inicializá-la 
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
Exemplo errado 
 >>> y = y + 1 
Traceback (most recent call last): 
 File "<pyshell#25>", line 1, in <module> 
 y = y + 1 
 NameError: name 'y' is not defined 
Exemplo certo 
>>> y = 0 
>>> y = y + 1 
>>>> 
Outra forma de fazer a mesma coisa 
>>> y = 0 
>>> y += 1 
>>>> 
O
 c
o
m
a
n
d
o
 w
h
ile
 
F
lu
x
o
g
ra
m
a
 
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
A condição do 
loop é 
verdadeira? 
Execute todos os comandos 
que estão no corpo do loop 
Verifique a condição do loop e 
atribua à sua variável 
SIM 
NÃO 
Inicialize a variável com a 
condição do loop 
O comando while 
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
Sintaxe 
 
 while <CONDIÇÃO> : 
 <BLOCO DE COMANDOS 
 
O comando while 
• Usado quando não se sabe a priori a quantidade de 
repetições a ser executada 
• Exemplo: 
• Ler uma série de números inteiros positivos e calcular a sua 
soma. Esta série termine quando se digita um número 
inteiro negativo. 
 
 
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
Exemplo 
 print(“Programa que soma inteiros positivos. Para terminar o 
 programa, digite um número negativo.”) 
 x = input(“Digite um número inteiro:”) 
 soma = 0 
 while x > 0: 
 soma = soma + x 
 x = input(“Digite um número inteiro:”) 
 
 print (“ A soma de todos os números ditados é “, soma) 
Exercício 1 
• Faça um programa que leia vários nomes, digitados um por 
linha e escreva a quantidade de nomes digitados. O programa 
termina quando se digita “fim”. Para ser a prova de usuários, 
levar em conta que ele também pode digitar “Fim” ou “FIM”). 
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
Solução com erro! Qual o erro! 
nome = input("Digite um nome:") 
contador = 0 
while nome != "fim“ or nome != “FIM” or nome != “Fim”: 
 contador = contador + 1 
 nome = input("Digite um nome:") 
 
print("Total de nomes digitados = ", contador) 
Exercício 1 
 
 
 
 
 
 
 
 
• Existe uma forma mais elegante de testar o fim? D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
Solução correta 
nome = input("Digite um nome:") 
contador = 0 
while nome != "fim“ and nome != “FIM” and nome != “Fim”: 
 contador = contador + 1 
 nome = input("Digite um nome:") 
 
print("Total de nomes digitados = ", contador) 
Exercício 1 
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
Solução mais elegante 
nome = input("Digite um nome:") 
contador = 0 
while nome.lower() != "fim": 
 contador = contador + 1 
 nome = input("Digite um nome:") 
 
print("Total de nomes digitados = ", contador) 
Exercício 2 
• Faça um programa que leia as notas dos alunos e 
calcule a média da turma. O programa termina quando 
se digita uma nota negativa. 
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
Exercício 3 
• Faça um programa que leia 20 números e calcule a 
média deste números. 
• Qual a diferença deste exercício em relação ao exercício 2? 
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
Rastreando (tracing) um programa 
• O programa abaixo contém um erro! Descubra este erro 
fazendo um tracing manual. 
 
 
 
 
 
 
 
 
• Rastrear o programa pode ser tedioso e é muito sujeito a 
erros, mas é uma habilidade essencial de um 
programador 
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
Fatorial de um número n 
 n = int(input(“Digite um número: “)) 
 x = 1 
 fat = 1 
 while x < n: 
 fat = fat*x 
 x = x + 1 
 
 print(“ O fatorial de “, n, “ é “, fat) 
 
Tabelas 
• Exercício 
• Faça um programa que gere números de 1 a 30 e imprima 
eles em uma tabela com 7 colunas 
• Detalhe: o primeiro número gerado vai estar na primeira 
linha, mas pode estar na coluna n, que é o dia da semana 
em que cai o primeiro dia do mês. 
• Entrada: n, que vai de 0 a 6, sendo 0 domingo e assim por 
diante 
• Saída: Tabela com a primeira coluna correspondendo a 
domingo. Deixar em branco as posições que antecedem o 
primeiro dia na primeira linha. O mesmo para a última linha, 
após o último dia do mês. 
• Dica: use o caracter de controle de impressão “\t” para 
tabular sua saída. 
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
O comando break 
• Serve para sair imediatamente do corpo de execução de um loop 
• Suponha o seguinte problema 
• Ler uma lista de números inteiros até achar o primeiro número ímpar, 
imprimir este número e parar em seguida 
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
oExemplo 
 x = int(input(“Digite um número inteiro:”) 
 while True: 
 if x % 2 != 0: # é um número ímpar 
 break 
 x = int(input(“Digite um número inteiro:”) 
 
print(x) 
O comando continue 
• Comando que faz o programa pular o processamento do 
resto do bloco de execução do loop. Mas o loop 
continua, iniciando na próxima iteração 
• Problema 
• Ler uma lista de números inteiros positivos imprimindo a 
quantidades de números ímpares da lista. O programa para 
quando lê um número negativo 
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
Exemplo 
 n = int(input(“Digite um número: ”)) 
 cont = 0 
 while n > 0: 
 if n % 2 == 0: # se for par, lê o próximo e pula 
 n = int(input(“Digite um número: ”)) 
 continue 
 n = int(input(“Digite um número: ”)) 
 cont = cont + 1 
 print(cont) 
Algoritmos 
• Definição 
• Algoritmo é uma sequência finita de instruções bem 
definidas e não ambíguas, que recebe um conjunto de 
valores como entrada, processa estes valores e produz um 
conjunto de valores como saída, em um tempo finito. 
• Uma característica dos algoritmos é que eles não 
precisam de inteligência para serem executados! 
• São processos mecânicos, em que cada passo é executado 
um em seguida ao outro de acordo com um conjunto de 
regras simples 
• Entender que problemas difíceis podem ser resolvidos 
por processos algorítmicos, passo a passo (tendo um 
computador para executar automaticamente), é um dos 
grandes avanços que trouxe enormes benefícios para a 
humanidade 
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
Algoritmos 
• Vamos fazer um algoritmo um pouco mais difícil 
• Calcular a integral de uma função f(x) contínua qualquer em 
um intervalo [a, b] 
• Para entender, vamos supor f(x) = x2 
 
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
Algoritmos 
• O que é a integral de f(x) = x2 no intervalo [a, b]? 
 
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
Algoritmos 
• O que é a integral de f(x) = x2 no intervalo [a, b]? 
• É a área sob a curva 
 
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
a=0 b=2 
 f(0) =0 
 f(2) =4 
f(x) 
x 
Algoritmos 
• Como a gente calcula a área sob a curva? 
• Aproximando por retângulos 
• Mas não é impreciso? Veja o espaço em branco entre a 
curva e o retângulo. 
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
a=0 b=2 
x 
 f(0) =0 
 f(2) =4 
f(x) 
Algoritmos 
• Como a gente aumenta a precisão? 
• Diminuindo o tamanho da base do retângulo == aumentar o 
número de retângulos 
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
a=0 b=2 
x 
 f(0) =0 
 f(2) =4 
f(x) 
Para casa 
•
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o
 
a 
b 
Bibliografia 
• How to Think Like a Computer Scientist: Learning 
with Python 3 – Documentation - Release 3rd Edition 
• Peter Wentworth, Jeffrey Elkner,Allen B. Downey and 
Chris Meyers 
• Apr 26, 2017 
D
e
p
a
rt
a
m
e
n
to
 d
e
 C
iê
n
c
ia
 d
a
 C
o
m
p
u
ta
ç
ã
o

Continue navegando