Aula 08: Exercícios de revisão da parte 1

Tópicos

Aulas a distância - Google Meet:

Para verem os vídeos, vocês devem estar logados no e-mail da usp.

Problema 1:

Nota: Questão 1 da Prova 1 de 2014.

Na figura, no plano cartesiano, a região sombreada não inclui as linhas de bordo. Note que o eixo y cai bem no meio da figura, e usamos o lado do quadrado para indicar as ordenadas correspondentes.

Escreva um programa que lê as coordenadas cartesianas (x, y) de um ponto, ambas do tipo float e imprime dentro se esse ponto está na região, e fora caso contrário.

regiao_plano_cartesiano

Solução 1:

x = float(input("Digite x: "))
y = float(input("Digite y: "))

# suponha que (x,y) está dentro
dentro = True

if x <= -5 or 5 <= x or y <= 0 or 8 <= y:
    # aqui sabemos que (x,y) está fora da face
    dentro = False
elif -3 <= x <=  3 and 1 <= y <= 2:
    # aqui sabemos que (x,y) está na boca
    dentro = False
elif -4 <= x <= -1 and 4 <= y <= 7:
    # aqui sabemos que (x,y) está no olho esquerdo
    dentro = False
    if -3 < x < -2 and 5 < y < 6:
        # aqui sabemos que na verdade (x,y) está na iris esquerda
        dentro = True
elif  1 <= x <=  4 and 4 <= y <= 7:
    # aqui sabemos que (x,y) está no olho direito
    dentro = False
    if  2 < x <  3 and 5 < y < 6:
        # aqui sabemos que na verdade (x,y) está na iris direita
        dentro = True

if dentro:
    print("dentro")
else:
    print("fora")
  

Solução 2:

#começa supondo que está fora e depois... A variável dentro e um indicador de passagem bool.
x = float(input("Digite x: "))
y = float(input("Digite y: "))

# suponha que (x,y) está fora
dentro = False

if -5 < x < 5 and 0 < y < 8:
    # aqui sabemos que (x,y) está na face
    dentro = True
    if -3 <= x <= 3 and 1 <= y <= 2:
        # aqui sabemos que (x,y) está na face, mas está na boca
        dentro = False
    elif -4 <= x <= -1 and 4 <= y <= 7:
        # aqui sabemos que (x,y) está no olho esquerdo
        dentro = False
        if -3 < x < -2 and 5 < y < 6:
            # aqui sabemos que na verdade (x,y) está na iris esquerda
            dentro = True
    elif  1 <= x <=  4 and 4 <= y <= 7:
        # aqui sabemos que (x,y) está no olho direito
        dentro = False
        if  2 < x < 3 and 5 < y < 6:
            # aqui sabemos que na verdade (x,y) está na iris direita
            dentro = True

if dentro:
    print("dentro")
else:
    print("fora")
  

Solução 3:

x_pos = x = float(input("Digite x: "))
y = float(input("Digite y: "))

if x < 0: # simetria ;-)
    x_pos = -x

# suponha que (x,y) que está dentro
dentro = True

if x_pos >= 5 or y >= 8 or y <= 0:
    # aqui sabemos que (x,y) está fora da face
    dentro = False
elif x_pos <= 3 and 1 <= y <= 2:
    # aqui sabemos que (x,y) está na boca
    dentro = False
elif 1 <= x_pos <= 4 and 4 <= y <= 7:
    # aqui sabemos que (x,y) está em um olho
    if not (2 < x_pos < 3 and 5 < y < 6):
        # aqui sabemos que (x,y) está fora da iris
        dentro = False

if dentro:
    print("dentro")
else:
    print("fora")
  

Solução 4:

x_pos = x = float(input("Digite x: "))
y = float(input("Digite y: "))

if x < 0:
    x_pos = -x

# face == True se (x,y) está na face
face = x_pos <  5 and 0 < y < 8

# boca == True se (x,y) está na boca
boca = x_pos <= 3 and 1 <= y <= 2

# olho == True se (x,y) está em um dos olhos
olho = 1 <= x_pos <= 4 and 4 <= y <= 7

# iris == True se (x,y) está em uma das iris
iris = 2 <  x_pos <  3 and 5 <  y <  6

# vixe! :-D complicado?! certamente muito elegante
if iris or face and not (boca or olho):
    print("dentro")
else:
    print("fora")