55. Operadores lógicos en lenguajes de programación

Los operadores lógicos permiten combinar condiciones en código y expresan las mismas ideas de conjunción, disyunción y negación que se estudian en lógica matemática.

55.1 Introducción

Casi todos los lenguajes de programación tienen operadores para representar AND, OR y NOT.

La idea lógica es la misma, aunque la sintaxis cambia según el lenguaje. Por eso conviene separar el concepto de la forma concreta de escribirlo.

55.2 Operadores lógicos principales

Los operadores más comunes son:

  • AND: combina condiciones que deben cumplirse simultáneamente.
  • OR: combina condiciones donde basta con que una se cumpla.
  • NOT: invierte el valor lógico de una condición.

55.3 Tabla comparativa de sintaxis

Lenguaje AND OR NOT
JavaScript && || !
Python and or not
Java && || !
C# && || !
SQL AND OR NOT

55.4 AND en programación

AND se usa cuando varias condiciones deben ser verdaderas a la vez.

if (usuarioActivo && tienePermiso) {
  mostrarPanel();
}

El panel se muestra solo si el usuario está activo y además tiene permiso.

55.5 OR en programación

OR se usa cuando alcanza con que una condición sea verdadera.

if (esAdmin || esEditor) {
  mostrarHerramientas();
}

Las herramientas se muestran si el usuario es administrador o editor.

55.6 NOT en programación

NOT invierte una condición.

if (!cuentaBloqueada) {
  permitirIngreso();
}

La función se ejecuta cuando no es verdad que la cuenta esté bloqueada.

55.7 Ejemplo en Python

Python usa palabras reservadas para los operadores lógicos.

if usuario_activo and tiene_permiso:
    mostrar_panel()

La lógica es equivalente a usuarioActivo && tienePermiso en JavaScript.

55.8 Ejemplo en Java

Java usa símbolos similares a JavaScript para las condiciones booleanas.

if (usuarioActivo && tienePermiso) {
    mostrarPanel();
}

La expresión completa debe evaluar a un valor booleano.

55.9 Ejemplo en SQL

SQL usa operadores lógicos para filtrar registros.

SELECT *
FROM usuarios
WHERE activo = 1 AND rol = 'admin';

La consulta devuelve usuarios que cumplen ambas condiciones.

55.10 Operadores de comparación

Los operadores lógicos suelen combinar resultados de comparaciones.

Operador Significado Ejemplo
> Mayor que edad > 18
>= Mayor o igual que edad >= 18
< Menor que stock < 10
== / === Igualdad, según el lenguaje rol === "admin"
!= / !== Diferencia, según el lenguaje estado !== "cerrado"

55.11 Precedencia de operadores

Los lenguajes aplican reglas de precedencia para decidir qué parte de una expresión se evalúa primero.

const resultado = a || b && c;

En muchos lenguajes, AND tiene mayor precedencia que OR, por lo que la expresión se interpreta como:

const resultado = a || (b && c);

Usar paréntesis evita ambigüedades.

55.12 Evaluación de cortocircuito

Muchos lenguajes no evalúan una condición completa si ya conocen el resultado.

if (usuario !== null && usuario.activo) {
  mostrarPerfil();
}

Si usuario !== null es falso, la segunda parte no se evalúa. Esto evita intentar acceder a una propiedad de un valor nulo.

55.13 Operadores lógicos y valores no booleanos

Algunos lenguajes permiten usar operadores lógicos con valores que no son estrictamente booleanos.

const nombreVisible = nombre || "Sin nombre";

En JavaScript, este patrón usa OR para elegir un valor alternativo. Aunque es práctico, conviene distinguirlo de una proposición lógica estricta.

55.14 Diferencia entre operadores lógicos y bit a bit

En varios lenguajes existen operadores parecidos que no significan lo mismo.

  • && combina valores booleanos con AND lógico.
  • & suele operar bit a bit o tener reglas distintas según el lenguaje.
  • || combina condiciones con OR lógico.
  • | suele operar bit a bit.

Confundirlos puede producir errores difíciles de detectar.

55.15 Errores comunes

  • Usar & en lugar de && cuando se quiere AND lógico.
  • Olvidar paréntesis en expresiones con AND y OR.
  • Confundir asignación con comparación.
  • Negar una condición completa cuando solo se quería negar una parte.
  • No considerar la evaluación de cortocircuito.

55.16 Qué debes recordar de este tema

  • AND, OR y NOT existen en la mayoría de los lenguajes, aunque su sintaxis varía.
  • Los operadores lógicos combinan condiciones que evalúan a verdadero o falso.
  • Los paréntesis hacen más clara la intención de una expresión.
  • La evaluación de cortocircuito puede afectar qué partes del código se ejecutan.
  • No es lo mismo un operador lógico que un operador bit a bit.

55.17 Conclusión

Los operadores lógicos en lenguajes de programación son la forma práctica de aplicar la lógica matemática al código. Comprender su significado, precedencia y evaluación evita errores en condiciones y validaciones.

En el próximo tema estudiaremos la evaluación de expresiones condicionales.