Las estructuras de control en programación son herramientas fundamentales que permiten a los desarrolladores controlar el flujo de ejecución de un programa. Son esenciales para manejar la complejidad y para que un programa pueda tomar decisiones, ejecutando diferentes bloques de código según se cumplan ciertas condiciones. Como dijo Brian Kernigan, "Controlar la complejidad es la esencia de la programación".
¿Qué son las Estructuras de Control en Programación?
Hasta ahora, es posible que solo hayas trabajado asignando valores y realizando operaciones. Pero, ¿qué sucede si necesitas que tu programa tome una decisión para mostrar un resultado específico? Imagina que calculas el promedio de una materia y quieres mostrar “Materia aprobada” o “Materia desaprobada” según ese promedio. Las estructuras de control nos permiten resolver este tipo de problemáticas.
Estas estructuras son la clave para controlar el flujo de ejecución del programa. Esto significa que tu código puede seguir distintos caminos, dependiendo de si ciertas condiciones se cumplen. Estas condiciones deben ser expresiones lógicas, es decir, expresiones que siempre arrojan un resultado Verdadero (true) o Falso (false).
Por ejemplo, si el promedio es 7, la condición “¿El valor de promedio es mayor a 6?” resultaría Verdadera, y el programa podría mostrar “Materia aprobada”. En caso contrario, si el promedio es 4, la condición sería Falsa, y el programa mostraría “Materia desaprobada”.
Estructura de Control "Si...Entonces" (Condicional Simple)
La estructura Si...Entonces es la forma más básica de tomar decisiones en programación. Posee dos alternativas principales.
El "Si...Entonces" Básico
Esta forma simple de la estructura ejecuta una o varias acciones solo si una condición específica es Verdadera. Si la condición es Falsa, las acciones dentro de ese bloque simplemente se ignoran.
Pseudocódigo:
Si (condición) Entonces
acción_1;
...
acción_N;
Fin Si;
Funcionamiento:
Cuando el programa llega a un Si...Entonces, evalúa la condición entre paréntesis. Si el resultado es Verdadero (true), se ejecutan las acciones dentro del bloque. Si el resultado es Falso (false), las acciones del bloque no se ejecutan y el programa continúa después del Fin Si.
Ejemplo: Determinar el signo de un número
Proceso ValorIngresado
Definir numero como Entero;
Mostrar “Ingrese un número: “;
Leer numero;
Si ( numero > 0 ) Entonces
Mostrar “Número mayor a 0“;
Fin Si
Si ( numero < 0 ) Entonces
Mostrar “Número menor a 0“;
Fin Si
Si ( numero == 0 ) Entonces
Mostrar “Número igual a 0“;
Fin Si
FinProceso
En este ejemplo, si ingresas 4, solo se mostrará “Número mayor a 0”. Los otros Si no ejecutarán sus bloques porque sus condiciones (4 < 0 y 4 == 0) son Falsas.
El "Si...Entonces...Sino" (Condicional Doble)
Esta alternativa nos permite ejecutar un conjunto de acciones cuando la condición es Verdadera y otro conjunto de acciones cuando la condición es Falsa. Es ideal para situaciones donde siempre hay dos posibles caminos a seguir.
Pseudocódigo:
Si (condición) Entonces
acción_1;
...
acción_N;
Sino
acción_x;
...
acción_z;
Fin Si;
Funcionamiento:
Al encontrarse con un Si...Entonces...Sino, el programa evalúa la condición. Si el resultado es Verdadero (true), se ejecutan las acciones del bloque Entonces. Si el resultado es Falso (false), se ejecutan las acciones del bloque Sino.
Ejemplo: Aprobar o desaprobar una materia
Proceso Materia
Definir nota como Real;
Mostrar “Ingrese la nota del alumno: “;
Leer nota;
Si ( nota >= 6 ) Entonces
Mostrar “Materia aprobada “;
Sino
Mostrar “Materia desaprobada “;
Fin Si
FinProceso
Manejo de Condiciones Múltiples
Las estructuras Si pueden evaluar varias condiciones simultáneamente utilizando operadores lógicos como Y (AND) o O (OR). Esto permite crear lógica más compleja, siempre que la expresión final dé un valor lógico (Verdadero o Falso).
Ejemplo: Aprobar una materia con dos exámenes y promedio
Proceso Materia
Definir nota1 como Real;
Definir nota2 como Real;
Definir promedio como Real;
Mostrar “Ingrese la nota del 1er examen del alumno: “;
Leer nota1;
Mostrar “Ingrese la nota del 2do examen del alumno: “;
Leer nota2;
promedio = (nota1 + nota2) / 2;
Si ( nota1 >= 6 Y nota2 >= 6 Y promedio >= 6 ) Entonces
Mostrar “Materia aprobada “;
Sino
Mostrar “Materia desaprobada “;
Fin Si
FinProceso
En este caso, para aprobar, todas las condiciones deben ser Verdaderas.
Estructura de Control "Según" (Switch/Case)
La estructura Según nos permite seleccionar una entre múltiples alternativas a ejecutar, lo que la hace muy útil cuando la decisión se basa en el valor de una variable numérica. Es una alternativa elegante a una serie de Si...Entonces...Sino Si anidados para casos específicos.
Pseudocódigo:
Segun variable_numérica Hacer
opción_1: acción_w;
opción_2: acción_k;
...
opción_N: acción_m;
De Otro Modo : acción_p;
Fin Segun;
Funcionamiento:
Al encontrarse con un Segun, el programa evalúa la variable_numérica. Luego, compara su valor con cada una de las etiquetas (opción_1, opción_2, etc.). Si encuentra una coincidencia, ejecuta las acciones de esa etiqueta. Si el valor de la variable no coincide con ninguna etiqueta, se ejecutan las acciones agrupadas bajo De Otro Modo.
Ejemplo: Mostrar un número en letras
Proceso Materia
Definir numero como Entero;
Mostrar “Ingrese un número: “;
Leer numero;
Segun numero Hacer
1: Mostrar “uno”;
2: Mostrar “dos”;
3: Mostrar “tres”;
De Otro Modo: Mostrar “es otro número”;
Fin Segun
FinProceso
Si el usuario ingresa 1, se muestra “uno”. Si ingresa 5, se muestra “es otro número” porque 5 no es una opción definida.
Anidando Estructuras de Control
Una de las características más potentes de las estructuras de control es la capacidad de anidarlas. Esto significa que puedes colocar una estructura de control dentro de otra, ya sea un Si dentro de otro Si, un Si dentro de una opción de un Segun, y así sucesivamente. Esto permite crear lógicas muy complejas y detalladas, donde las decisiones se toman en múltiples niveles.
La clave es recordar que una estructura anidada se evaluará solo si se cumple la condición o se selecciona la opción de la estructura externa.
Ejemplo: Aprobar materia con condiciones anidadas
Retomando el problema de aprobación, podríamos anidar los Si para dar mensajes más específicos:
Proceso Materia
Definir nota1 como Real;
Definir nota2 como Real;
Definir promedio como Real;
Mostrar “Ingrese la nota del 1er examen del alumno: “;
Leer nota1;
Mostrar “Ingrese la nota del 2do examen del alumno: “;
Leer nota2;
promedio = (nota1 + nota2) / 2;
Si ( nota1 >= 6 Y nota2 >= 6) Entonces
Si (promedio >= 6) Entonces
Mostrar “Materia aprobada “;
Sino
Mostrar “Materia desaprobada: No alcanza el promedio”;
Fin Si
Sino
Mostrar “Materia desaprobada: No aprobó ambos exámenes “;
Fin Si
FinProceso
En este ejemplo, el segundo Si (que verifica el promedio) solo se evaluará si el primer Si (que verifica la aprobación de ambos exámenes individuales) es Verdadero. Si la primera condición es Falsa, el programa directamente saltará al Sino externo, indicando que no se aprobaron ambos exámenes.
La anidación de estructuras es una técnica fundamental para crear programas que responden de manera inteligente a diversas situaciones, ofreciendo un control de flujo preciso y eficiente. Estas estructuras de control son la base de la lógica de cualquier programa informático, permitiendo que las aplicaciones sean dinámicas y tomen decisiones basadas en los datos de entrada o el estado del sistema.
Preguntas Frecuentes sobre Estructuras de Control
¿Cuál es la diferencia entre "Si...Entonces" y "Si...Entonces...Sino"?
La diferencia principal es que Si...Entonces ejecuta un bloque de código solo si la condición es Verdadera, sin hacer nada si es Falsa. En cambio, Si...Entonces...Sino proporciona dos bloques de código: uno se ejecuta si la condición es Verdadera y otro si es Falsa, asegurando que siempre se realice alguna acción.
¿Cuándo debo usar la estructura "Según" en lugar de varios "Si...Entonces...Sino Si"?
La estructura Según es ideal cuando tienes múltiples opciones a elegir basadas en el valor exacto de una única variable (generalmente numérica o de caracteres). Facilita la lectura y el mantenimiento del código comparado con una larga cadena de Si...Entonces...Sino Si para el mismo propósito, haciendo el código más limpio y legible.
¿Puedo anidar cualquier tipo de estructura de control dentro de otra?
Sí, puedes anidar cualquier estructura de control dentro de otra. Esto incluye Si dentro de Si, Si dentro de Según, Según dentro de Si, etc. La anidación permite construir lógicas muy sofisticadas y detalladas, donde las decisiones se toman en cascada o de forma jerárquica.
¿Qué son las expresiones lógicas en el contexto de las estructuras de control?
Las expresiones lógicas son cualquier enunciado o comparación que, al ser evaluado, produce un resultado de Verdadero (true) o Falso (false). Por ejemplo, numero > 0, nota >= 6 Y nota2 >= 6, o promedio == 10 son expresiones lógicas. Son el corazón de las estructuras de control condicionales porque determinan qué camino debe tomar el flujo del programa.