7.3 Estructura de Selección Encadenada o Anidada (Condicional Encadenada o Anidada)

 La selección encadenada (también llamada anidada) es una extensión natural de la selección doble. Se utiliza cuando necesitamos evaluar más de dos alternativas posibles.

En términos simples:

“Si ocurre A, hago esto; si no ocurre A pero ocurre B, hago esto otro; si no ocurre ni A ni B pero ocurre C, hago aquello… y así sucesivamente.”

Este tipo de estructura se implementa escribiendo varios sino seguidos de nuevos si, formando una cadena lógica de decisiones.

¿Para qué se usa?

La selección encadenada es útil cuando:

  • Hay múltiples condiciones excluyentes.

  • Solo una de las condiciones puede cumplirse.

  • Cada alternativa requiere un comportamiento distinto.

Ejemplos típicos:
clasificar notas, verificar rangos, elegir opciones de menús, validar estados, etc.

Sintaxis general

si ( condición1 ) { /* bloque si condición1 es verdadera */ } sino si ( condición2 ) { /* bloque si condición1 es falsa y condición2 es verdadera */ } sino si ( condición3 ) { /* bloque si condición1 y condición2 son falsas, pero condición3 es verdadera */ } sino { /* bloque final si todas las condiciones anteriores son falsas */ }

Observación:
En SL no existe una palabra especial como sino_si; simplemente se encadena un sino seguido de un nuevo si.

Funcionamiento paso a paso

  1. Se evalúa condición1.

  2. Si es verdadera → se ejecuta su bloque y termina la estructura.

  3. Si es falsa → se pasa a condición2.

  4. Si condición2 es verdadera → se ejecuta su bloque.

  5. El proceso continúa así con todas las condiciones encadenadas.

  6. Si ninguna se cumple → se ejecuta el bloque final del sino.

En ningún caso se ejecutan más de uno de los bloques.


Ejemplo comentado

Clasifiquemos un número ingresado según su valor.

var n : numerico inicio imprimir("Ingrese un número: ") leer(n) si ( n > 0 ) { imprimir("El número es positivo.") } sino si ( n < 0 ) { imprimir("El número es negativo.") } sino { imprimir("El número es cero.") } fin

Explicación:

  • Si n > 0, el programa imprime “positivo” y ahí termina la cadena.

  • Si no es positivo, se evalúa si es negativo.

  • Si tampoco es negativo, entonces necesariamente es cero, y se ejecuta el bloque del sino.

Otro ejemplo: clasificación de notas

Supongamos que queremos clasificar un puntaje del 1 al 100.

var nota : numerico inicio imprimir("Ingrese la nota: ") leer(nota) si ( nota >= 90 ) { imprimir("Calificación: Excelente") } sino si ( nota >= 70 ) { imprimir("Calificación: Bueno") } sino si ( nota >= 60 ) { imprimir("Calificación: Regular") } sino { imprimir("Calificación: Insuficiente") } fin

Detalles importantes:

  • Las condiciones están ordenadas desde la más restrictiva a la más general.

  • Una vez que se cumple una condición, las demás ya no se evalúan.

  • Esto evita contradicciones y simplifica la lógica.

Buenas prácticas

  • Ordena las condiciones de mayor a menor rango o según prioridad.

  • Mantén las condiciones claras y no redundantes.

  • Evita encadenar demasiados casos: si la lógica se vuelve muy larga, podría ser mejor usar funciones o estructuras más avanzadas según tu proyecto.

  • Siempre coloca un sino final para manejar cualquier caso no contemplado.

Errores comunes

  • Escribir código entre un sino y un si. Deben ir pegados.

  • Olvidar llaves { } en cualquiera de los bloques.

  • Hacer condiciones redundantes, por ejemplo:
    sino si (nota >= 70 y nota < 90) → ya está implícito si el caso anterior era >= 90.

  • Mezclar tipos no compatibles en la condición.

Ejercicio práctico

  1. Escribe un programa que lea la edad de una persona y muestre:

    • “Niño” si es menor de 12

    • “Adolescente” si está entre 12 y 17

    • “Adulto” si está entre 18 y 60

    • “Adulto mayor” si es mayor de 60

  2. Modifica el programa para que, si la edad ingresada es negativa, imprima un mensaje de error con un sino final.

No hay comentarios:

Publicar un comentario