Você está na página 1de 100

ICC901 – Introdução à Programação de Computadores

IEC081 – Introdução à Ciência dos Computadores


IEC037 – Introdução à Programação de Computadores

Aula 04 – Estruturas de Repetição por Condição


Atualização: 12/abr/23

Fonte da imagem: https://www.codeschool.com/courses/forging-ahead-with-asp-net-core


Você tem a liberdade de:
Compartilhar: copiar, distribuir e transmitir esta obra.
Remixar: criar obras derivadas.

Sob as seguintes condições:


Atribuição: você deve creditar a obra da forma especificada
pelo autor ou licenciante (mas não de maneira que sugira que
estes concedem qualquer aval a você ou ao seu uso da obra).
Uso não comercial: você não pode usar esta obra para fins
comerciais.
Compartilhamento pela mesma licença: se você alterar,
transformar ou criar em cima desta obra, poderá distribuir a
obra resultante apenas sob a mesma licença, ou sob uma
licença similar à presente.
Conserve o laboratório

Os equipamentos são frágeis:


use-os com cuidado

Não mexa nos cabos

Não consuma alimentos ou bebidas.


Mantenha sua garrafa de água
tampada.
3
Antes de começar...

Está atento ao calendário?

Este módulo tem Peso 2


na avaliação

Como está sua tática de estudo?


4
Como lidar com erros de
programação?
• Não se pergunte: “por que o
programa não funciona?”
• Em vez disso, pergunte-se: “por
que o programa está funcionando
deste jeito?”
• Estratégias:
• Não se limite ao exemplo: teste
vários casos
• Imprima resultados
intermediários
• Tente explicar o problema para
outra pessoa
• Dê um tempo e tente de novo
5
mais tarde
Conteúdo

Estruturas de Repetição por Condição

Problemas Comuns

Exemplos Extras

6
Conteúdo

Estruturas de Repetição por Condição

Problemas Comuns

Exemplos Extras

7
Estruturas de Programação
• Qualquer programa de computador pode ser escrito
combinando-se os três tipos básicos de estruturas de
programação:

Sequencial Condicional Repetição

8
Estruturas de Repetição
• Permitem que o programa execute um bloco de
comandos mais de uma vez.
• O número de repetições (ou iterações) deve ser
conhecido e sempre finito.
• Caso contrário, o programa travará.

Repetição até que alguma


condição seja satisfeita
Dois tipos
básicos
Repetição por um certo
número de vezes
9
Repetição por condição
:: Formato do comando while
Início do laço Construída da mesma
de repetição forma que no if
Sinal de
dois
while Condição : pontos!

Devem estar
Comandos a serem indentados em
relação ao while
repetidos
Comandos são
Restante do programa repetidos enquanto
condição é verdadeira
Quando a condição é
falsa, execução do
programa continua aqui Variável usada na condição
deve ser modificada aqui,
para que o laço termine
Exemplo

• Como contar de 1 até 5?

print(1)
print(2)
print(3)
print(4)
print(5)
Funciona, mas não é prático
se o problema fosse contar
até mil, por exemplo
11
Exemplo
:: Pensando no problema
início

contador = 1

contador F
≤5
V
Imprimir contador

contador = contador + 1

fim 12
Exemplo
:: Laço de repetição

Valor inicial
(fora do laço)
Valor final
(definido pela condição)
x = 1
while (x <= 5):
print(x)
x = x + 1
Incremento
(dentro do laço)

13
Variantes (1/1)

x = 1
while (x <= 5):
print(x)
x = x + 1

x = 1 x = -5
while (x <= 100): while (x <= 5):
print(x) print(x)
x = x + 1 x = x + 1
Conta de 1 a 100 Conta de -5 a +5
14
Variantes (2/2)

x = 1
while (x <= 5):
print(x)
x = x + 1

x = 10 x = 1
while (x >= 0): while (x <= 5):
print(x) print(x)
x = x - 1 x = x + 2
Conta de 10 a 0 Conta os nos ímpares de 1 a 5
15
Não confunda: while × if

if while
• Condição • Condição
determina se o determina
trecho de código quantas vezes o
indentado vai trecho de código
ser executado ou indentado vai
não ser executado

