Elaborar um programa Python para calcular a área de um triângulo.

Passo 1

O enunciado pede: “Elaborar um programa Python para calcular a área de um triângulo.” Vou esclarecer exatamente o que isso significa e quais dados podemos usar.
  • O que o enunciado pergunta: criar um programa em Python que receba dados do triângulo e retorne a sua área.
  • Possíveis entradas (informações que podemos receber do usuário):
    1. A base e a altura do triângulo (dados mais simples).
    2. As três arestas (lados) do triângulo (nesse caso usamos uma fórmula diferente).
  • Informações que devemos garantir: os valores precisam ser números e válidos para representar um triângulo (por exemplo, base e altura maiores que zero; para três lados, precisam satisfazer a desigualdade triangular).
  • Resultado esperado: imprimir o valor da área num formato legível (por exemplo, com algumas casas decimais).
  • Observação: não foi especificado qual método usar, então vou apresentar o método mais direto (base × altura) e também a alternativa prática (fórmula de Heron para o caso dos três lados). Assim você terá um programa útil na prova e na prática.

Passo 2

Conceito e fórmula principal (base e altura). A fórmula clássica da área de um triângulo quando conhecemos a base e a altura é:
A = \frac{b \cdot h}{2}
onde:
  • A é a área do triângulo;
  • b é a base do triângulo;
  • h é a altura relativa à base b.
Explicação didática: imagine a base b e uma altura h medida perpendicularmente a essa base. A área do retângulo com mesma base e mesma altura seria b\cdot h. O triângulo ocupa exatamente metade desse retângulo, por isso dividimos por 2.
Exemplo numérico simples para fixar (faça mentalmente): se b=4 e h=3, então
A = \frac{4 \cdot 3}{2} = \frac{12}{2} = 6.

Passo 3

Fórmula alternativa (Heron) quando temos os três lados. Às vezes na prova você tem os três lados a, b, c e não tem a altura. A fórmula de Heron permite calcular a área só com os lados:
  1. Primeiro calcule o semiperímetro:
s = \frac{a+b+c}{2}
  1. Depois:
A = \sqrt{s(s-a)(s-b)(s-c)}.
Aqui:
  • a,b,c são os comprimentos dos lados;
  • é necessário que a,b,c>0 e que satisfaçam a desigualdade triangular: a < b+c, b < a+c, c < a+b. Se não, não formam um triângulo real.
Explicação curta: Heron é útil quando não temos a altura; exige um pouco mais de cálculo (multiplicações e raiz quadrada), mas é direto de implementar.

Passo 4

Como transformar isso em um programa Python (ideia geral e boas práticas).
  • Ler dados do usuário (input) e converter para número (float).
  • Verificar se os valores são válidos (positivos; para 3 lados, verificar desigualdade).
  • Calcular a área com a fórmula correspondente.
  • Mostrar o resultado formatado (por exemplo, com 4 ou 6 casas decimais).
  • Tratar erros de entrada (valor não numérico) com try/except para evitar crash na prova/uso.
Pseudocódigo (versão simples para o caso base/altura):
  • pedir base
  • pedir altura
  • converter para float
  • se base <= 0 ou altura <= 0: avisar erro
  • calcular A = b \cdot h / 2
  • imprimir A

Passo 5

Implementação passo a passo do programa em Python (explicando cada bloco). Vou descrever funções pequenas para ficar organizado e fácil de memorizar na prova.
  1. Função para ler um número positivo:
  • Objetivo: pedir repetidamente até o usuário digitar um número real positivo.
  • Raciocínio: usar um loop while True, tentar converter com float(), capturar ValueError, verificar se é >0.
  1. Função para calcular área por base e altura:
  • Recebe dois floats b e h.
  • Retorna \dfrac{b\cdot h}{2}.
  1. Função para calcular área por Heron:
  • Recebe três floats a,b,c.
  • Verifica desigualdade triangular.
  • Calcula s=\dfrac{a+b+c}{2}.
  • Retorna \sqrt{s(s-a)(s-b)(s-c)} usando math.sqrt().
  1. Interface simples:
  • Permite ao usuário escolher o método (base/altura ou três lados).
  • Chama as funções adequadas e imprime o resultado com formatação.
