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):
- A base e a altura do triângulo (dados mais simples).
- 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 é:
onde:
-
é a área do triângulo; -
é a base do triângulo; -
é a altura relativa à base .
Explicação didática: imagine a base
e uma altura
medida perpendicularmente a essa base. A área do retângulo com mesma base e mesma altura seria
. O triângulo ocupa exatamente metade desse retângulo, por isso dividimos por
.
Exemplo numérico simples para fixar (faça mentalmente): se
e
, então
Passo 3
Fórmula alternativa (Heron) quando temos os três lados. Às vezes na prova você tem os três lados
,
,
e não tem a altura. A fórmula de Heron permite calcular a área só com os lados:
- Primeiro calcule o semiperímetro:
- Depois:
Aqui:
-
são os comprimentos dos lados; - é necessário que
e que satisfaçam a desigualdade triangular: , , . 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
- imprimir
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.
- 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 é
.
- Função para calcular área por base e altura:
- Recebe dois floats
e . - Retorna
.
- Função para calcular área por Heron:
- Recebe três floats
. - Verifica desigualdade triangular.
- Calcula
. - Retorna
usando math.sqrt().
- 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 (
). - 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):
- Usando base/altura:
- Entrada:
, . - Cálculo:
. - Saída:
(com 6 casas) ou “5.0”.
- Usando três lados:
- Entrada:
, , . - Semiperímetro:
. - Área:
.
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
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()