16
Conteúdo

Estruturas de Repetição por Condição

Problemas Comuns

Exemplos Extras

17
Problema 1
:: Quantos alunos passaram?
• Uma professora corrigiu as
provas de uma turma. As
notas variam de 0 a 10, e a
nota mínima para passar é
5,0.
• Escreva um script que leia:
• A nota de cada aluno,
até que um valor inválido
seja digitado.
• Como saída, determine:
• Quantos alunos
passaram nessa prova?
18
Problema 1
2 – Identifique as entradas e saídas

Grandeza Unidade de medida Faixa de valores


Entradas Notas --- [0, 10]
Saídas Qtde. de alunos --- >0

19
Problema 1
3 – Projete o script
• O contador do laço while deve controlar:

Contador de alunos:
Número de alunos que passaram na prova
•Começa em zero

20
Problema 1
3 – Projete o script
início

cont = 0
nota = 1.23

0 ≤ nota F
≤ 10
V
Ler nota

F 5 ≤ nota
≤ 10
V
cont = cont + 1

Imprimir cont

fim 21
Problema 1
4 – Codifique em Python
cont = 0 # Contador de alunos aprovados
nota = 1.23 # Valor arbitrário para iniciar laco

while (nota >= 0 and nota <= 10):


nota = float(input("Digite a nota do aluno"))
if (nota >= 5.0 and nota <= 10):
cont = cont + 1

print("Passaram: ", cont)

22
Problema 1
5 – Teste o script
• Teste várias possibilidades, com valores conhecidos:

Notas: 11 Nenhuma nota válida

Notas: 1, 2, 3, 44 Ninguém passou

Notas: 1, 2, 3, 4, 5, 55 Só um passou;
limiar de decisão

Notas: 3, 4, 5, 6, 7, 8, 99 Vários
passaram

23
Botão do raio interrompe o
programa
• Se seu programa entrar em loop infinito, use o botão do
raio para interromper a execução:

24
Problema 2
:: Soma e média
• Agora, a professora quer
saber a média de
desempenho de seus
alunos na prova.
• Escreva um script que
leia cada nota, até que
um valor inválido seja
digitado, indicando que a
inserção terminou.
• Como saída, determine a
média da turma.
25
Problema 2
2 – Identifique as entradas e saídas

Grandeza Unidade de medida Faixa de valores


Entradas Notas --- [0, 10]
Saídas Média --- [0, 10]

26
Problema 1
3 – Projete o script
• Há dois tipos de variáveis que o laço while deve
controlar:

Contador do laço:
Número de alunos na turma
•Começa em zero

Acumulador do laço:
Soma das notas inseridas
•Começa em zero

27
Problema 2
4 – Codifique em Python
A primeira nota deve ser
cont = 0 # Conta no. de alunos lida fora do laço
soma = 0 # Acumula soma das notas
nota = float(input("Digite a nota do aluno: "))

while (nota >= 0 and nota <= 10):


soma = soma + nota # Acumula nota
cont = cont + 1 # Atualiza no. de notas
nota = float(input("Digite a nota do aluno: "))
Previne o caso da professora digitar o
if (cont > 0): primeiro valor como inválido
print(round(soma/cont, 2))
Problema 2
5 – Teste o script

Quantidade de alunos: 5

Notas: 1, 2, 3, 4, 5

Use valores fáceis, que você


conheça a resposta antes de
executar o script

29
Problema 2
5 – Teste o script
• Use valores fáceis, que você conheça a resposta antes de
executar o script

Notas: 11 Nenhuma nota válida

Notas: 1, 2, 3, 44 Média 2,0

Notas: 1, 2, 3, 4, 5, 55 Média 3,0

30
Contador de laço ×
Variável acumuladora
Contador de Variável
laço acumuladora
•Auxilia a •Auxilia no
controlar a cômputo de
execução do grandezas
laço de relacionadas
repetição ao problema
31
Problemas comuns ao construir
laços de repetição

1 Escolha incorreta do valor inicial do contador

2 Escolha incorreta da condição do laço

3 Esquecer de incrementar o contador

4 Deixar de atualizar a variável acumuladora conforme pede


o problema

5 Deixar de identificar corretamente quais e quantas são as