Vou agora explicar a lógica de formatação: para imprimir com, por exemplo, 6 casas decimais usamos algo como:
  • f"{area:.6f}" (isso mostra sempre 6 casas).
    No exame, você pode escolher imprimir menos casas; o importante é ser consistente.

Passo 6

Erros comuns e validações que você deve saber na prova:
  • Não esqueça de verificar se os valores são positivos ( >0).
  • Para três lados, cheque a desigualdade triangular antes de calcular (caso contrário, a expressão dentro da raiz pode ficar negativa e gerar erro).
  • Ao usar float, números como “3” ou “3.0” viram float sem problema; strings não numéricas lançam ValueError.
  • Se for entrega em programa, prefira tratar exceções para não travar.

Passo 7

Exemplos práticos (para treinar na prova):
  1. Usando base/altura:
  • Entrada: b=5, h=2.
  • Cálculo: A=\dfrac{5\cdot 2}{2}=5.
  • Saída: 5{,}000000 (com 6 casas) ou “5.0”.
  1. Usando três lados:
  • Entrada: a=3, b=4, c=5.
  • Semiperímetro: s=\dfrac{3+4+5}{2}=6.
  • Área: A=\sqrt{6(6-3)(6-4)(6-5)}=\sqrt{6\cdot3\cdot2\cdot1}=\sqrt{36}=6.
Esses exemplos ajudam a verificar se o programa está correto.

Passo 8

Dicas rápidas para a prova (motivação):
  • Decore mentalmente a fórmula A=\dfrac{b\cdot h}{2} e a fórmula de Heron (ou leve um rascunho). São fórmulas que caem com frequência.
  • Se o enunciado der base e altura, não complique: use a primeira fórmula — é a mais rápida e segura.
  • Teste mentalmente com um triângulo retângulo simples (ex.: 3-4-5) para checar seu programa rápido.
  • Respira fundo! Se errou entrada no programa, trate com try/except e re-ler o input até ficar certo — isso evita perder tempo corrigindo crashes na hora.

Resposta

#!/usr/bin/env python3
import math

def ler_float_positivo(prompt):
    while True:
        try:
            s = input(prompt).strip()
            valor = float(s)
            if valor <= 0:
                print("Valor deve ser maior que zero. Tente novamente.")
                continue
            return valor
        except ValueError:
            print("Entrada inválida. Digite um número (ex.: 3.5).")

def area_base_altura(b, h):
    return (b * h) / 2.0

def area_heron(a, b, c):
    # verifica desigualdade triangular
    if not (a < b + c and b < a + c and c < a + b):
        raise ValueError("Os lados fornecidos não satisfazem a desigualdade triangular.")
    s = (a + b + c) / 2.0
    inside = s * (s - a) * (s - b) * (s - c)
    # proteção numérica: inside deve ser >= 0
    if inside < 0:
        inside = 0.0
    return math.sqrt(inside)

def main():
    print("Cálculo da área de um triângulo")
    print("Escolha o método:")
    print("1 - Base e altura")
    print("2 - Três lados (fórmula de Heron)")
    while True:
        opc = input("Opção (1 ou 2, ENTER para sair): ").strip()
        if opc == "":
            print("Saindo.")
            return
        if opc not in ("1", "2"):
            print("Opção inválida. Digite 1, 2 ou ENTER para sair.")
            continue
        if opc == "1":
            b = ler_float_positivo("Digite a base (b): ")
            h = ler_float_positivo("Digite a altura (h): ")
            area = area_base_altura(b, h)
            print(f"Área = {area:.6f}")
        else:  # opc == "2"
            a = ler_float_positivo("Digite o lado a: ")
            b = ler_float_positivo("Digite o lado b: ")
            c = ler_float_positivo("Digite o lado c: ")
            try:
                area = area_heron(a, b, c)
                print(f"Área = {area:.6f}")
            except ValueError as e:
                print("Erro:", e)
        # após calcular, volta ao menu
        print("-" * 30)

if __name__ == "__main__":
    main()

Exercícios relacionados