Los operadores lógicos permiten negar, combinar y relacionar proposiciones. Son la base para construir expresiones lógicas, tablas de verdad y condiciones en programas.
Las proposiciones simples permiten afirmar una sola idea. Para construir razonamientos más completos necesitamos operadores lógicos, también llamados conectores lógicos.
Un operador lógico toma una o más proposiciones y produce una nueva proposición cuyo valor de verdad depende de las proposiciones originales.
Un operador lógico es un símbolo o palabra que permite formar una expresión lógica a partir de una o varias proposiciones.
Por ejemplo, si tenemos estas proposiciones:
Podemos construir una proposición compuesta: p y q, que significa "el usuario está activo y tiene permiso".
Los operadores principales que estudiaremos en el curso son los siguientes:
| Operador | Nombre | Símbolo lógico | Idea básica |
|---|---|---|---|
| No | Negación | ¬p | Invierte el valor de verdad |
| Y | Conjunción | p ∧ q | Exige que ambas proposiciones sean verdaderas |
| O | Disyunción | p ∨ q | Exige que al menos una proposición sea verdadera |
| O exclusivo | XOR | p ⊕ q | Exige que una sola proposición sea verdadera |
| Si... entonces | Implicación | p → q | Relaciona una condición con una consecuencia |
| Si y solo si | Bicondicional | p ↔ q | Exige que ambas proposiciones tengan el mismo valor |
La negación cambia el valor de verdad de una proposición. Si p es verdadera, ¬p es falsa. Si p es falsa, ¬p es verdadera.
const cuentaBloqueada = false;
const puedeIngresar = !cuentaBloqueada;
console.log(puedeIngresar);
En JavaScript, la negación se expresa con el operador !.
La conjunción une dos proposiciones y solo resulta verdadera cuando ambas son verdaderas.
const emailVerificado = true;
const passwordCorrecta = true;
const puedeIniciarSesion = emailVerificado && passwordCorrecta;
console.log(puedeIniciarSesion);
En JavaScript, la conjunción se expresa con &&.
La disyunción une dos proposiciones y resulta verdadera cuando al menos una de ellas es verdadera.
const esAdmin = false;
const esSupervisor = true;
const puedeVerPanel = esAdmin || esSupervisor;
console.log(puedeVerPanel);
En JavaScript, la disyunción se expresa con ||.
La disyunción exclusiva, o XOR, resulta verdadera cuando exactamente una de las proposiciones es verdadera. Si ambas son verdaderas o ambas son falsas, el resultado es falso.
JavaScript no tiene un operador lógico XOR directo para booleanos, pero se puede expresar comparando si los valores son distintos.
const pagoConTarjeta = true;
const pagoConTransferencia = false;
const eligioUnSoloMedioDePago = pagoConTarjeta !== pagoConTransferencia;
console.log(eligioUnSoloMedioDePago);
La implicación se lee como "si p, entonces q". Relaciona una condición con una consecuencia.
En programación, esta idea suele aparecer mediante estructuras condicionales.
const pagoAprobado = true;
if (pagoAprobado) {
console.log("Generar pedido");
}
El bicondicional se lee como "p si y solo si q". Es verdadero cuando ambas proposiciones tienen el mismo valor de verdad.
Un ejemplo informal:
En JavaScript puede representarse comparando dos valores booleanos.
const puedeAcceder = true;
const cuentaHabilitada = true;
const reglaCumplida = puedeAcceder === cuentaHabilitada;
console.log(reglaCumplida);
Los operadores lógicos pueden clasificarse según la cantidad de proposiciones que necesitan.
| Tipo | Descripción | Ejemplo |
|---|---|---|
| Unario | Opera sobre una sola proposición | ¬p |
| Binario | Opera sobre dos proposiciones | p ∧ q |
La negación es un operador unario. La conjunción, disyunción, XOR, implicación y bicondicional son operadores binarios.
Para estudiar expresiones lógicas se suelen usar letras como p, q y r. En programación conviene usar nombres más descriptivos.
| Forma lógica | Nombre en código | Significado |
|---|---|---|
| p | usuarioActivo | El usuario está activo |
| q | tienePermiso | El usuario tiene permiso |
| r | emailVerificado | El email fue verificado |
Supongamos que una aplicación permite editar un documento si el usuario es administrador o si es autor del documento y el documento no está bloqueado.
const esAdmin = false;
const esAutor = true;
const documentoBloqueado = false;
const puedeEditar = esAdmin || (esAutor && !documentoBloqueado);
console.log(puedeEditar);
Esta expresión combina disyunción, conjunción y negación. Los paréntesis aclaran que la condición de autor se evalúa junto con la negación del bloqueo.
Cada operador lógico tiene una regla precisa para determinar el valor de verdad resultante. Esas reglas se representan mediante tablas de verdad.
Por ejemplo, para la conjunción p ∧ q, el resultado solo es verdadero cuando p y q son verdaderas.
| p | q | p ∧ q |
|---|---|---|
| V | V | V |
| V | F | F |
| F | V | F |
| F | F | F |
Los operadores lógicos son herramientas para construir expresiones más complejas a partir de proposiciones simples. Entender su significado evita errores al escribir condiciones y reglas de decisión.
En el próximo tema estudiaremos la negación en detalle.