variáveis contadoras e acumuladoras
32
Rastreamento
• Simulação de execução de código em que você percorre
as instruções, uma linha de cada vez, e acompanha os
valores das variáveis.
• Quando você rastreia um programa:
• escreve os nomes das variáveis em uma folha de papel
• executa mentalmente cada passo do código
• atualiza as variáveis

Também conhecido
como teste de mesa

33
Rastreamento
:: Exemplo 1
i = 0 i total
total = 0
while (total < 10): 0 ?
i = i + 1
total = total + i
print(i, total)
Rastreamento
:: Exemplo 1
i = 0 i total
total = 0
while (total < 10): 0 ?
i = i + 1 0 0
total = total + i
print(i, total)
Rastreamento
:: Exemplo 1
i = 0 i total
total = 0
while (total < 10): 0 ?
i = i + 1 0 0
total = total + i 1 0
print(i, total)
Rastreamento
:: Exemplo 1
i = 0 i total
total = 0
while (total < 10): 0 ?
i = i + 1 0 0
total = total + i 1 0
print(i, total)
1 1
Rastreamento
:: Exemplo 1
i = 0 i total
total = 0
while (total < 10): 0 ?
i = i + 1 0 0
total = total + i 1 0
print(i, total)
1 1
2 1
Rastreamento
:: Exemplo 1
i = 0 i total
total = 0
while (total < 10): 0 ?
i = i + 1 0 0
total = total + i 1 0
print(i, total)
1 1
2 1
2 3
Rastreamento
:: Exemplo 1
i = 0 i total
total = 0
while (total < 10): 0 ?
i = i + 1 0 0
total = total + i 1 0
print(i, total)
1 1
2 1
2 3
3 6
Rastreamento
:: Exemplo 1
i = 0 i total
total = 0
while (total < 10): 0 ?
i = i + 1 0 0
total = total + i 1 0
print(i, total)
1 1
2 1
2 3
3 6
4 10
Rastreamento
:: Exemplo 2
• Se a condição for mal projetada, o laço poderá ser
repetido indefinidamente.
• Chamamos essa situação de loop infinito.

i total
i = 0
0 0
total = 0
while (total < 10): 1 -1
i = i + 1 2 -2
total = total - 1
3 -3
print(i, total)
4 -4
.....
42
Rastreamento
:: Exemplo 3
• Em outras situações, a condição pode não ser satisfeita
na primeira tentativa.
• Nesse caso, o laço não será executado.

i = 0
total = 0
Nada será
while (total < 0):
mostrado no
i = i + 1
console
total = total - i
print(i, total)

43
Problema 3
:: Vampiros
• Uma cidade de H
habitantes foi invadida por
um clã de V vampiros.
• Todo dia, cada vampiro
transforma uma pessoa em
vampiro.
• Escreva um programa que
determine em quantos
dias toda a população é
convertida em vampiros.

44
Problema 3
2 – Identifique as entradas e saídas

Grandeza Variável Faixa de valores


Nº de habitantes H >0
Entradas
Nº de vampiros V >0
Saídas Nº de dias dia >0

45
Problema 3
3 – Projete o script

Variável Contadora Variável acumuladora


habitantes (H)
dia
vampiros (V)
Valor inicial: 0
Habitantes a
Valor final: ? (saída) cada dia: H –
V
Incremento: 1 Vampiros a V +
cada dia:
V
Condição do laço: H > 0
46
Problema 3
4 – Codifique em Python
# Valores iniciais
H = int(input("No. inicial de habitantes: "))
V = int(input("No. inicial de vampiros: "))

# Variavel contadora Entradas são inteiras


dia = 0

# Laco de acumulacao
while (H > 0):
H = H – V
V = 2 * V Impressões intermediárias não fazem parte da
print(dia) solução, mas ajudam a rastrear o código
print(V)
print(H)
dia = dia + 1
incremento
# Impressao de resultados
print(dia)
47
Problema 3
5 – Teste de Rastreamento – caso 1
H = 102
2 dias
V = 50

Dia 0 Dia 1 Dia 2


(input)

102 50 52 100 -48 200

50 100 O foco é o número de


