En el mundo del desarrollo de software, las Estructuras Cíclicas o Repetitivas son el pilar de la eficiencia. Aprenderemos a dominar los bucles, ciclos y loops, que se ejecutan mediante las acciones fundamentales PARA – MIENTRAS (FOR – WHILE).
# ¿Qué son las Estructuras Cíclicas?
En este artículo veremos las estructuras cíclicas, que mediante condiciones permiten repetir la ejecución de un conjunto de acciones de forma automatizada.
Esto es algo que no se ve tan claro y parece difícil pero se usa ¡muchísimo en la ingeniería de software! Cuando veamos ejemplos lo vas a entender y te vas a dar cuenta de su importancia para escribir código limpio y eficiente.
# Lógica y Diagramas de Estructuras Cíclicas
La sintaxis lógica se escribe de la siguiente manera para garantizar un control de flujo correcto:
Tenemos un bloque con una instrucción iterativa (loop, bucle, ciclo) que tiene una condición lógica que determina la ejecución:
Si se cumple la condición se ingresa al bloque y se ejecutan todas las instrucciones que están en el bloque. Cuando se ejecuta la última instrucción del bloque, el procesador vuelve a evaluar la condición, y si se cumple, se vuelve a repetir el ciclo.
Se sale del bucle cuando no se cumple la condición, en ese caso se sigue con la línea que está por debajo del bloque, liberando el flujo del programa.
# ¿Y para qué sirve repetir instrucciones?
Vamos a suponer que tenemos un programa que nos pide imprimir los números del 1 al 3. En el desarrollo tradicional, podríamos escribir cada línea manualmente:
Con 3 lineas de impresión lo resolvemos, el texto “número†concatenado (sumado como palabra) al número (1,2,3).
¿Si piden agregar 4 y 5? Agregamos la impresión de número 4 y número 5 manualmente.
But if they ask for 100 or 10,000, we won't write it 100 times! Para situaciones repetitivas y procesamiento de datos masivos tenemos los ciclos. Vamos a ver dos tipos de estructuras cíclicas de alto rendimiento: PARA (FOR) y WHILE (MIENTRAS).
# El Ciclo PARA (FOR) en Detalle
El PARA (FOR) itera sobre una secuencia definida, ideal para cuando sabemos de antemano cuántas repeticiones tenemos que hacer.
Este ciclo va iterar desde el valorInicial al valorFinal, ejecutando las instrucciones A, B y C en cada paso. A la variableContador le va a sumar uno en cada iteración automáticamente. Una vez que supera el valorFinal, sale del ciclo.
Si tenemos que imprimir del 1 al 100 ¿cómo hacemos? el primer número imprimir es el 1 y el último el 100, el ciclo tiene que recorrer todos esos números de forma secuencial.
Así que definimos nuestros parámetros:
- valor inicial = 1
- valor final = 100
Entonces, la lógica del algoritmo queda:
Para número 1 a 100 imprimo número fin del ciclo. ¡En solo tres líneas de código profesional resolvimos el problema!
# El Ciclo MIENTRAS (WHILE): Control por Condiciones
Por otro lado tenemos otra estructura cíclica muy potente, el MIENTRAS (WHILE) que ejecuta mientras se cumpla una condición lógica de estado.
Se evalúa la condición, si es verdadera se ingresa al bloque y se ejecutan las intrucciones A, B y C. Luego de ejecutar la instruccionC, se vuelve a evaluar la condición, si es verdadera vuelve a ingresar al bloque, y se repite hasta que la condición sea falsa, en ese caso continúa con la siguiente línea de código.
info Importante para Programadores
Dentro del bloque debo asegurarme de cambiar los parámetros de la condición, para que en algún momento salga del ciclo.
Notemos algo, puede que el ciclo nunca se ejecute, si la primera vez que evalúa la condición es falsa, nunca ingresa al bloque.
Por ejemplo para el caso de imprimir los números del 1 al 100, la condición podría ser que el número sea menor o igual a 100. Ahora ¿numero dondé arranca? hay que inicializarlo.
Cuando numero valga 100, incrementamos numero, y va a valer 101, así que al volver a evaluar no se cumple la condición y sale del ciclo de forma segura.
# Taller de Práctica: Ejercicio 1 (Conteo de Datos)
Vamos a tener 20 personas, un número fijo, que en programación puede definirse como una constante.
Para cada uno de estos 20, debemos pedir la edad; entonces una variable va a ser la edad (un número entero).
- Declaramos la constante PERSONAS que vale 20, y las variables edad, cantidadDeMayores y contador.
- Inicializamos la variable cantidadDeMayores: al empezar hay cero mayores, la inicializamos en cero.
- Armamos un ciclo PARA que vaya de 1 a PERSONAS, gestionando las 20 edades.
# Taller de Práctica: Ejercicio 2 (Validación de Entradas)
El algoritmo va a leer caracteres hasta que el carácter ingresado sea una vocal. Esto indica que vamos a necesitar una variable, podemos llamarla letra de tipo caracter (char).
- Variables: letra de tipo caracter, contador entero.
- Cargamos el contador en cero, porque todavía no ingresó ninguna letra y leemos la primera entrada.
- Iniciamos el ciclo: si se cumple la condición, o sea si letra no es vocal incrementamos el contador y volvemos a leer letra.
# Ejercicios de Práctica
Aquí tienes unos ejercicios resueltos para que pongas a prueba tus conocimientos en lógica algorítmica:
Escribir un algoritmo que permita ingresar números hasta que la suma de todos supere el valor 100.
VARIABLES: ENTERO numero, ENTERO suma
INICIO
suma = 0
MIENTRAS (suma <= 100)
INICIO
IMPRIMIR "Ingrese un número"
LEER numero
suma = suma + numero
FIN
IMPRIMIR "La suma total alcanzada es: " + suma
FIN
Armar un algoritmo que lea la edad de 10 personas y determine cuántos son mayores de 21 años.
VARIABLES: ENTERO edad, mayoresDe21, menoresDe21, contador
INICIO
mayoresDe21 = 0, menoresDe21 = 0, contador = 0
MIENTRAS (contador < 10) HACER
IMPRIMIR "Ingrese la edad de la persona " + (contador + 1)
LEER edad
SI (edad >= 21) ENTONCES
mayoresDe21 = mayoresDe21 + 1
SINO
menoresDe21 = menoresDe21 + 1
contador = contador + 1
FIN_MIENTRAS
IMPRIMIR "Resultados: Mayores: " + mayoresDe21 + " | Menores: " + menoresDe21
FIN
VARIABLES: PALABRA respuesta
INICIO
respuesta = "SI"
MIENTRAS (respuesta == "SI")
INICIO
IMPRIMIR "¿Desea continuar con el programa? (SI/NO)"
LEER respuesta
FIN
IMPRIMIR "El sistema ha finalizado correctamente."
FIN
VARIABLES: ENTERO suma, numero
INICIO
suma = 0
PARA numero = 1 A 1000
suma = suma + numero
FIN_PARA
IMPRIMIR "La sumatoria total del 1 al 1000 es: " + suma
FIN
Estrategia: divisiones sucesivas por 10.
VARIABLES: ENTERO numero, cantidadDigitos
INICIO
cantidadDigitos = 0
IMPRIMIR "Ingrese un número entero positivo"
LEER numero
MIENTRAS (numero > 0)
INICIO
numero = numero / 10
cantidadDigitos = cantidadDigitos + 1
FIN
IMPRIMIR "La cantidad total de dígitos detectados es: " + cantidadDigitos
FIN
En el siguiente artículo veremos funciones, algo que nos permite dividir un problema complejo en problemas simples, fáciles de resolver.
Recursos utilizados
- Imagen de tonodiaz en Freepik
- Imagen de brgfx en Freepik
- Imagen de rawpixel.com en Freepik
- Imagen de Freepik
- Imagen de Freepik
- Imagen de Freepik