Início
›
Laços, Arrays, Strings
›
Aula 26: Funções Elementares (math.h)
Aula 26: Funções Elementares (math.h)
A biblioteca math.h do C — como usar sqrt, sin, cos, pow e outras funções matemáticas.
📖 O que você vai aprender nesta página
✅ Essenciais que você precisa saber
Inclua <math.h> e faça o link com -lm
Use sqrt, pow, sin, cos, log e exp
Funções trigonométricas recebem radianos, não graus
⭐ Leia se tiver tempo
Constantes M_PI e M_E
fabs, floor, ceil e round
Lidando com NaN e Inf
O que são Funções Elementares?
C já vem com um conjunto familiar de funções matemáticas: raízes quadradas, funções trigonométricas, exponenciais, logaritmos e mais. Para usá-las, inclua <math.h>.
Como usá-las: (1) adicione #include <math.h> no topo, (2) chame nomeDaFuncao(arg) e (3) o valor de retorno é quase sempre um double .
#include<stdio.h>
#include<math.h> // ← obrigatório!
int main(void){
double x = 2.0;
printf("sqrt(%.1f) = %f\n", x, sqrt(x));
return 0;
}
Nota sobre compilação: No Linux e no Mac, o gcc pode exigir a opção -lm para linkar a biblioteca math: gcc prog.c -lm . O Visual Studio não precisa.
Principais Funções Matemáticas
Todas ficam disponíveis assim que você faz #include <math.h>. Os argumentos e retornos são essencialmente sempre double.
Função
Finalidade
Exemplo
Resultado
sqrt(x) Raiz quadrada √x sqrt(9.0) 3.0
pow(x, y) Potência xy pow(2.0, 10.0) 1024.0
fabs(x) Valor absoluto |x| fabs(-3.7) 3.7
sin(x) Seno (radianos) sin(3.14159/2) 1.0
cos(x) Cosseno (radianos) cos(0.0) 1.0
tan(x) Tangente (radianos) tan(3.14159/4) ≈ 1.0
exp(x) Exponencial ex exp(1.0) ≈ 2.71828
log(x) Log natural ln(x) log(2.71828) ≈ 1.0
log10(x) Log comum log10 (x) log10(1000.0) 3.0
ceil(x) Arredonda para cima ceil(2.3) 3.0
floor(x) Arredonda para baixo floor(2.7) 2.0
sqrt — Raiz Quadrada
Nossa primeira função. sqrt(x) retorna a raiz quadrada de x (√x).
#include<stdio.h>
#include<math.h>
int main(void){
double a = 2.0;
printf("sqrt(%.1f) = %f\n", a, sqrt(a));
// -> sqrt(2.0) = 1.414214
// Teorema de Pitágoras: c = sqrt(a^2 + b^2)
double b = 3.0, c = 4.0;
double hyp = sqrt(b*b + c*c);
printf("hypotenuse = %f\n", hyp);
// -> hypotenuse = 5.000000
return 0;
}
Observação: Passar um número negativo para sqrt retorna NaN (Not a Number). É mais seguro checar o sinal antes.
Funções Trigonométricas (sin / cos / tan)
As funções trigonométricas do C recebem radianos, não graus . Converta graus para radianos com rad = deg * M_PI / 180.0.
sin(θ)
sin(0) = 0 sin(π/2) = 1 sin(π) = 0
cos(θ)
cos(0) = 1 cos(π/2) = 0 cos(π) = -1
tan(θ)
tan(0) = 0 tan(π/4) ≈ 1 tan(π/2) = ∞
#include<math.h>
// graus -> radianos
double deg = 45.0;
double rad = deg * M_PI / 180.0;
printf("sin(45 deg) = %f\n", sin(rad)); // -> 0.707107
printf("cos(45 deg) = %f\n", cos(rad)); // -> 0.707107
printf("tan(45 deg) = %f\n", tan(rad)); // -> 1.000000
M_PI é uma constante de pi (3.14159...) definida em math.h. Dá para escrever #define PI 3.14159 por conta própria, mas M_PI é mais preciso.
Calculadora de Funções — Experimente
Teste as funções matemáticas direto no seu navegador. Escolha uma função e digite um valor para ver o resultado.
O resultado aparecerá aqui.
Escreva o Seu — Funções Matemáticas
Um programa que usa funções trigonométricas e raízes quadradas para calcular a hipotenusa e os ângulos de um triângulo retângulo.
#include <stdio.h>
#include <math.h>
int main (void ){
double a = 3.0 ;
double b = 4.0 ;
double c = sqrt (a*a + b*b);
printf ("a=%.1f, b=%.1f\n" , a, b);
printf ("hypotenuse c = %f\n" , c);
double deg = 30.0 ;
double rad = deg * 3.14159 / 180.0 ;
printf ("sin(%.0f) = %f\n" , deg, sin (rad));
printf ("cos(%.0f) = %f\n" , deg, cos (rad));
printf ("pow(2,10) = %.0f\n" , pow (2.0 , 10.0 ));
printf ("log(100) = %f\n" , log10 (100.0 ));
return 0 ;
}
💡 Mais ideias para testar
Calcule pow(2, 10), sqrt(2) e log(M_E)
Teste valores especiais como sin(M_PI/2) e cos(0)
Compare fabs, floor, ceil e round
Tire o -lm e veja o erro de linker aparecer
Quiz
Confira seu entendimento.
Q1. De qual header você precisa para usar funções matemáticas?
stdlib.h
math.h
string.h
Funções matemáticas como sqrt, pow, sin e cos são declaradas em math.h. Você também pode precisar da opção -lm ao compilar no Linux ou Mac.
Q2. Qual o resultado de pow(2, 3)?
6
8
9
pow(2, 3) retorna 2 elevado à 3ª potência, que é 8. pow retorna um double.
Q3. Qual o resultado de sqrt(16)?
4.0
8.0
256.0
sqrt retorna a raiz quadrada. √16 = 4.0.