dias, e não o nº exato de
vampiros e habitantes
48
Problema 3
5 – Teste de Rastreamento – caso 2
H = 203
3 dias
V = 40

Dia 0 Dia 1 Dia 2 Dia 3


(input)

203 40 163 80 83 160 -77 320

40 80 160

49
Problema 4
:: Caçadores de Vampiros
• Uma cidade tem H
habitantes e V vampiros.
• Todo dia, cada vampiro
transforma um habitante.
• Um grupo de caçadores
mata M vampiros por dia.
• Determine:
• A cidade ficará LIVRE
dos vampiros ou será
toda VAMPIRIZADA?
• Em quantos dias isso
acontece?
50
Problema 4
2 – Identifique as entradas e saídas

Grandeza Variável Faixa de valores


Nº de habitantes H >0
Entradas Nº de vampiros V >0
Vampiros mortos M >0
Mensagem msg {“LIVRE”, “VAMPIRIZADA”}
Saídas
Nº de dias dia >0

51
Problema 4
3 – Projete o script

Variável Contadora Variáveis acumuladoras


habitantes (H)
dia
vampiros (V)
Valor inicial: 0 Habitantes a H -
Valor final: ? (saída) cada dia: V

Incremento: 1 Vampiros a
cada dia: 2*V - M
V>0E
Condição do laço:
H > 0 52
Problema 4
4 – Codifique em Python
# Valores iniciais
H = int(input("No. inicial de habitantes: "))
V = int(input("No. inicial de vampiros: "))
M = int(input("No. de vampiros mortos: "))
Entradas são
# Variavel contadora inteiras
dia = 0

# Laco de acumulacao
while (V > 0 and H > 0):
H = H - V
V = 2 * V - M
dia = dia + 1

if (H > 0): Testa qual das variáveis


msg = "LIVRE" acumuladoras foi zerada
else:
msg = "VAMPIRIZADA"

print(msg)
print(dia) 53
Problema 4
5 – Teste de Rastreamento – caso 1
H = 200
LIVRE
V=8
3
M = 10

Dia 0 Dia 1 Dia 2 Dia 3


(input)

200 8 192 6 186 2 184 -6

54
Problema 4
5 – Teste de Rastreamento – caso 2
H = 200
VAMPIRIZADA
V = 16
4
M=1

Dia 0 Dia 1 Dia 2 Dia 3 Dia 4


(input
)

20 1 184 31 153 61 92 121 -29 241


0 6

55
Problema 5
:: Soma de séries
• Escreva um script Python para
encontrar o valor da soma dos
N primeiros termos da
seguinte sequência:

56
Problema 5
2 – Identifique as entradas e saídas

Grandeza Unidade de medida Faixa de valores

Entradas N --- >0

Saídas soma --- >0

57
Problema 5
3 – Projete o script
• Determinar, por indução, o termo geral da série:

• Variável contadora (i)


• Valor inicial: 0
• Valor final: N–1
• Incremento: 1
58
Problema 5
4 – Codifique em Python
N = int(input("Qtde. de termos: "))

# Valores iniciais
soma = 0 # Variavel acumuladora
i = 0 # Variavel contadora

# Laco de acumulacao
ou i <= N – 1
while (i < N):
soma = soma + 2**i
i = i + 1

# Impressao de resultados
print(soma)
59
Problema 5
5 – Teste o script (teste de mesa)
• Confira o resultado para a soma da série com 1 termo, 2
termos, ..., 5 termos:

N Soma esperada Saída do programa


1 1=1 1
2 3=1+2 3
3 7=1+2+4 7
4 15 = 1 + 2 + 4 + 8 15
5 31 = 1 + 2 + 4 + 8 + 16 31
Use lápis e papel para A saída do programa deve
calcular os cinco primeiros ser igual ao resultado
termos da soma da série esperado.
60
Problema 6
:: Soma de séries

61
Problema 6
2 – Identifique as entradas e saídas

Grandeza Unidade de medida Faixa de valores

Entradas --- --- ---

Saídas soma --- >0

62
Problema 6
3 – Projete o script
• Determinar, por indução, o termo geral da série:
1

3·1 3·2 3·3 3·25

• Variável contadora (i)


