2.2 Estructura condicional "SI...SINO"
Esta estructura es una variante de la anterior, a la que se le ha añadido un bloque alternativo de instrucciones a ejecutar en caso de que la condición no se cumpla. Por tanto, la estructura permite ejecutar un bloque de instrucciones (una instrucción o más) siempre y cuando se cumpla una condición, o bien un bloque de instrucciones alternativo en caso de no cumplirse dicha condición.
Sintaxis:
SI condición ENTONCES Bloque de instrucciones SINO Bloque de instrucciones alternativo FINSI
|
|
Fuente propia |
Si la condición se cumple, se ejecutarán las instrucciones del "Bloque de instrucciones", en caso contrario se ejecutarán las instrucciones del bloque alternativo. Tanto si se ejecuta un bloque de instrucciones u otro, el flujo de ejecución continuará por la instrucción que sigue al FINSI.
Ejemplo:
Siguiendo con el ejemplo anterior, podemos mostrar un mensaje informando que el número insertado no cumple la condición. En este caso el resultado final es o bien la tabla de multiplicar señalada o el mensaje informando de que el número no cumple las condiciones pedidas. Es decir el programa ahora quedaría así:
![]() |
|
Fuente propia | Fuente propia |

Reflexión
![]() |
Fuente propia |
Si te fijas en la sintaxis de la estructura condicional, tanto "Bloque de instrucciones" como "Bloque de instrucciones alternativo", podrán ser conjuntos de una o más instrucciones de cualquier tipo. Es decir que entre ellas podría haber más estructuras de control de flujo, tanto condicionales como repetitivas. Por tanto, el programador tendrá la posibilidad de enlazar o anidar más de una bifurcación, pudiendo llegar a construir un nivel de anidamiento lo suficientemente grande como para perderse en el seguimiento de la ejecución del programa.
En la figura de la derecha podrás observar un pequeño ejemplo de varios anidamientos de instrucciones SI. Cuando nuestro código fuente está repleto de ellas se hace poco entendible.
Como ya se ha mencionado con anterioridad, una ayuda importante para aclarar la comprensión del programa es tabular los bloques de instrucciones internas de las estructuras, incluso dibujar líneas verticales que vayan desde el principio de cada estructura condicional hasta el final de la misma. Pero aun así, nuestro programa será difícil de seguir.
¿Habrá solución para estos casos?