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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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")