• Valor inicial: 1
• Valor final: 25
• Incremento: 1
63
Problema 6
4 – Codifique em Python
# Valores iniciais
soma = 0 # Variavel acumuladora
i = 1 # Variavel contadora
fim = 25 # Final da contagem

# Laco de acumulacao
while (i <= fim):
soma = soma + 2**i/(3 * i)
i = i + 1

# Impressao de resultados
print(soma)
64
Problema 6
5 – Teste o script (teste de mesa)
• Modifique a variável fim, para obter a soma da série para
1 termo, 2 termos, ..., 5 termos:

N Soma esperada Saída do programa


1 2/3 0.66666
2 2/3 + 4/6 1.33333
3 2/3 + 4/6 + 8/9 2.22222
4 2/3 + 4/6 + 8/9 + 16/12 3.55555
5 2/3 + 4/6 + 8/9 + 16/12 + 32/15 5.68888
Use lápis e papel para A saída do programa deve
calcular os cinco primeiros ser igual ao resultado
termos da soma da série esperado.
65
Problema 7
:: Soma de séries
• Calcular o valor de π com
os N primeiros termos da
seguinte série numérica:

66
Problema 7
2 – Identifique as entradas e saídas

Grandeza Unidade de medida Faixa de valores

Entradas N --- >0

Saídas Pi aproximado --- >0

A saída do programa não é a


soma da série. Esta será usada
como um passo intermediário.

67
Problema 7
3 – Projete o script
• Determinar o termo geral da série
sinal alterna

_

bases ímpares
• Variável contadora (i)
• Valor inicial: 0
• Valor final: N–1
• Incremento: 1
68
Problema 7
4 – Codifique em Python – versão 1
N = int(input("Qtde. de termos: "))

# Valores iniciais
soma = 0 # Variavel acumuladora
i = 0 # Variavel contadora

# Laco de acumulacao
while (i < N):
soma = soma + (-1)**i / (2 * i + 1)**3
i = i + 1

pi_aprox = (32 * soma)**(1./3)

# Impressao de resultados
print(pi_aprox) 69
Problema 7
4 – Codifique em Python – versão 2
N = int(input("Qtde. de termos: "))

# Valores iniciais
soma = 0 # Variavel acumuladora
i = 0 # Variavel contadora

sinal = +1 # Sinal do 1o. termo

# Laco de acumulacao
while (i < N):
soma = soma + sinal / (2 * i + 1)**3
sinal = - sinal # Troca sinal
i = i + 1

novo_pi = (32 * soma)**(1./3)

# Impressao de resultados
print(novo_pi)
70
Problema 7
5 – Teste o script (teste de mesa)
• Verifique a soma para os primeiros cinco valores:

N Resultado esperado Saída do programa


1 3.1748021039363987 3.1748021039363987
2 3.1351129169610097 3.1351129169610097
3 3.1437708364187786 3.1437708364187786
4 3.1406211448571466 3.1406211448571466
5 3.1421038850936593 3.1421038850936593
Use lápis e papel para A saída do programa deve
calcular os cinco primeiros ser igual ao resultado
termos da soma da série esperado.
71
Conteúdo

Estruturas de Repetição por Condição

Problemas Comuns

Exemplos Extras

72
Exemplo 1
• Uma quantia inicial de R$ 20
mil é aplicada a uma taxa de
1,2% de juros ao mês.
• Qual o valor do saldo após 5
anos de aplicação?

73
Exemplo 1
2 – Identifique as entradas e saídas

Grandeza Unidade de medida Faixa de valores


Taxa de juros % 1,2
Entradas Saldo R$ 20 mil
Tempo meses 5 * 12
Saídas Saldo R$ > 0.0

74
Exemplo 1
3 – Projete o script
Saldo a cada ano: Variável Contadora:

Novo Saldo Rendi-


ano
saldo anterior mento
Valor inicial: 0
Saldo
Juros/100
Valor final: 59
anterior
Incremento: 1
Observação:
O saldo deve ser arredondado de um mês para o outro, pois o banco
trabalha com apenas duas casas decimais, desprezando as demais.

