Una función booleana toma valores de verdad como entrada y produce un valor de verdad como salida. Son la base matemática de la lógica digital, las condiciones en programación y los circuitos computacionales.
Hasta ahora hemos estudiado funciones cuyo dominio e imagen eran conjuntos numéricos o finitos generales. En informática, muchas decisiones se reducen a respuestas binarias: sí o no, encendido o apagado, verdadero o falso.
Las **funciones booleanas** formalizan este comportamiento. Son un caso particular de función discreta donde el dominio y el codominio son el conjunto de **valores de verdad** {0, 1} o, equivalentemente, {Falso, Verdadero}.
El conjunto booleano tiene exactamente dos elementos:
En programación, JavaScript representa estos valores con los literales false y true. Al operar aritméticamente, true se convierte en 1 y false en 0.
Una función booleana de n variables es una aplicación:
Es decir, recibe una tupla de n bits y devuelve un único bit de salida.
Vista desde el marco del curso, una función booleana cumple todas las propiedades de una función discreta:
Por ejemplo, la función AND de dos variables es la función f : B² → B definida por la tabla:
Las funciones booleanas elementales actúan como bloques de construcción para expresiones más complejas:
Cualquier función booleana compleja puede expresarse combinando estas operaciones mediante fórmulas lógicas.
Selecciona una operación lógica y asigna valores a p y q. El simulador muestra el flujo desde las entradas hasta la salida f(p, q), iluminando en verde el resultado verdadero y en rojo el falso.
En JavaScript, los operadores lógicos evalúan expresiones booleanas. Una función que devuelve true o false es, matemáticamente, una función booleana.
// Funciones booleanas como funciones de JavaScript
const AND = (p, q) => p && q;
const OR = (p, q) => p || q;
const NOT = (p) => !p;
const XOR = (p, q) => Boolean(p) !== Boolean(q);
const IMPL = (p, q) => !p || q;
// Evaluar en todas las combinaciones (dominio B²)
function tablaVerdadBinaria(func, nombre) {
console.log(`${nombre}:`);
for (const p of [false, true]) {
for (const q of [false, true]) {
const r = func(p, q);
console.log(` p=${p}, q=${q} → ${r}`);
}
}
}
tablaVerdadBinaria(AND, "AND");
// AND:
// p=false, q=false → false
// p=false, q=true → false
// p=true, q=false → false
// p=true, q=true → true
// Uso práctico: condición compuesta
function puedeAcceder(esAdmin, tienePermiso, cuentaActiva) {
return OR(AND(esAdmin, cuentaActiva), AND(tienePermiso, cuentaActiva));
}
console.log(puedeAcceder(true, false, true)); // true
console.log(puedeAcceder(false, false, true)); // false
0 && 1 devuelve 0 (falsy), no el booleano false; conviene usar Boolean() si se necesita tipo estricto.Las funciones booleanas conectan la teoría de funciones discretas con la lógica que gobierna computadoras y programas. Cada condición if, cada compuerta lógica en hardware y cada filtro de consulta con criterios binarios es, en el fondo, una función booleana.
En el próximo tema profundizaremos en las **tablas de verdad y funciones booleanas**, aprendiendo a representar sistemáticamente cualquier función de n variables y a analizar expresiones lógicas equivalentes.