Las funciones matemáticas ayudan a transformar datos, tomar decisiones, medir costos y construir algoritmos reutilizables.
En programación, una función puede ser una pieza de código, pero también puede representar una relación matemática. Ambas ideas se conectan cuando usamos una regla para transformar entradas en salidas.
Los algoritmos usan funciones para calcular resultados, clasificar datos, normalizar valores, estimar costos y componer procesos complejos a partir de pasos simples.
Una función transforma un valor de entrada en un valor de salida. Ese patrón aparece en casi cualquier algoritmo.
function doble(x) {
return x * 2;
}
console.log(doble(5));
console.log(doble(12));
Cuando se aplica una función a cada elemento de una lista, se obtiene una nueva lista transformada.
const valores = [1, 2, 3, 4];
function cuadrado(x) {
return x * x;
}
const transformados = valores.map(cuadrado);
console.log(transformados);
Normalizar significa llevar valores a una escala común. Esto es útil para gráficos, porcentajes, estadísticas e interfaces.
function normalizar(valor, minimo, maximo) {
return (valor - minimo) / (maximo - minimo);
}
console.log(normalizar(50, 0, 100));
console.log(normalizar(75, 50, 100));
Muchos algoritmos necesitan impedir que un valor salga de cierto rango.
function limitar(valor, minimo, maximo) {
return Math.max(minimo, Math.min(maximo, valor));
}
console.log(limitar(120, 0, 100));
console.log(limitar(-10, 0, 100));
console.log(limitar(45, 0, 100));
Una función también puede decidir una categoría o estado según una condición matemática.
function clasificarTemperatura(valor) {
if (valor < 10) return "frío";
if (valor < 25) return "templado";
return "calor";
}
console.log(clasificarTemperatura(5));
console.log(clasificarTemperatura(18));
console.log(clasificarTemperatura(30));
En algoritmos, una función de costo mide qué tan caro o conveniente es un resultado.
function costo(distancia, tiempo) {
return distancia * 2 + tiempo * 5;
}
console.log(costo(10, 3));
console.log(costo(5, 8));
Si podemos calcular el costo de varias alternativas, un algoritmo puede elegir la mejor.
function costo(opcion) {
return opcion.distancia * 2 + opcion.tiempo * 5;
}
function mejorOpcion(opciones) {
let mejor = opciones[0];
for (const opcion of opciones) {
if (costo(opcion) < costo(mejor)) {
mejor = opcion;
}
}
return mejor;
}
const opciones = [
{ nombre: "A", distancia: 10, tiempo: 3 },
{ nombre: "B", distancia: 5, tiempo: 8 },
{ nombre: "C", distancia: 8, tiempo: 4 }
];
console.log(mejorOpcion(opciones));
Una función de puntuación combina varios criterios en un solo valor para ordenar o comparar resultados.
function puntaje(producto) {
return producto.calidad * 0.7 - producto.precio * 0.3;
}
const productos = [
{ nombre: "A", calidad: 90, precio: 50 },
{ nombre: "B", calidad: 70, precio: 20 }
];
console.log(productos.map(function(producto) {
return { nombre: producto.nombre, puntaje: puntaje(producto) };
}));
Los algoritmos de ordenamiento suelen usar una función de comparación.
const valores = [8, 3, 10, 1, 5];
valores.sort(function(a, b) {
return a - b;
});
console.log(valores);
La función de comparación define el criterio del algoritmo.
Interpolar permite calcular valores intermedios entre dos extremos.
function interpolar(inicio, fin, t) {
return inicio + (fin - inicio) * t;
}
console.log(interpolar(0, 100, 0));
console.log(interpolar(0, 100, 0.5));
console.log(interpolar(0, 100, 1));
Un algoritmo puede usar una función para suavizar transiciones y evitar cambios bruscos.
function suavizar(t) {
return t * t * (3 - 2 * t);
}
console.log(suavizar(0));
console.log(suavizar(0.25));
console.log(suavizar(0.5));
console.log(suavizar(1));
Un algoritmo puede construirse encadenando funciones pequeñas.
function limpiar(texto) {
return texto.trim();
}
function minusculas(texto) {
return texto.toLowerCase();
}
function slug(texto) {
return texto.replaceAll(" ", "-");
}
const resultado = slug(minusculas(limpiar(" Curso de Funciones ")));
console.log(resultado);
Una función pura devuelve siempre el mismo resultado para la misma entrada y no modifica datos externos.
function suma(a, b) {
return a + b;
}
console.log(suma(2, 3));
console.log(suma(2, 3));
Este tipo de función facilita pruebas, composición y razonamiento sobre algoritmos.
Una función tiene efectos secundarios si modifica algo fuera de sí misma, como una variable externa o la pantalla.
let contador = 0;
function incrementar() {
contador++;
return contador;
}
console.log(incrementar());
console.log(incrementar());
No son incorrectas, pero deben usarse con cuidado porque hacen más difícil predecir el comportamiento.
El rendimiento de un algoritmo puede modelarse con funciones que dependen del tamaño de entrada.
| Función | Tipo de crecimiento | Ejemplo conceptual |
|---|---|---|
| f(n) = n | Lineal | Recorrer una lista |
| f(n) = n² | Cuadrático | Comparar todos contra todos |
| f(n) = log(n) | Logarítmico | Búsqueda binaria |
Una tabla de valores ayuda a visualizar cómo crecen distintas funciones de costo.
function costos(n) {
return {
n,
lineal: n,
cuadratico: n * n,
logaritmico: Math.round(Math.log2(n) * 100) / 100
};
}
console.log(costos(10));
console.log(costos(100));
console.log(costos(1000));
Una función usada dentro de un algoritmo debe controlar su dominio cuando sea necesario.
function raizSegura(x) {
if (x < 0) {
return "Entrada inválida";
}
return Math.sqrt(x);
}
console.log(raizSegura(25));
console.log(raizSegura(-4));
Las funciones matemáticas están presentes en muchos algoritmos, aunque no siempre se las nombre explícitamente. Usarlas con claridad permite construir programas más predecibles, reutilizables y fáciles de analizar.