75
Exemplo 1
4 – Codifique em Python
# Entrada de dados e definicao de constantes
juros = 1.2
saldo = 20000 A escolha do valor inicial costuma causar erro.
Você não precisa acertar de primeira.
# Tempo inicial Teste diferentes valores.
t = 0

# Atualizacao de saldo Outra fonte de erro. Teste se o


programa deve parar mesmo aqui.
while (t < 5 * 12):
saldo = saldo + saldo * juros/100
saldo = round(saldo, 2)
t = t + 1 Não se esqueça do incremento do
contador. Senão, o programa trava!
# Exibicao de resultados
print("Saldo: R$", saldo)
76
Exemplo 2
• Uma quantia inicial é
aplicada a uma taxa de 5%
de juros ao ano.
• Escreva uma programa que
leia essa quantia inicial.
• Como saída, determine
quantos anos são
necessários para que o saldo
dobre em relação ao valor
inicial.

77
Exemplo 2
2 – Identifique as entradas e saídas

Grandeza Unidade de medida Faixa de valores


Taxa de juros % 5
Entradas Quantia inicial (q0) R$ > 0.0
Saldo R$ 2 * q0
Saídas Tempo anos >0

78
Exemplo 2
3 – Projete o script
Saldo a cada ano: Variável Contadora:

Novo Saldo Rendi-


ano
saldo anterior mento
Valor inicial: 0
Saldo
Juros/100
Valor final: ?
anterior
Incremento: 1
Observação:
O saldo deve ser arredondado de um mês para o outro, pois o banco
trabalha com apenas duas casas decimais, desprezando as demais.

79
Exemplo 2
4 – Codifique em Python
# Entrada de dados
q0 = float(input("Quantia inicial: "))
juros = 5
saldo = q0 # Saldo comeca com quantia inicial

t = 0 # Tempo inicial

Nem sempre a condição de parada do


# Atualizacao de saldo
laço é a variável contadora.
while (saldo < 2 * q0):
saldo = saldo + saldo * juros/100
saldo = round(saldo, 2)
Quantia inicial (q0) não interfere
t = t + 1 nos cálculos intermediários.

# Exibicao de resultados
print("Tempo de investimento:", t, "anos")
80
Exemplo 3
:: Verificar padrão

81
Exemplo 3
2 – Identifique as entradas e saídas

Grandeza Unidade de medida Faixa de valores


