Estructuras Cíclicas o Repetitivas – bucles ciclos loops, que se ejecutan mediante las acciones PARA – MIENTRAS (FOR – WHILE).
En este artículo veremos las estructuras cíclicas, que mediante condiciones permiten repetir la ejecución de un conjunto de acciones.
Esto es algo que no se ve tan claro y parece difícil pero se usa ¡muchísimo! Cuando veamos ejemplos lo vas a entender y te vas a dar cuenta de su importancia.
Se escribe de la siguiente manera:
Tenemos un bloque con una instrucción iterativa (loop, bucle, ciclo) que tiene una condició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, se 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.
Vamos a suponer que tenemos un programa que nos pide imprimir los números del 1 al 3.
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 .
Pero si piden imprimir los primeros 100? ¡no vamos a escribirlo 100 veces!
Para situaciones repetitivas tenemos los ciclos. Vamos a ver dos tipos de estructuras cíclicas PARA (FOR) y WHILE (MIENTRAS).
El PARA (FOR) itera sobre una secuencia, en este caso sabemos 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 variableContador le va a sumar uno en cada iteración. 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.
Asi que:
Entonces queda:
Para número 1 a 100 imprimo número fin del ciclo.
En tres líneas resolvimos el problema.
Por otro lado tenemos otra estructura cíclica, el MIENTRAS (WHILE) que ejecuta mientras se cumpla una condición.
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.
Dentro del bloque que 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 donde arranca? hay que inicializarlo, debemos asignarle un valor antes de entrar al ciclo.
Por ejemplo podemos usar una variable de tipo entero número que inicializamos en 1.
En el MIENTRAS no hay una variable que se incremente automáticamente, como en el PARA, así que debemos incrementarla dentro del ciclo antes de volver a evaluar la condición.
La instrucción numero = numero + 1 es la que va a permitir salir del ciclo (de lo contrario quedamos en un ciclo infinito, no termina nunca). A esta variable también se la conoce como contador, porque va contando los pasos del ciclo.
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.
Algo más en algunos lenguajes el PARA (FOR) y el MIENTRAS (WHILE) se escriben de una manera similar, ambos con una condición pero ya los vamos a ver en esos casos particulares.
Vamos a tener 20 personas, un número fijo, puede ser una constante.
Para cada uno de estos 20, debemos pedir la edad entonces una variable va a ser la edad un número entero.
Para cargar las 20 edades podemos usar un ciclo, así que también vamos a necesitar una variable contador, vamos a tener que retornar cuántos son mayores de 25 años, o sea la cantidad de mayores, vamos a tener que ir contándolos, así que de acá sale otra variable entera que podemos llamar cantidadDeMayores. La vamos a ir incrementando en 1 cada vez que se encuentre uno mayor de 25 años.
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.
Vamos a tener que repetir la lectura en caso de que la variable no sea una vocal. No sabemos cuántas veces se repite, se basa en una condición, por lo que vamos a usar un ciclo mientras con la condición de letra distinto de vocal.
También vamos a necesitar un contador, que va a contar dentro del ciclo.
Algo a tener en cuenta, la primera letra la tengo que leer sí o sí, por lo que la vamos a leer fuera del ciclo. Después ya si vamos a tener que leer dentro del ciclo, para ver si esa letra cumple la condición o no.
Notemos que no estamos considerando mayúsculas en este ejercicio.
En este artículo vimos estructuras cíclicas, una de las estructuras fundamentales de la programación.
Pero antes, como la única manera de aprender es practicando, aca te dejo unos ejercicios para que practiques y puedas poner en práctica lo que viste:
VARIABLES
ENTERO numero
ENTERO suma
INICIO
// Inicializamos la suma en 0
suma = 0
// Ciclo para ingresar números hasta que la suma supere 100
MIENTRAS (suma <= 100)
INICIO
IMPRIMIR "Ingrese un número"
LEER numero
suma = suma + numero
FIN
IMPRIMIR "La suma total es: " + suma
FIN
VARIABLES
ENTERO edad
ENTERO mayoresDe21
ENTERO menoresDe21
ENTERO contador
INICIO
// Inicializo contadores
mayoresDe21 = 0
menoresDe21 = 0
contador = 0
// Leer la edad de 10 personas e ir procesando
MIENTRAS (contador < 10) HACER
IMPRIMIR "Ingrese la edad de la persona " + (contador + 1)
LEER edad
// Incluyo a los que tienen 21 en la categoría de mayores
SI (edad >= 21) ENTONCES
mayoresDe21 = mayoresDe21 + 1
SINO
menoresDe21 = menoresDe21 + 1
// Incrementar el contador
contador = contador + 1
FIN_MIENTRAS
// Imprimir resultados
IMPRIMIR "Cantidad de personas mayores de 21 años: " + mayoresDe21
IMPRIMIR "Cantidad de personas menores de 21 años: " + menoresDe21
FIN
VARIABLES
PALABRA respuesta
INICIO
// Inicializo la respuesta para entrar la primera vez
respuesta = "SI"
// Ciclo para preguntar si desea continuar
MIENTRAS (respuesta == "SI")
INICIO
IMPRIMIR "¿Desea continuar con el programa? (Escriba 'SI' para continuar)"
LEER respuesta
FIN
// Mensaje al salir del ciclo
IMPRIMIR "El programa ha finalizado."
FIN
VARIABLES
ENTERO suma
ENTERO numero
INICIO
// Inicializar la suma en 0
suma = 0
// Ciclo para sumar los números del 1 al 1000
PARA numero = 1 A 1000
INICIO
suma = suma + numero
FIN
// Imprimir la suma total
IMPRIMIR "La suma de los números del 1 al 1000 es: " + suma
FIN
//La estrategia de este algoritmo se basa en descomponer el número ingresado
//mediante divisiones sucesivas por 10.
//Cada vez que el número se divide por 10, el dígito menos significativo (el último) se descarta.
//Este proceso continúa hasta que el número se reduce a 0.
//Ejemplo: Para el número 12345:
//Primera división: 12345 / 10 = 1234 (dígito descartado: 5).
//Segunda división: 1234 / 10 = 123 (dígito descartado: 4).
//Y así sucesivamente hasta que el número se convierta en 0.
//Por cada división, el algoritmo incrementa un contador (cantidadDigitos), que rastrea cuántas divisiones se han realizado.
//Este contador representa directamente el número de dígitos en el número original.
VARIABLES
ENTERO numero
ENTERO cantidadDigitos
INICIO
// Inicializar la cantidad de dígitos en 0
cantidadDigitos = 0
IMPRIMIR "Ingrese un número entero positivo"
LEER numero
// Contar los dígitos dividiendo entre 10 repetidamente
MIENTRAS (numero > 0)
INICIO
numero = numero / 10
cantidadDigitos = cantidadDigitos + 1
FIN
// Imprimir la cantidad de dígitos
IMPRIMIR "La cantidad de dígitos 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, y fomenta el trabajo en equipo.