Las proposiciones simples expresan una sola afirmación. Las proposiciones compuestas combinan varias afirmaciones mediante conectores lógicos como negación, conjunción, disyunción e implicación.
En el tema anterior vimos que una proposición es un enunciado que puede ser verdadero o falso. Ahora distinguiremos entre proposiciones simples y proposiciones compuestas.
Esta diferencia es importante porque las condiciones reales de un programa casi nunca dependen de una sola afirmación. Normalmente combinan varias reglas: edad mínima, permisos, estado de cuenta, stock, fechas, roles o validaciones.
Una proposición simple es una afirmación que no está formada por otras proposiciones unidas mediante conectores lógicos.
En un programa, una proposición simple suele aparecer como una comparación o como una variable booleana.
const edad = 21;
const esMayorDeEdad = edad >= 18;
console.log(esMayorDeEdad);
La expresión edad >= 18 es una proposición simple: para el valor actual de edad, será verdadera o falsa.
Una proposición compuesta se forma combinando una o más proposiciones mediante conectores lógicos.
Por ejemplo:
Esta proposición está formada por dos proposiciones simples:
El conector y indica que ambas condiciones deben cumplirse.
Los conectores lógicos permiten construir proposiciones compuestas a partir de proposiciones más pequeñas.
| Conector | Nombre lógico | Símbolo usual | JavaScript |
|---|---|---|---|
| No | Negación | ¬p | !p |
| Y | Conjunción | p ∧ q | p && q |
| O | Disyunción | p ∨ q | p || q |
| Si... entonces | Implicación | p → q | Se expresa con una condición |
La conjunción combina dos proposiciones y exige que ambas sean verdaderas.
const usuarioActivo = true;
const tienePermiso = true;
const puedeEditar = usuarioActivo && tienePermiso;
console.log(puedeEditar);
La proposición compuesta usuarioActivo && tienePermiso solo será verdadera si las dos proposiciones simples son verdaderas.
La disyunción combina dos proposiciones y alcanza con que al menos una sea verdadera.
const esAdministrador = false;
const esEditor = true;
const puedePublicar = esAdministrador || esEditor;
console.log(puedePublicar);
La proposición compuesta será verdadera porque esEditor es verdadero, aunque esAdministrador sea falso.
La negación cambia el valor de verdad de una proposición. Si una proposición es verdadera, su negación es falsa; si es falsa, su negación es verdadera.
const cuentaBloqueada = false;
const puedeIngresar = !cuentaBloqueada;
console.log(puedeIngresar);
La expresión !cuentaBloqueada representa la proposición "la cuenta no está bloqueada".
Para analizar una proposición compuesta conviene separar sus partes.
| Proposición compuesta | Partes simples | Conector |
|---|---|---|
| El usuario está activo y tiene email verificado | Está activo / tiene email verificado | Y |
| El producto tiene stock o permite reserva | Tiene stock / permite reserva | O |
| La cuenta no está bloqueada | La cuenta está bloqueada | No |
| Si el pago fue aprobado, se genera el pedido | Pago aprobado / se genera el pedido | Si... entonces |
En JavaScript, las proposiciones compuestas se usan directamente en estructuras condicionales.
const edad = 19;
const aceptoTerminos = true;
const emailVerificado = true;
if (edad >= 18 && aceptoTerminos && emailVerificado) {
console.log("Registro permitido");
} else {
console.log("Registro rechazado");
}
La condición está formada por tres proposiciones simples unidas por conjunciones.
Cuando una proposición compuesta mezcla varios conectores, los paréntesis ayudan a evitar ambigüedades y hacen que la intención sea más clara.
const esAdmin = false;
const esEditor = true;
const articuloPublicado = false;
const puedeModificar = (esAdmin || esEditor) && !articuloPublicado;
console.log(puedeModificar);
Primero se evalúa si el usuario tiene un rol permitido. Luego se exige que el artículo no esté publicado.
Una regla de negocio suele convertirse en una proposición compuesta dentro del programa.
| Regla | Proposición compuesta |
|---|---|
| Puede comprar si hay stock y el pago fue aprobado | hayStock && pagoAprobado |
| Puede recuperar la cuenta si tiene email o teléfono verificado | emailVerificado || telefonoVerificado |
| Puede entrar si la cuenta no está bloqueada | !cuentaBloqueada |
| Puede ver el panel si es admin o supervisor, y está activo | (esAdmin || esSupervisor) && activo |
Al combinar proposiciones es fácil escribir una expresión que no coincide con la regla buscada.
Las proposiciones simples y compuestas permiten construir razonamientos más ricos. En programación, esta distinción se refleja en condiciones formadas por comparaciones y operadores lógicos.
En el próximo tema estudiaremos con más detalle el valor de verdad de una proposición.