Entradas N --- [0, +∞[
Saídas Mensagem --- {Primo, não-primo}

82
Exemplo 3
3 – Projete o script

83
Exemplo 3
4 – Codifique em Python
# Valores iniciais
N = int(input("Digite um numero: "))
i = 2

from math import *

# Repete enquanto nao alcancar raiz de N ou


# nao encontrar divisor de N
while (i <= int(sqrt(N)) and N % i != 0):
i = i + 1

# Testou todos os numeros ateh raiz de N?


if (i > int(sqrt(N))):
print("primo")
# Se nao testou todos, entao encontrou divisor (resto 0)
else:
print("Nao primo")
84
Exemplo 4
:: Sequência de Fibonacci
• É uma sequência de números
inteiros que começa por 0 e 1.
• Cada termo subsequente
corresponde à soma dos dois
anteriores.
• Seu nome vem do matemático
italiano Leonardo de Pisa,
conhecido por Fibonacci.
• Em 1202, ele usou essa
sequência para descrever o
crescimento de uma

?
população de coelhos, mas
Quais os 15
esse padrão é recorrente na
natureza. primeiros termos? 85
Exemplo 4
3 – Projete o script
• Determinar, por indução, o termo geral da sequência:

1ª iteração: a b
0, 1, 1, 2, 5, 5, 8, 13,
2ª iteração: temp a b
...
+
iª iteração: temp = a
a = b
b = temp + a

86
Exemplo 4
4 – Codifique em Python
# Valores iniciais
a = 0 # Primeiro termo
b = 1 # Segundo termo
cont = 0 # Variavel contadora
fim = 15 # Final da contagem
while (cont <= fim):
cont = cont + 1
# Trocar termos
temp = a
a = b
# Novo termo
b = a + temp
# Impressao de resultados
print(temp)
87
Exemplo 5
:: Pedra, Papel, Tesoura
• Duas pessoas (J1 e J2)
jogam pedra, papel,
tesoura.
• Elas jogam várias vezes,
até uma delas ganhar.
• Escreva um programa
que leia repetidamente a
jogada de cada pessoa e
determine quem ganha.

88
Exemplo 5
2 – Identifique as entradas e saídas

Grandeza Unidade
Unidadede
demedida
medida Faixa
Faixade
devalores
valores
Mão do J1 --- {Pedra, Papel, Tesoura}
Entradas
Mão do J2 --- {Pedra, Papel, Tesoura}
Saídas Vencedor --- {J1, J2}

89
Exemplo 5
3 – Projete o script

J1 == J2
elif
V F

Empate (J1 == “Pedra” and J2 == “Tesoura”) or


(J1 == “Papel” and J2 == “Pedra”) or
(J1 == “Tesoura” and J2 == “Papel”)
V F else

J1 ganhou J2 ganhou

90
Exemplo 5
4 – Codifique em Python
# Valores iniciais arbitrarios
j1 = "pedra"
j2 = "pedra"

while (j1 == j2): Enquanto houver empate, joga de novo


j1 = input("Jogada do Jogador 1: ").lower()
j2 = input("Jogada do Jogador 2: ").lower()
if (((j1 == "pedra") and (j2 == "tesoura")) or
((j1 == "papel") and (j2 == "pedra")) or ((j1 ==
"tesoura") and (j2 == "papel"))):
print("J1")
else:
print("J2")
91
Exemplo 6
:: Arte ASCII
• Escreva um script para
imprimir vários
caracteres asterisco para
formar o padrão ao lado.
• Três linhas de 04
asteriscos.

92
Exemplo 6
3 – Projete o script
1. Iniciar contador de linhas

2. Repetir impressão de asteriscos dispostos em uma


mesma linha

3. Repetir passo 2 para cada linha

93
Exemplo 6
4 – Codifique em Python
# Contador do 1o. laco
i = 1

while (i <= 3):


# Contador do 2o. laco
j = 1
while (j <= 4):
print("*", end="")
j = j + 1
print()
i = i + 1 Por padrão, o comando print() do Python pula de
linha quando termina de imprimir.
Para mudar isso, use o parâmetro end para indicar o
que você deseja que apareça ao fim da impressão.
Neste exemplo, nada será impresso (string vazia).
94
Exemplo 7
:: Arte ASCII
• Escreva um script para
imprimir vários
caracteres asterisco para
formar o padrão ao lado:
• Quatro linhas de 3
asteriscos.

95
Exemplo 7
3 – Projete o script
1. Iniciar contador de linhas

2. Repetir impressão de asteriscos dispostos em uma


mesma linha

3. Repetir passo 2 para cada linha

96
Exemplo 7
4 – Codifique em Python
# Contador do 1o. laco
i = 1

while (i <= 4):


# Contador do 2o. laco
j = 1
while (j <= 3):
print("*", end="")
j = j + 1
print()
i = i + 1

97
Referências bibliográficas
• MENEZES, Nilo Ney Coutinho (2014). Introdução à
Programação com Python, 2ed. Editora Novatec.
• HETLAND, Magnus Lie (2008). Beginning Python: From
Novice to Professional. Springer eBooks, 2ª edição.
Disponível em:
http://dx.doi.org/10.1007/978-1-4302-0634-7.
• HORSTMANN, Cay & NECAISE, Rance D. (2013). Python
for Everyone. John Wiley & Sons.

98
Dúvidas?
Monitoria
Nome: Carlos Andres Ramos Losada Junior Nome: Bianka Vasconcelos Maciel

E-mail: carlosjunior@super.ufam.edu.br E-mail: bianka.maciel@icomp.ufam.edu.br

WhatsApp: (92) 99192-1186 WhatsApp: (92) 99535-4811

Atendimento Presencial: Laboratório de Virtualização Atendimento Remoto: meet.google.com/fac-noap-wyg

Segundas às Quintas das 13h às 14h

Links:

Nome: Marcos Augusto de Souza Pinto

E-mail: marcos.augusto@icomp.ufam.edu.br

Atendimento Presencial: Laboratório 02

Terças e quintas-feiras das 12h às 14h

Você também pode gostar