Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 ·...
Transcript of Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 ·...
![Page 1: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/1.jpg)
Profa. Sandra AvilaInstituto de Computação (IC/Unicamp)
MC102, 20 Março, 2019
Algoritmos e Programaçãode Computadores
Comandos Repetitivos: while e for
![Page 2: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/2.jpg)
Agenda
● Comando while
● Comando for
● Variável acumuladora
● Comando continue and break
2
![Page 3: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/3.jpg)
Comandos Repetitivos*
● Até agora vimos como escrever programas capazes de executar comandos de forma linear, e, se necessário, tomar decisões com relação a executar ou não um bloco de comandos.
● Entretanto, eventualmente faz-se necessário executar um bloco de comandos várias vezes para obter o resultado esperado.
* Comandos repetitivos, iterativos, laços, loops, ...3
![Page 4: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/4.jpg)
Comandos Repetitivos
● Programa que imprime todos os números inteiros de 1 a 4.
● Será que dá pra fazer com o que já sabemos?
4
![Page 5: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/5.jpg)
Comandos Repetitivos
● Programa que imprime todos os números inteiros de 1 a 4.
● Será que dá pra fazer com o que já sabemos?
# Imprime todos os números inteiros de 1 a 4print(1)print(2)print(3)print(4)
5
![Page 6: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/6.jpg)
Comandos Repetitivos
● Programa que imprime todos os números inteiros de 1 a 100.
6
![Page 7: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/7.jpg)
Comandos Repetitivos
● Programa que imprime todos os números inteiros de 1 a 100.
# Imprime todos os números inteiros de 1 a 100print(1)print(2)print(3)print(4)# repete 95 vezes a linha acimaprint(100)
7
![Page 8: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/8.jpg)
Comando while
8
![Page 9: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/9.jpg)
Comando while
● Executa um bloco de comando(s) enquanto a condição é verdadeira (True).
while condicao:comando(s)
9
![Page 10: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/10.jpg)
Comando while
● Passo 1: Testa condição. ○ Se condição for verdadeira,
vai para o Passo 2○ Senão, vai para Passo 4
● Passo 2: Executa comandos● Passo 3: Volta para Passo 1 Comandos
Condição
Passo 1
Passo 2
Passo 4
Passo 310
![Page 11: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/11.jpg)
Comando while
● Passo 1: Testa condição. ○ Se condição for verdadeira,
vai para o Passo 2○ Senão, vai para Passo 4
● Passo 2: Executa comandos● Passo 3: Volta para Passo 1 Comandos
Condição
Passo 1
Passo 2
Passo 4
Passo 311
![Page 12: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/12.jpg)
Comando while
● Passo 1: Testa condição. ○ Se condição for verdadeira,
vai para o Passo 2○ Senão, vai para Passo 4
● Passo 2: Executa comandos● Passo 3: Volta para Passo 1 Comandos
Condição
Passo 1
Passo 2
Passo 4
Passo 312
![Page 13: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/13.jpg)
Comando while
● Passo 1: Testa condição. ○ Se condição for verdadeira,
vai para o Passo 2○ Senão, vai para Passo 4
● Passo 2: Executa comandos● Passo 3: Volta para Passo 1 Comandos
Condição
Passo 1
Passo 2
Passo 4
Passo 313
![Page 14: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/14.jpg)
Comando while
● Passo 1: Testa condição. ○ Se condição for verdadeira,
vai para o Passo 2○ Senão, vai para Passo 4
● Passo 2: Executa comandos● Passo 3: Volta para Passo 1 Comandos
Condição
Passo 1
Passo 2
Passo 4
Passo 314
![Page 15: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/15.jpg)
Comando while
● Programa que imprime todos os números de 1 a 100.
# Imprime todos os números de 1 a 100numero = 1while numero <= 100:
print(numero)numero = numero + 1
15
![Page 16: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/16.jpg)
Comando while
● Programa que imprime os n primeiros números.
# Imprime os n primeiros númerosn = int(input("Digite um número: "))numero = 1while numero <= n:
print(numero)numero = numero + 1
16
![Page 17: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/17.jpg)
Comando while
● O que acontece se a condição no comando while for falsa na primeira vez?
while a != a: a = a + 1
17
![Page 18: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/18.jpg)
Comando while
● O que acontece se a condição no comando while for falsa na primeira vez? Ele nunca entrar na repetição (no laço).
while a != a: a = a + 1
18
![Page 19: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/19.jpg)
Comando while
● O que acontece se a condição no comando while for sempre verdadeira?
while a == a: a = a + 1
19
![Page 20: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/20.jpg)
Comando while
● O que acontece se a condição no comando while for sempre verdadeira? Ele entra na repetição e nunca sai (laço infinito).
while a == a: a = a + 1
20
![Page 21: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/21.jpg)
Comando while-else
● Ao final do while podemos utilizar a instrução else.
while condicao:comando(s)
else: comando(s)
21
![Page 22: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/22.jpg)
Comando while-else
● Programa que imprime os n primeiros números.
# Imprime os n primeiros números n = int(input("Digite um número: "))numero = 1while numero <= n:
print(numero)numero = numero + 1
else: print("Fim.")
22
![Page 23: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/23.jpg)
Comando while-else
● Programa que imprime os n primeiros números.
# Imprime os n primeiros números n = int(input("Digite um número: "))numero = 1while numero <= n:
print(numero)numero = numero + 1
else: print("Fim.")
Atenção: Nem sempre faz sentido ter o else.
23
![Page 24: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/24.jpg)
Comando while-else
● Programa que imprime os n primeiros números.
# Imprime os n primeiros ...n = int(input("Digite um número: "))numero = 1while numero <= n:
print(numero)numero = numero + 1
else: print("Fim.")
# Imprime os n primeiros ...n = int(input("Digite um número: "))numero = 1while numero <= n:
print(numero)numero = numero + 1
print("Fim.")
24
![Page 25: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/25.jpg)
Listas
25
![Page 26: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/26.jpg)
Listas (Breve Introdução)
● Uma lista em Python é uma estrutura que armazena vários dados, que podem ser de um mesmo tipo ou não.
● Uma lista é criada como a construção: [dado1,dado2,...,dadon]
lista1 = [10, 20, 30, 40]lista2 = ["programação", "mc102", "python"]lista3 = ["oi", 2.0, 5, [10, 20]]
26
![Page 27: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/27.jpg)
Listas (Breve Introdução)
● O acesso a um dado específico da lista ocorre por indicação do seu índice.
lista3 = ["oi", 2.0, 5, [10, 20]]print(lista3[1]) # O índice do primeiro elemento é 0.2.0print(lista3[2])5print(lista3[3])[10, 20]print(lista3[4])IndexError: list index out of range
27
![Page 28: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/28.jpg)
Comando for
28
![Page 29: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/29.jpg)
Comando for
● É a estrutura de repetição mais usada no Python.
● Para cada elemento da lista, em ordem de ocorrência, é atribuído este elemento à variável e então é executado o(s) comando(s).
for variável in lista:comando(s)
29
![Page 30: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/30.jpg)
Comando for
● Passo 1: Verifica se percorreu toda a lista.○ Se não percorreu, atribui-se o próximo
elemento da lista para a variável.○ Se percorreu, vai para Passo 4
● Passo 2: Executa comandos● Passo 3: Volta para Passo 1 Comandos
Próximo elemento?
Passo 1
Passo 2
Passo 4
Passo 330
![Page 31: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/31.jpg)
Comando for
● Passo 1: Verifica se percorreu toda a lista.○ Se não percorreu, atribui-se o próximo
elemento da lista para a variável.○ Se percorreu, vai para Passo 4
● Passo 2: Executa comandos● Passo 3: Volta para Passo 1 Comandos
Próximo elemento?
Passo 1
Passo 2
Passo 4
Passo 331
![Page 32: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/32.jpg)
Comando for
● Passo 1: Verifica se percorreu toda a lista.○ Se não percorreu, atribui-se o próximo
elemento da lista para a variável.○ Se percorreu, vai para Passo 4
● Passo 2: Executa comandos● Passo 3: Volta para Passo 1 Comandos
Próximo elemento?
Passo 1
Passo 2
Passo 4
Passo 332
![Page 33: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/33.jpg)
Comando for
● Passo 1: Verifica se percorreu toda a lista.○ Se não percorreu, atribui-se o próximo
elemento da lista para a variável.○ Se percorreu, vai para Passo 4
● Passo 2: Executa comandos● Passo 3: Volta para Passo 1 Comandos
Próximo elemento?
Passo 1
Passo 2
Passo 4
Passo 333
![Page 34: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/34.jpg)
Comando for
● Passo 1: Verifica se percorreu toda a lista.○ Se não percorreu, atribui-se o próximo
elemento da lista para a variável.○ Se percorreu, vai para Passo 4
● Passo 2: Executa comandos● Passo 3: Volta para Passo 1 Comandos
Próximo elemento?
Passo 1
Passo 2
Passo 4
Passo 334
![Page 35: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/35.jpg)
Comando for
● Programa que imprime todos os números de uma lista.
# Imprime todos os números de uma listalista_numeros = [1, 2, 3, 4, 5]for numero in lista_numeros:
print(numero)
35
![Page 36: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/36.jpg)
Comando for
● Programa que imprime todos os números de uma lista.
# Imprime todos os números de uma listalista_numeros = [1, 2, 3, 4, 5]for numero in lista_numeros:
print(numero)
12345
36
![Page 37: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/37.jpg)
Comando for
● Programa que imprime todos os números de 1 a 100.
37
![Page 38: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/38.jpg)
A Função range
● É comum fazermos um laço for iterar sobre valores numéricos.
● Em Python, a função range(n) gera uma lista com valores de 0 até n-1.
38
![Page 39: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/39.jpg)
A Função range
● É comum fazermos um laço for iterar sobre valores numéricos.
● Em Python, a função range(n) gera uma lista com valores de 0 até n-1.
● Programa que imprime todos os números de 0 a 9.
# Imprime todos os números de 0 a 9for numero in range(10):
print(numero)
39
![Page 40: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/40.jpg)
A Função range
● Podemos especificar um intervalo de valores na função range(n)○ range(inicio,fim): gera-se números de inicio até fim-1.
● Programa que imprime todos os números de 5 a 9.
# Imprime todos os números de 5 a 9for numero in range(5,10):
print(numero)
40
![Page 41: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/41.jpg)
A Função range
● Programa que imprime todos os números de 1 a 100.
# Imprime todos os números de 1 a 100for numero in range(1,101):
print(numero)
41
![Page 42: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/42.jpg)
A Função range
● Podemos especificar um passo a ser considerado no intervalo de valores na função range(n)○ range(inicio,fim,passo): gera-se números de inicio
com incremento de passo até fim-1.
42
![Page 43: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/43.jpg)
A Função range
● Programa que imprime todos os números pares entre 0 e 13.
# Imprime todos os números pares entre 0 e 13for numero in range(0,13,2):
print(numero)
43
![Page 44: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/44.jpg)
A Função range
● Programa que imprime todos os números pares entre 0 e 13.
# Imprime todos os números pares entre 0 e 13for numero in range(0,13,2):
print(numero)
024681012
44
![Page 45: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/45.jpg)
while e for
● Programa que imprime os n primeiros números.
# Imprime os n primeiros númerosn = int(input("Digite um número: "))numero = 1while numero <= n:
print(numero)numero = numero + 1
# Imprime os n primeiros númerosn = int(input("Digite um número: "))for numero in range(1,n+1):
print(numero)45
![Page 46: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/46.jpg)
while ou for?
● Use um laço for, se você souber, antes de iniciar o laço, o número máximo de vezes que você precisará executar o corpo do laço.
● Por exemplo, se você estiver percorrendo uma lista de elementos, você sabe que o número máximo de iterações do laço que você pode precisar é “todos os elementos da lista”.
46
![Page 47: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/47.jpg)
while ou for?
● Use um laço while se você precisa repetir alguma computação até que alguma condição seja atendida, e você não pode calcular antecipadamente quando isso acontecerá.
○ for : “iteração definida” ○ while : “iteração indefinida”, não temos certeza de quantas
iterações precisamos nem podemos estabelecer um limite superior.
47
![Page 48: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/48.jpg)
Jogo de Adivinhação
import random # módulo randomnumero = random.randrange(1, 101) # número entre 1 e 100
palpites = 0meu_palpite = int(input("Adivinhe meu número entre 1 e 100: "))
while meu_palpite != numero:palpites = palpites + 1if meu_palpite > numero:
print(meu_palpite, "está acima.") elif meu_palpite < numero:
print(meu_palpite, "está abaixo.")meu_palpite = int(input("tente novamente: "))
print("\nÓtimo, você acertou em", palpites, "tentativas!")48
![Page 49: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/49.jpg)
Variável Acumuladora
49
![Page 50: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/50.jpg)
Variável Acumuladora
● Vamos ver alguns exemplos de problemas que são resolvidos utilizando laços.
● Há alguns padrões de solução que são bem conhecidos, e são úteis em diversas situações.
● O primeiro padrão deles é o uso de uma “variável acumuladora”.
Ler um inteiro positivo n, em seguida ler n números do teclado e apresentar a soma destes.
50
![Page 51: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/51.jpg)
Soma de Números
● Como n não é definido a priori, não podemos criar n variáveis e depois somá-las.
● A ideia é criar uma variável acumuladora que a cada iteração de um laço acumula a soma de todos os números lidos até então.
acumuladora = 0repita n vezes
leia um número auxacumuladora = acumuladora + aux
51
![Page 52: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/52.jpg)
Soma de Números
# Soma n númerosn = int(input("Digite o valor de n: "))acumuladora = 0for numero in range(n):
aux = int(input())acumuladora = acumuladora + aux # Acumula a soma
print("A soma é:", acumuladora)
● Programa que soma n números.
52
![Page 53: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/53.jpg)
Jogo de Adivinhação
import random # módulo randomnumero = random.randrange(1, 101) # número entre 1 e 100
palpites = 0meu_palpite = int(input("Adivinhe meu número entre 1 e 100: "))
while meu_palpite != numero:palpites = palpites + 1if meu_palpite > numero:
print(meu_palpite, "está acima.") elif meu_palpite < numero:
print(meu_palpite, "está abaixo.")meu_palpite = int(input("tente novamente: "))
print("\nÓtimo, você acertou em", palpites, "tentativas!")53
![Page 54: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/54.jpg)
Laços e os comandosbreak e continue
54
![Page 55: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/55.jpg)
Laços e o Comando break
● O comando break faz com que a execução de um laço seja terminada, passando a execução para o próximo comando depois do final do laço.
while condicao:comando(s)break
comando(s)
for variável in lista:comando(s)break
comando(s)
55
![Page 56: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/56.jpg)
Laços e o Comando break
● O que será impresso?
for numero in range(1,11):if (numero >= 5):
breakprint(numero)
print("Terminou o laço.")
1234"Terminou o laço."
56
![Page 57: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/57.jpg)
Laços e o Comando continue
● O comando continue faz com que a execução de um laço seja alterada para o final do laço.
● O que será impresso?
numero = 1while numero <= 10:
if (numero == 5):numero = numero + 1continue
print(numero)numero = numero + 1
print("Terminou o laço.")
57
![Page 58: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/58.jpg)
Laços e o Comando continue
● O comando continue faz com que a execução de um laço seja alterada para o final do laço.
● O que será impresso?
numero = 1while numero <= 10:
if (numero == 5):numero = numero + 1continue
print(numero)numero = numero + 1
print("Terminou o laço.")
1234678910"Terminou o laço."
58
![Page 59: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/59.jpg)
Exercícios
1. Faça um programa que lê um número inteiro positivo n e imprima os valores entre 2 e n, que são divisores de n.
59
![Page 60: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/60.jpg)
Exercícios
1. Faça um programa que lê um número inteiro positivo n e imprima os valores entre 2 e n, que são divisores de n.
2. Repita o Jogo de Adivinhação dando a opção do jogador de desistir, por exemplo, escolhendo o número 0.
60
![Page 61: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/61.jpg)
n = int(input("Digite um número inteiro positivo: "))
for numero in range(2,n+1):if (n % numero == 0): # se n é divisível por numero
print(numero, end=" ")
Exercício 1: Usando for
Faça um programa que lê um número inteiro positivo n e imprima os valores entre 2 e n, que são divisores de n.
61
![Page 62: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/62.jpg)
n = int(input("Digite um número inteiro positivo: "))
numero = 2while numero <= n:
if (n % numero == 0): # se n é divisível por numero print(numero, end=" ")
numero = numero + 1
Exercício 1: Usando while
Faça um programa que lê um número inteiro positivo n e imprima os valores entre 2 e n, que são divisores de n.
62
![Page 63: Algoritmos e Programação de Computadoressandra/pdf/class/2019-1/mc102/... · 2020-06-30 · Algoritmos e Programação de Computadores Comandos Repetitivos: while e for. Agenda](https://reader034.fdocuments.co/reader034/viewer/2022042803/5f47a854bb798658307400c8/html5/thumbnails/63.jpg)
Referências
● Os slides dessa aula foram baseados no material de MC102 do Prof. Eduardo Xavier (IC/Unicamp)
● Comandos repetitivos○ https://wiki.python.org.br/EstruturaDeRepeticao○ https://panda.ime.usp.br/pensepy/static/pensepy/07-Iteracao/maisiteracao.html#
o-comando-while○ https://runestone.academy/runestone/static/thinkcspy/MoreAboutIteration/toctree
.html○
63