Skip to article frontmatterSkip to article content
Início

Área de Códigos

Authors
Affiliations
PROFMAT, Universidade Federal do Cariri
PROFMAT, Universidade Federal do Cariri

Nesta seção, você encontrará todos os códigos usados para os desafios e exemplos.

Código 1: Gera os pontos, calcula medidas, perímetro e área


using Plots
gr(size=(500, 500))  # Define o backend gráfico e o tamanho da janela

# Declarar fora da função para facilitar o uso depois
global x, y, AB, AC, BC, P, S

function gerar_figura()
    global x, y, AB, AC, BC, P, S  # Necessário para modificar as variáveis globais

    # Geração dos pontos A, B e C
    a = rand(0:10)
    b = rand(0:10)
    x = [a, rand(0:10), rand(0:10), a]  # x[1]=Ax, x[2]=Bx, x[3]=Cx, x[4]=Ax
    y = [b, rand(0:10), rand(0:10), b]  # y[1]=Ay, y[2]=By, y[3]=Cy, y[4]=Ay

    # Cálculo das distâncias entre os pontos
    AB = hypot(x[1] - x[2], y[1] - y[2])
    AC = hypot(x[1] - x[3], y[1] - y[3])
    BC = hypot(x[2] - x[3], y[2] - y[3])

    # Perímetro
    P = round(AB + AC + BC, digits = 1)

    # Área (fórmula do determinante)
    S = abs((x[1]*y[2] + x[2]*y[3] + x[3]*y[1] -
             y[1]*x[2] - y[2]*x[3] - y[3]*x[1])) / 2
    return nothing # Para não “vazar” o valor de S como retorno
end
gerar_figura (generic function with 1 method)

Código 2: Plota a figura


function plotar_figura(x,y)
    plot(x, y,
        title = "Triângulo",
        lw = 3,
        label = false,
        xlim = (-1, 11),
        ylim = (-1, 11),
        xticks = 0:10,
        yticks = 0:10,
        aspect_ratio = :equal,
        fillrange = 0, fillalpha = 0.5, fillcolor = :yellow,
        grid = :on, gridalpha = 0.7, gridstyle = :dash)
    scatter!(x[1:3], y[1:3],
        label = false,
        annotations = (x[1:3] .+ 0.3, y[1:3] .+ 0.3, ["A", "B", "C"]))
end
plotar_figura (generic function with 1 method)

Código 3: Teste de existência do triângulo


function existência_triângulo(S)
    println("A figura é um triângulo?:")
    println("\u270D Digite (s/n) para informar sua conclusão:")
    d1 = readline()
    # Verifica a existência através da área:
    if S>0
        exist = "s"  # Sim, o triângulo existe
    else
        exist = "n"  # Não, o triângulo não existe
    end
    if exist == d1
        println("\u2705 Você acertou!")
    else
        println("\u274C Você errou!")
        println("\U0001F501 Retorne à célula anterior e gere novas coordenadas")
    end
end
existência_triângulo (generic function with 1 method)

Código 4. Verifica os vértices do triângulo


function verificar_vertices(x, y)
    println("Informe as coordenadas x e y do ponto A")
    x_1 = parse(Int, readline())
    y_1 = parse(Int, readline())
    println("Informe as coordenadas x e y do ponto B")
    x_2 = parse(Int, readline())
    y_2 = parse(Int, readline())
    println("Informe as coordenadas x e y do ponto C")
    x_3 = parse(Int, readline())
    y_3 = parse(Int, readline())
    println(repeat("*", 39))
    A = [x[1], y[1]]
    B = [x[2], y[2]]
    C = [x[3], y[3]]
    # Verificação das respostas
    if A == [x_1, y_1]
        println("\u2705 Ponto A!")
    else
        println("\u274C Ponto A!")
        println("\U0001F501 Tente novamente!")
    end

    if B == [x_2, y_2]
        println("\u2705 Ponto B!")
    else
        println("\u274C Ponto B!")
        println("\U0001F501 Tente novamente!")
    end
    if C == [x_3, y_3]
        println("\u2705 Ponto C!")
    else
        println("\u274C Ponto C!")
        println("\U0001F501 Tente novamente!")
    end    
end
verificar_vertices (generic function with 1 method)

Código 5: Teste das medidas dos lados


