Evaluar una expresión condicional consiste en calcular paso a paso si una condición completa resulta verdadera o falsa.
En programación, una expresión condicional decide si se ejecuta una instrucción, si se permite una acción o si se toma un camino dentro del algoritmo.
Para comprender su resultado debemos evaluar comparaciones, operadores lógicos, paréntesis y reglas de precedencia.
Evaluar una condición significa reemplazar sus partes por valores concretos y calcular el resultado final.
edad >= 18 && tieneDocumento
Si edad vale 20 y tieneDocumento vale true, la expresión completa resulta verdadera.
Las comparaciones producen valores booleanos que luego pueden combinarse con operadores lógicos.
edad >= 18 && saldo > 0
Si edad = 21 y saldo = 50, primero obtenemos:
true && true
Por lo tanto, el resultado final es true.
Una expresión con AND es verdadera solo si todas sus partes son verdaderas.
| A | B | A && B |
|---|---|---|
| false | false | false |
| false | true | false |
| true | false | false |
| true | true | true |
Una expresión con OR es verdadera si al menos una de sus partes es verdadera.
| A | B | A || B |
|---|---|---|
| false | false | false |
| false | true | true |
| true | false | true |
| true | true | true |
NOT invierte el valor lógico de una condición.
!usuarioBloqueado
Si usuarioBloqueado es false, entonces !usuarioBloqueado es true.
Los paréntesis indican qué parte de la expresión debe evaluarse como grupo.
(esAdmin || esEditor) && usuarioActivo
Primero se evalúa si el usuario tiene alguno de los roles permitidos. Luego se verifica si está activo.
Si no hay paréntesis, el lenguaje aplica reglas de precedencia. En muchos lenguajes, NOT se evalúa antes que AND, y AND antes que OR.
!a || b && c
Esta expresión suele interpretarse como:
(!a) || (b && c)
Aun así, en condiciones importantes conviene usar paréntesis para comunicar la intención.
Supongamos los siguientes valores:
!a || b && c
Evaluamos:
!false || true && false
true || (true && false)
true || false
true
En muchos lenguajes, AND deja de evaluar cuando encuentra una parte falsa, porque el resultado completo ya no puede ser verdadero.
if (usuario !== null && usuario.activo) {
mostrarPerfil();
}
Si usuario !== null es false, no se evalúa usuario.activo.
OR deja de evaluar cuando encuentra una parte verdadera, porque el resultado completo ya será verdadero.
if (esAdmin || tienePermisoEspecial) {
permitirAcceso();
}
Si esAdmin es true, no hace falta evaluar la segunda condición.
Cuando una condición llama funciones, el cortocircuito puede determinar qué funciones se ejecutan.
if (usuarioValido() && permisoDisponible()) {
ejecutarAccion();
}
Si usuarioValido() devuelve false, permisoDisponible() no se ejecuta en lenguajes con cortocircuito.
Dos condiciones pueden evaluarse igual para todos los casos aunque estén escritas de forma distinta.
!(edad < 18)
es equivalente a:
edad >= 18
La segunda forma suele ser más legible.
Cuando una condición tiene varias variables, una tabla ayuda a revisar todas las combinaciones.
| A | B | C | (A || B) && C |
|---|---|---|---|
| false | false | false | false |
| false | false | true | false |
| false | true | false | false |
| false | true | true | true |
| true | false | false | false |
| true | false | true | true |
| true | true | false | false |
| true | true | true | true |
La evaluación de expresiones condicionales permite entender exactamente por qué un programa toma una decisión. Separar comparaciones, operadores y paréntesis reduce errores y hace que el razonamiento sea más claro.
En el próximo tema estudiaremos la toma de decisiones mediante lógica.