Escolar Documentos
Profissional Documentos
Cultura Documentos
2022/1
Atualizado em 30/06/2022
Conteúdo
Exemplos extras
Conteúdo
Exemplos extras
Tipos de operadores
Operandos Resultado
. Tipo
(entradas) (saída)
(num % 2 != 0 and
(m – 4 > m / 2)
contador < 50)
if ("4" == x):
print("igual")
else:
print("diferente")
u = 11111113 u = 11111113
v = -11111111 v = -11111111
w = 7.51111111 w = 7.51111111
x = (u + v) + w x = (u + v) + w
y = u + (v + w) y = u + (v + w)
x == y x == y
False False
round(x,6) == round(y,6) abs(x-y) < 0.0000001
True True
Funções round e abs
round(x, n) abs(z)
Arredonda um Determina o módulo
número x em n casas de um número real z,
decimais. ou seja, sua distância
até o zero.
Problema 1
Dados três valores X, Y e Z, verifique:
Se eles podem ser os comprimentos dos lados de um
triângulo.
Caso positivo, se o triângulo é equilátero, isósceles ou
escaleno.
Problema 1
1 – Identificar o problema
Propriedade básica de um triângulo:
O comprimento de cada lado de um triângulo é menor
do que a soma dos comprimentos dos demais lados.
Equilátero Isósceles Escaleno
fim
Problema 1
4 – Codificar em Python
# Entrada de dados
X = float(input("Digite o lado X: "))
Y = float(input("Digite o lado Y: "))
Z = float(input("Digite o lado Z: "))
floor
ceil
Exemplo round floor ceill
3.4 round(3.4,0) = 3 floor(3.4) = 3 ceill(3.4) = 4
3.6 round(3.6,0) = 4 floor(3.6) = 3 ceill(3.6) = 4
-3.4 round(-3.4,0) = -3 floor(-3.4) = -4 ceill(-3.4) = -3
-3.6 round(-3.6,0) = -4 floor(-3.6) = -4 ceill(-3.6) = -3
Fonte: “Learn to Program with Small Basic”
Problema 2
Calcular o alcance 𝑆
de um projétil, dados
a velocidade inicial 𝑣0
e o ângulo 𝜃 entre o
cano do canhão e o
solo. Considere 𝑔 =
9,81𝑚/𝑠 2 .
Problema 2
2 – Definir entradas e saídas
g = 9.81
V
C1
F
s = (v0**2 / g) * sin(2 * theta)
“Dados
inválidos”
s
fim
Problema 2
4 – Codificar em Python
# Entrada de dados e definicao de constantes
v0 = float(input("Velocidade inicial: "))
theta_g = float(input("Angulo: "))
g = 9.81
Exemplos Extras
Estruturas Condicionais Encadeadas
ang == 0 or V “Norte”
ang == 360
F
ang == 180 V “Sul"
F
ang == 90 V “Leste”
F
ang == 270 V “Oeste”
F
“Desconhecido”
fim
Problema 3
4 – Codificar em Python
# Entrada de dados
ang = int(input("Digite um angulo: "))
if ((ang == 0) or (ang == 360)):
print("Norte")
elif (ang == 180):
print("Sul")
elif (ang == 90):
print("Leste")
elif (ang == 270):
print("Oeste")
else:
print("Desconhecido")
Problema 4
Anos bissextos são definidos da
seguinte forma:
1. Anos divisíveis por 400 são
bissextos.
2. Anos divisíveis por 100, mas
não por 400, não são
bissextos.
3. Anos divisíveis por 4, mas não
por 100, são bissextos.
4. Todos os outros anos não são
anos bissextos.
Escreva um script em Python
que determine se um ano é
bissexto ou não.
Problema 4
2 – Definir entradas e saídas
V F
Não
ano % 4 == 0
bissexto
V F
Não
Bissexto
bissexto
Problema 4
3 – Projetar algoritmo – versão 1
início C1 ano % 400 == 0
ano C2 ano % 100 == 0
C1 F C3 ano % 4 == 0
V C2 F
V C3 F
V
“Bissexto” “Não “Bissexto” “Não
bissexto” bissexto”
fim
Problema 4
4 – Codificar em Python – versão 1
# Entrada de dados
ano = int(input("Digite o ano: "))
V C1 F
Bissexto Não
bissexto
fim
Problema 4
4 – Codificar em Python – versão 2
# Entrada de dados
ano = int(input("Digite o ano: "))
imp
fim
Problema 5
3 – Projetar algoritmo – versão 2
início
R Facilita uso do elif
F F F F
R <= V1 R <= V2 R <= V3 R <= V4
V V V V
imp = 0
imp = 0,075*(R-V1)
imp = 0,075*(V2-V1) +
0,15*(R-V2)
imp = 0,075*(V2-V1) + imp = 0,075*(V2-V1) +
0,15*(V3-V2) + 0,15*(V3-V2) +
0,225*(R-V3) 0,225*(V4-V3)+
0,275*(R-V4)
imp
fim
Problema 5
4 – Codificar em Python
# Entrada de dados e definicao de constantes
r = float(input("Digite sua renda: "))
v1 = 1499.15
v2 = 2246.75
v3 = 2995.70
v4 = 3743.19
if (r <= v1):
imp = 0
elif (r <= v2):
imp = 0.075*(r-v1)
elif (r <= v3):
imp = 0.075*(v2-v1) + 0.15*(r-v2)
elif (r <= v4):
imp = 0.075*(v2-v1) + 0.15*(v3-v2) + 0.225*(r-v3)
else:
imp = 0.075*(v2-v1)+0.15*(v3-v2)+0.225*(v4-v3)+0.275*(r-v4)
print(imp)
Estruturas Condicionais
:: Revisão
Simples
(if)
Estruturas Composta
Condicionais (if ... else)
Múltipla escolha
(if ... elif ... else)
Conteúdo
Exemplos Extras
Exemplo 1
Sejam A, B, C três números inteiros quaisquer.
Escreva um script Python para arrumá-los em
ordem decrescente.
Exemplo 1
1 – Identificar o problema
São dados três números quaisquer A, B, C.
Eles devem ser arrumados em ordem decrescente.
Pode-se considerar que a saída seja
N1 ≥ N2 ≥ N3
Agora, o problema se resume a atribuir:
A N1
B N2
C N3
Exemplo 1
2 – Definir entradas e saídas
N1 ← A N1 ← B
N2 ← B N2 ← A
C > N1
V F
N3 ← N2
C > N2
N2 ← N1
N1 ← C V F
N3 ← N2
N3 ← C
N2 ← C
Exemplo 1
3 – Projetar algoritmo
início 1
A, B, C
C > N1 F
V C > N2 F
A>B F
V
V
N3 ← N2 N3 ← N2 N3 ← C
N2 ← N1 N2 ← C
N1 ← A N1 ← B N1 ← C
N2 ← B N2 ← A
1
N1, N2, N3
fim
Exemplo 1
4 – Codificar em Python
# Entrada de dados
a = int(input("Digite o numero a: "))
b = int(input("Digite o numero b: "))
c = int(input("Digite o numero c: "))
if (a > b):
n1 = a
n2 = b
else:
n1 = b
n2 = a
if (c > n1):
n3 = n2
n2 = n1
n1 = c
else:
if (c > n2):
n3 = n2
n2 = c
else:
n3 = c
print("Numeros em ordem:",n1,n2,n3)
Exemplo 2
Um gerente quer medir
a eficiência de
processos em sua
empresa.
Um processo X
começou no horário h1
e terminou no mesmo
dia, no horário h2,
também medido em
horas e minutos.
Quanto tempo durou o
processo?
Exemplo 2
2 – Definir entradas e saídas
Grandeza Unidade
Unidadede
demedida
medida Faixa
Faixade
devalores
valores
Horário 1 (hh1, mm1) horas, minutos [0; 23], [0; 59]
Entradas
Horário 1 (hh2, mm2) horas, minutos [0; 23], [0; 59]
Saídas Diferença de tempo
Saídas horas, minutos [0; 23], [0; 59]
(Δh, Δm)
Exemplo 2
3 – Projetar algoritmo
Caso 1 Caso 2
mm2 ≥ mm1 mm2 < mm1
dm = (mm2 – mm1) % 60
V
dh = hh2 – hh1 dh = hh2 – hh1 – 1
dh, dm
fim
Exemplo 2
4 – Codificar em Python
# Entrada de dados
hh1 = int(input("Hora inicial: "))
mm1 = int(input("Minuto inicial: "))
hh2 = int(input("Hora final: "))
mm2 = int(input("Minuto final: "))
# Diferenca de minutos
dm = (mm2 – mm1) % 60
# Diferenca de horas
if (mm2 >= mm1):
dh = hh2 – hh1
else:
dh = hh2 – hh1 – 1
print(dh, dm)
Exemplo 3
Uma quantia inicial 𝑞 é
aplicada a uma taxa 𝑡 de
juros. O saldo 𝑠 desse
investimento após 𝑚
meses é dado por:
𝑚
𝑠 =𝑞 1+𝑡
Para uma taxa 𝑡 ao mês,
quanto tempo (em anos e
meses) é necessário para
que o saldo dobre em
relação ao valor inicial?
Exemplo 3
2 – Definir entradas e saídas
V
(t >= 0) and (t <= 1)
Dados m // 12 anos
inválidos
m % 12 meses
fim
Exemplo 3
4 – Codificar em Python
# Entrada de dados
t = float(input("Informe a taxa de aplicacao: "))
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, Empate}
Exemplo 4
3 – Projetar algoritmo – versão 1
Se J1 == J2
Empate
J1 ganha quando:
(J1 == Pedra E J2 == Tesoura) OU
(J1 == Papel E J2 == Pedra) OU
(J1 == Tesoura E J2 == Papel)
Como fazer o
sorteio?
fim
Exemplo 4
4 – Codificar em Python – sorteio
# Sorteio do jogo "Pedra, Papel, Tesoura"
# Pedra = 0
# Papel = 1
# Tesoura = 2
from random import *
j1 = randint(0,2)
j2 = randint(0,2)
j1 = randint(0,2)
j2 = randint(0,2)
if (j1 == j2):
print("Empate.")
else:
if (((j1 == 0) and (j2 == 2)) or ((j1 == 1) and (j2
== 0)) or ((j1 == 2) and (j2 == 1))):
print("Jogador 1 ganhou.")
else:
print("Jogador 2 ganhou.")
Abstração
Associar objetos (pedra,
papel, tesoura) a números
é uma forma de
abstração.
Adotamos essa abstração
para simplificar o código
do sorteio.
Tal simplificação não
poderia ser também
aplicada ao teste da
condição?
Exemplo 4
:: Repensando o Jogo
1 1
2 0 2 0
Legenda
Jogador em destaque
2 0 ganhou
Jogador em destaque
perdeu
Exemplo 4
:: Repensando o Jogo
Por exemplo, é natural
pensar que três horas
antes de 2h no relógio
resulta em 11h.
Inconscientemente,
fazemos as seguintes
contas:
2h– 3h = –1h
–1h + 12h = 11h
Operador %
O operador % tem uma propriedade interessante:
a%b
Se a é positivo
• Resultado: resto da divisão
Se a é negativo
• Resultado: determinado por aritmética
circular, como em um relógio.
Aritmética circular (ou modular)
0 0
Uma casa [0 – 1] = 2
para trás 2 1 2 1
(0 – 1) % 3 = 2
0 0
Duas casas [0 – 2] = 1
para trás 2 1 2 1
(0 – 2) % 3 = 1
0 0
Três casas [0 – 3] = 0
para trás 2 1 2 1
(0 – 3) % 3 = 0
Exemplo 4
:: Repensando o Jogo
1 (2 – 1) % 3 = 1
2
0 (2 – 0) % 3 = 2
O resultado determina
0 (1 – 0) % 3 = 1
quem ganhou:
1 1: Jogador 1
2 (1 – 2) % 3 = 2 2: Jogador 2
2 (0 – 2) % 3 = 1
0
1 (0 – 1) % 3 = 2
Exemplo 4
3 – Projetar algoritmo – versão 2
início
Teste esta condição no Shell
Sortear J1, J2 do Python, para todas as
possibilidades de J1 e J2
F
J1 == J2
V F
(J1-J2)%3 == 1
fim
Exemplo 4
4 – Codificar em Python – versão 2
# Sorteio do jogo "Pedra, Papel, Tesoura"
# Pedra = 0
# Papel = 1
# Tesoura = 2
from random import *
j1 = randint(0,2)
j2 = randint(0,2)
if (j1 == j2):
print("Empate.")
else:
if ((j1 - j2) % 3 == 1):
print("Jogador 1 ganhou.")
else:
print("Jogador 2 ganhou.")
Referências bibliográficas
Menezes, Nilo Ney Coutinho (2010). Introdução à
Programação com Python. 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.
Gaddis, Tony (2012). Starting out with Python, 2ª
edição. Editora Addison-Wesley.
DIERBACH, Charles. Introduction to Computer
Science using Python: a computational problem-
solving approach. John Wiley & Sons, 2012.
Dúvidas?