function verificar_lados(AB,AC,BC)
    println("\u270D Informe a medida do lado AB")
    AB_1 = parse(Float64, readline())
    println("\u270D Informe a medida do lado AC")
    AC_1 = parse(Float64, readline())
    println("\u270D Informe a medida do lado BC")
    BC_1 = parse(Float64, readline())

    if round(AB, digits=1) == AB_1
        println("O lado AB: \u2705")
    else
        println("O lado AB: \u274C")
        println("\U0001F501 Tente novamente!")
    end

    if round(AC, digits=1) == AC_1
        println("O lado AC: \u2705")
    else
        println("O lado AC: \u274C")
        println("\U0001F501 Tente novamente!")
    end

    if round(BC, digits=1) == BC_1
        println("O lado BC: \u2705")
    else
        println("O lado BC: \u274C")
        println("\U0001F501 Tente novamente!")
    end
end 
verificar_lados (generic function with 1 method)

Código 6: Teste de classificação do triângulo (lados)


function classificacao_lados(AB, AC, BC)
    println("\u270D Qual classificação do triângulo ABC?")
    println("1\u20E3 Equilátero")
    println("2\u20E3 Isósceles")
    println("3\u20E3 Escaleno")
    d2 = parse(Int, readline())
    if AB == AC && AC == BC
        class = 1   # Equilátero
    elseif AB == AC || AB == BC || AC == BC
        class = 2   # Isósceles
    else
        class = 3   # Escaleno
    end
    if class == d2
        println("\u2705 Você acertou!")
    else
        println("\u274C Você errou!")
        println("\u27F3 Tente novamente!")
    end
end
classificacao_lados (generic function with 1 method)

Código 7: Cálculo dos ângulos internos


function ângulo_interno(AB,AC,BC,S)
    α = round(Int,asind((2 * S) / (AB * AC)))
    β = round(Int,asind((2 * S) / (AB * BC)))
    println("As medidas de dois dos ângulos internos do triângulo ABC são: $(α)° e $(β)°.")
    println("Qual a medida do terceiro ângulo?")
    γ = parse(Int, readline())
    if γ == 180 - α - β
        println("\u2705 Você acertou!")
    else
        println("\u274C Você errou!")
        println("\U0001F501 Refaça seus cálculos e tente novamente")
    end
end
ângulo_interno (generic function with 1 method)

Código 8: Teste de classificação do triângulo (ângulos)


function classificacao_ângulos(AB, AC, BC)
    println("\u270D Qual classificação do triângulo ABC?")
    println("1\u20E3 Acutângulo")     
    println("2\u20E3 Obtusângulo")   
    println("3\u20E3 Retângulo")     
    d3 = parse(Int, readline())  # Armazena a resposta do usuário

    lados = Float64[AB, AC, BC]
    l = sort(lados)  # Coloca em ordem crescente

    if l[3]^2 < l[1]^2 + l[2]^2
        class_a = 1  # Acutângulo
    elseif l[3]^2 > l[1]^2 + l[2]^2
        class_a = 2  # Obtusângulo
    else
        class_a = 3  # Retângulo
    end
    if class_a == d3
        println("\u2705 Você acertou!")    
    else
        println("\u274C Você errou!")      
        println("\U0001F501 Tente novamente!") 
    end
end
classificacao_ângulos (generic function with 1 method)

Código 9: Cálculo do perímetro


function perimetro(P)
    println("\u270D Informe a medida do perímetro do triângulo ABC:")
    d4 = parse(Float64, readline())
       
    if d4 == P
        println("\u2705 Sua resposta está correta!")
        println("O perímetro do triângulo ABC mede: $P unidades.")
    else
        println("\u274C Sua resposta está incorreta.")
        println("\u21BA Tente novamente!")
    end
end
perimetro (generic function with 1 method)

Código 10: Cálculo da área


function area(S)
    println("\u270D Informe a medida da área do triângulo ABC:")       
    d5 = parse(Float64, readline()) #Recebe o valor da área  
    if d5 == S
        println("\u2705 Sua resposta está correta!")                   
        println("A área do triângulo ABC mede: $S unidades².")
        println("\u2728 PARABÉNS! \u2728")                
        println()
        println("Se você está lendo esta mensagem, significa que venceu todos os desafios!")
        println("Excelente trabalho, continue praticando e desafiando sua mente!")  
        println("Até os próximo desafios!")                       
    else
        println("\u274C Sua resposta está incorreta.")                  
        println("\u21BB Tente novamente!") 
    end
end
area (generic function with 1 method)