En la entrada anterior, aprendimos a usar las estructuras condicionales para que nuestros programas pudieran tomar decisiones y seguir un camino u otro. Ahora, vamos a llevar esa lógica un paso más allá para manejar condiciones anidadas y condiciones compuestas, con escenarios más complejos y realistas. ¿Qué pasa si necesitamos comprobar varias condiciones a la vez?
Veamos las técnicas que podemos aplicar.
1. El anidamiento: una condición dentro de otra 🪆
Anidar significa, simplemente, colocar una estructura de control dentro de otra. Un condicional anidado es una estructura Si... Entonces que se encuentra dentro del bloque de otra estructura Si... Entonces.
Esto crea una especie de «filtro» secuencial. El programa primero evalúa la condición externa y, solo si esta es verdadera, pasa a evaluar la condición interna.
Ejemplo: Para entrar a una zona VIP de un evento, una persona debe ser mayor de edad y, además, tener una pulsera especial.
Fragmento de código
Proceso AccesoVIPAnidado
Leer edad
Leer tiene_pulsera // Esto sería un valor booleano: verdadero o falso
Si (edad >= 18) Entonces
// Si llega aquí, ya sabemos que es mayor de edad.
// Ahora comprobamos la segunda condición.
Si (tiene_pulsera == verdadero) Entonces
Escribir "Acceso VIP concedido. ¡Disfrute!"
SiNo
Escribir "Acceso denegado. No tiene la pulsera VIP."
FinSi
SiNo
Escribir "Acceso denegado. Debe ser mayor de edad."
FinSi
FinProceso
El anidamiento es útil cuando las acciones a realizar dependen del punto en que falla la comprobación.
2. Condiciones compuestas: múltiples revisiones en una línea 🔗
Una condición compuesta nos permite evaluar múltiples expresiones lógicas en una sola cabecera Si utilizando los operadores lógicos que ya conocemos (Y, O).
- Operador
Y(AND): Exige que todas las condiciones sean verdaderas. - Operador
O(OR): Le basta con que al menos una de las condiciones sea verdadera.
Ejemplo: Resolvamos el mismo problema del acceso VIP, pero con una condición compuesta.
Fragmento de código
Proceso AccesoVIPCompuesto
Leer edad
Leer tiene_pulsera
Si (edad >= 18 Y tiene_pulsera == verdadero) Entonces
Escribir "Acceso VIP concedido. ¡Disfrute!"
SiNo
Escribir "Acceso denegado. No cumple todos los requisitos."
FinSi
FinProceso
Este código es mucho más compacto y, en muchos casos, más fácil de leer.
De anidado a compuesto: guía de simplificación ✅
Como hemos visto, a menudo podemos lograr el mismo resultado usando anidamiento o condiciones compuestas. Una habilidad clave en programación es saber cuándo podemos simplificar una estructura anidada para hacerla más legible y compacta. Veamos los dos patrones principales.
1. Simplificación con el operador Y (AND)
Este es el caso más directo. Cuando tienes una estructura Si dentro de otra Si, significa que ambas condiciones deben cumplirse para que se ejecute el código interno. Esto es, por definición, una operación Y.
Patrón anidado:
Fragmento de código
// Para acceder, debes ser mayor de edad Y tener una entrada.
Si (edad >= 18) Entonces
Si (tiene_entrada == verdadero) Entonces
Escribir "Acceso concedido."
FinSi
FinSi
Equivalencia simplificada con Y:
Fragmento de código
Si (edad >= 18 Y tiene_entrada == verdadero) Entonces
Escribir "Acceso concedido."
FinSi
Ambos bloques de código son funcionalmente idénticos, pero el segundo es más directo y fácil de leer.
2. Simplificación con el operador O (OR)
Este patrón es un poco diferente. Se da cuando una acción se ejecuta si se cumple una condición, o si no, se comprueba una segunda condición que también lleva a la misma acción.
Patrón anidado:
Fragmento de código
// Tienes descuento si eres estudiante, o si no, si eres jubilado.
Si (es_estudiante == verdadero) Entonces
Escribir "Descuento aplicado."
SiNo
Si (es_jubilado == verdadero) Entonces
Escribir "Descuento aplicado."
FinSi
FinSi
Como puedes ver, el bloque Escribir "Descuento aplicado." se repite. Esto es una señal de que podemos simplificar. La lógica es: «aplica el descuento si la persona es estudiante O si es jubilada».
Equivalencia simplificada con O:
Fragmento de código
Si (es_estudiante == verdadero O es_jubilado == verdadero) Entonces
Escribir "Descuento aplicado."
FinSi
De nuevo, el resultado es el mismo, pero hemos eliminado la anidación y el código duplicado, dejando una única condición mucho más clara y mantenible.
Conclusión
Dominar tanto el anidamiento como las condiciones compuestas te dará una enorme flexibilidad para modelar cualquier tipo de lógica.
- Usa el anidamiento para crear filtros secuenciales donde cada paso depende del anterior y las acciones a realizar son diferentes en cada nivel.
- Usa las condiciones compuestas para validar múltiples reglas de una sola vez, manteniendo tu código conciso.
- Y recuerda siempre la regla de oro: si puedes simplificar un anidamiento a una condición compuesta sin perder lógica, ¡hazlo! Tu «yo» del futuro te lo agradecerá.


Deja una respuesta