A área de um triângulo qualquer pode ser calculada pelo Teorema de Heron:
onde
é área do triângulo,
,
e
são os lados do triângulo e
é o semiperímetro do triângulo.
Escreva a função area_heron ( ), a qual recebe como parâmetros os lados dos triângulos e retorne o valor da área desse triângulo. Caso os valores de a, b e c não permitam a existência de um triângulo, a função area_heron() deverá retornar o valor -1.
Passo 1
O que o enunciado pede:
- Escrever a função chamada area_heron() que receba como parâmetros os lados de um triângulo e retorne a área calculada pelo Teorema de Heron.
- Caso os valores de
, e não permitam a existência de um triângulo, a função deve retornar .
Informações e condições dadas:
- A fórmula de Heron para a área é
- O semiperímetro é
- A função recebe como entrada os três lados (vou chamar de
, e ). - O enunciado exige verificar existência do triângulo; ou seja, devemos validar as entradas antes de aplicar a fórmula.
Passo 2
Entendendo a fórmula e o que cada símbolo significa (aula rápida):
-
, e são os comprimentos dos três lados do triângulo. -
é o semiperímetro: - A expressão dentro da raiz quadrada é
- A área
é então
Importante: para que
faça sentido real, precisamos de
. Além disso, geometrically, os lados devem satisfazer as desigualdades do triângulo.
Passo 3
Condição de existência do triângulo (por que checar isso?):
- Para três segmentos positivos formarem um triângulo, cada par somado deve ser maior que o terceiro. Ou seja, precisamos checar:
e - Se alguma dessas condições falhar (por exemplo
), os lados não formam um triângulo (caso limite é degenerado, área zero) — o enunciado pede que nesses casos retornemos . - Portanto: antes de calcular
e , verificamos as condições acima; se alguma não for satisfeita, retornamos .
Passo 4
Cuidados numéricos e decisão sobre casos degenerados:
- Trabalhando com números reais (floats), pode aparecer erro de ponto flutuante. Mas como o enunciado pede claramente que, se os lados não permitirem um triângulo, retornemos
, vamos: - exigir que as desigualdades do triângulo sejam estritas (por exemplo
, não ). - calcular
. Se (incluindo valores pequenos negativos por arredondamento), entendemos que não é um triângulo válido segundo o enunciado e retornamos .
- exigir que as desigualdades do triângulo sejam estritas (por exemplo
- Assim, o algoritmo fica robusto e consistente com o pedido.
Passo 5
Algoritmo passo a passo (procedimento que você vai programar):
- Tentar converter as entradas
, , para número real (float). Se não for possível, retornar . - Verificar se
, , . Se alguma não for, retornar . - Verificar as desigualdades do triângulo:
, , . Se alguma falhar, retornar . - Calcular o semiperímetro
- Calcular
- Se
, retornar . - Caso contrário, calcular
e retornar
(valor numérico, float).
Exemplo numérico rápido (para fixar): com lados
,
,
.
-
. -
. -
. (triângulo retângulo clássico)
Passo 6
Observações de implementação:
- Em Python use o módulo math para a raiz quadrada: math.sqrt().
- A função deve retornar
em todos os casos inválidos. - Retorne a área como float quando válida.
- Abaixo está a função pronta que implementa exatamente o algoritmo explicado.
Resposta
def area_heron(a, b, c):
import math
try:
a = float(a)
b = float(b)
c = float\text{(c)}
except (TypeError, ValueError):
return -1
# lados devem ser positivos
if a <= 0 or b <= 0 or c <= 0:
return -1
# desigualdades do triângulo (estritas)
if not (a + b > c and a + c > b and b + c > a):
return -1
s = (a + b + c) / 2.0
D = s * (s - a) * (s - b) * (s - c)
if D <= 0:
return -1
return math.sqrt(D)