Skip to content

6. Condicional anidada (4.2.4)

Una condicional anidada es una condicional escrita dentro de una rama de otra.

Si <condición exterior> Entonces
Si <condición interior> Entonces
...
Sino
...
FinSi
Sino
...
FinSi

La condición interior solo se evalúa cuando la exterior llevó a esa rama.

Se usa cuando una decisión depende de otra, o cuando cada falla necesita una respuesta distinta.

El cajero solo entrega billetes de $100 y no permite retirar más que el saldo.

3:
Mostrar "Monto a retirar: "
Entrada: monto
Si monto <= saldo Entonces
Si monto % 100 = 0 Entonces
saldo = saldo - monto
Mostrar "Retire su efectivo. Nuevo saldo: $", saldo
Sino
Mostrar "Solo se entregan billetes de $100"
FinSi
Sino
Mostrar "Saldo insuficiente"
FinSi
monto (saldo 2500)ExteriorInteriorPantalla
700VerdaderaVerdaderaRetire su efectivo. Nuevo saldo: $1800
750VerdaderaFalsaSolo se entregan billetes de $100
3000FalsaNo se evalúaSaldo insuficiente
2500VerdaderaVerdaderaRetire su efectivo. Nuevo saldo: $0
Con Y
Si monto <= saldo Y monto % 100 = 0 Entonces
saldo = saldo - monto
Sino
Mostrar "No se puede retirar"
FinSi

Más corta, pero el usuario no sabe por qué se rechazó.

Anidada

Cada falla tiene su propio mensaje. Además, el orden expresa una prioridad: primero se revisa el saldo.

Criterio: si todas las fallas llevan a la misma acción, usa Y. Si necesitan acciones distintas, anida.

Limitación: más de tres niveles de anidamiento vuelven el algoritmo difícil de leer y de probar. Es señal de que conviene reorganizarlo.

PseudocódigoPSeInt
Si … Entonces … Sino … FinSiIgual (Sino y SiNo son equivalentes)
Segun opcion Hacer … De Otro Modo: … FinSegunIgual
Cadena Sino SiUn Si dentro de cada SiNo, con un FinSi por cada Si
Si peso <= 0 Entonces
Escribir "Peso no válido"
SiNo
Si peso <= 1 Entonces
tarifa = TARIFA_HASTA_1KG
SiNo
...
FinSi
FinSi

La traducción muestra lo que realmente es una cadena Sino Si: condicionales anidadas en la rama falsa.

Continúa con 7. Resolución de problemas con condicionales.