Las condiciones de programación son expresiones lógicas que permiten decidir qué instrucciones ejecutar según el estado de los datos.
La lógica matemática aparece de forma directa en la programación cada vez que escribimos una condición.
Un if, una validación, un filtro o una regla de acceso dependen de expresiones que se evalúan como verdaderas o falsas.
Una condición puede verse como una proposición: una afirmación que puede ser verdadera o falsa.
edad >= 18
La expresión anterior afirma que una persona tiene al menos 18 años. Según el valor de edad, la proposición será verdadera o falsa.
La estructura if ejecuta un bloque de código solo si la condición es verdadera.
if (edad >= 18) {
console.log("Puede ingresar");
}
Desde el punto de vista lógico, el programa pregunta si la proposición edad >= 18 es verdadera.
Muchas decisiones requieren combinar varias condiciones simples.
if (edad >= 18 && tieneDocumento) {
console.log("Acceso permitido");
}
Aquí se usa una conjunción: ambas condiciones deben ser verdaderas para ejecutar el bloque.
Cuando basta con que una de varias condiciones se cumpla, usamos una disyunción.
if (esAdministrador || esSupervisor) {
console.log("Puede aprobar la operación");
}
La acción se permite si al menos una de las dos proposiciones es verdadera.
La negación permite ejecutar una acción cuando una condición no se cumple.
if (!usuarioBloqueado) {
console.log("Puede iniciar sesión");
}
La condición equivale a decir: "si no es verdad que el usuario está bloqueado".
Las validaciones son un uso cotidiano de la lógica. Permiten comprobar que los datos cumplen ciertas reglas antes de continuar.
if (email !== "" && password.length >= 8) {
registrarUsuario();
}
La función se llama solo si el correo no está vacío y la contraseña tiene longitud suficiente.
Un sistema puede decidir permisos mediante expresiones lógicas.
const puedeEditar = esAutor || esAdministrador;
Esta regla expresa que un usuario puede editar si escribió el contenido o si tiene rol de administrador.
Una forma clara de usar condiciones es detectar primero los casos que impiden continuar.
function procesarPago(monto, tarjetaValida) {
if (monto <= 0) {
return "Monto inválido";
}
if (!tarjetaValida) {
return "Tarjeta inválida";
}
return "Pago procesado";
}
Estas condiciones separan los casos inválidos antes de ejecutar la lógica principal.
Las leyes lógicas también ayudan a escribir código más claro.
if (!(edad < 18)) {
permitirAcceso();
}
La condición puede expresarse de forma equivalente así:
if (edad >= 18) {
permitirAcceso();
}
Ambas expresiones tienen el mismo resultado lógico, pero la segunda suele ser más directa.
Las leyes de De Morgan permiten transformar negaciones de condiciones compuestas.
!(a && b) equivale a !a || !b
!(a || b) equivale a !a && !b
Estas equivalencias son útiles para simplificar validaciones y evitar condiciones difíciles de leer.
Las condiciones anidadas pueden expresar reglas complejas, pero si se acumulan demasiado, el código se vuelve difícil de seguir.
if (usuarioActivo) {
if (tienePermiso) {
if (!recursoBloqueado) {
abrirRecurso();
}
}
}
La misma regla puede escribirse como una condición compuesta.
if (usuarioActivo && tienePermiso && !recursoBloqueado) {
abrirRecurso();
}
Cuando una condición es compleja, conviene guardarla en una variable con nombre significativo.
const puedeAbrirRecurso =
usuarioActivo && tienePermiso && !recursoBloqueado;
if (puedeAbrirRecurso) {
abrirRecurso();
}
El nombre de la variable comunica la intención lógica de la condición.
Una condición importante debe probarse con distintos casos, especialmente cuando combina varios operadores.
Si una regla depende de tres variables booleanas, existen ocho combinaciones posibles de entrada. Pensar en forma de tabla de verdad ayuda a no omitir casos.
La lógica aplicada a condiciones en programación permite tomar decisiones precisas, validar datos y controlar el flujo de ejecución. Cuanto mejor se entienden las expresiones lógicas, más claro y confiable puede ser el código.
En el próximo tema estudiaremos los operadores lógicos en lenguajes de programación.