Domina las Estructuras de Repetición (Bucles `While` y `For`) en programación. Aprende a crear código eficiente, evitar redundancia y anidar bucles. ¡Optimiza tus algoritmos hoy!
Mientras (o While) es una de las principales estructuras iterativas. Repetirá un bloque de instrucciones mientras una condición específica sea verdadera. Es ideal para situaciones donde no se conoce de antemano la cantidad exacta de iteraciones.%0A%0AWhile?%0A%0A1. Evaluación de la Condición: Cuando el programa llega a una sentencia Mientras, primero evalúa la condición entre paréntesis.%0A2. Entrada al Bucle: Si la condición es Verdadero (true), el programa "entra al bucle" y ejecuta las acciones que se encuentran dentro de ese bloque.%0A3. Nueva Evaluación: Al finalizar con estas instrucciones (terminar una iteración), la condición se vuelve a evaluar.%0A4. Salida del Bucle: Si el resultado de la evaluación es Falso (false), no se ejecuta la iteración y el programa continúa con la siguiente instrucción después del bucle.%0A%0ACabe destacar que es posible que el bucle Mientras nunca se ejecute si la condición es Falso desde la primera evaluación.%0A%0AMientras%0A%0A* Pseudocódigo:%0A %0A Mientras (condición) Hacer%0A acción_1;%0A …%0A acción_N;%0A FinMientras%0A %0A* C/C++:%0A cpp%0A while (condicion) {%0A statement_1;%0A ….%0A statement_n;%0A }%0A %0A%0AWhile%0A%0APara generar una cantidad específica de iteraciones con While, a menudo se utiliza una variable contador que se inicializa antes del bucle y se incrementa dentro de él. Por ejemplo, para procesar 10 edades:%0A%0A%0AProceso Mayor%0A Definir edad como Entero;%0A Definir contador como Entero;%0A contador = 0;%0A Mientras (contador < 10) Hacer%0A Mostrar “Ingrese la edad de la persona: “;%0A Leer edad;%0A Si ( edad >= 18) Entonces%0A Mostrar “Es mayor de edad”;%0A Sino%0A Mostrar “Es menor de edad“;%0A Fin Si%0A contador = contador + 1;%0A FinMientras%0AFinProceso%0A%0A%0AWhile Flexibles: Cantidad de Iteraciones Indefinida%0A%0APodemos hacer nuestro algoritmo más flexible permitiendo al usuario decidir cuántas iteraciones desea. Esto se logra cambiando la condición del Mientras para usar una variable ingresada por el usuario en lugar de un valor fijo:%0A%0A%0AProceso Mayor%0A Definir edad como Entero;%0A Definir cantidad como Entero;%0A Definir contador como Entero;%0A contador = 0;%0A Mostrar “¿Cuántas edades ingresará?”;%0A Leer cantidad;%0A Mientras (contador < cantidad) Hacer%0A Mostrar “Ingrese la edad de la persona: “;%0A Leer edad;%0A Si ( edad >= 18) Entonces%0A Mostrar “Es mayor de edad”;%0A Sino%0A Mostrar “Es menor de edad“;%0A Fin Si%0A contador = contador + 1;%0A FinMientras%0AFinProceso%0A%0A%0AOtra forma de controlar un While flexible es que el usuario ingrese un valor específico (por ejemplo, un valor negativo si se esperan solo valores positivos) para indicar que desea terminar la carga. En este caso, no se necesita un contador, y el ciclo se corta al ingresar el valor de terminación. El primer valor debe leerse fuera del ciclo para poder evaluar la condición inicial.%0A%0AEstas estructuras se conocen como ciclos no exactos porque la cantidad de iteraciones puede variar en cada ejecución del programa.%0A%0APara (o For) funciona de manera similar al Mientras, pero está diseñada para un número de repeticiones exactas. Dentro de la misma estructura, se define una variable que controla las iteraciones, el valor inicial, el valor final y el incremento.%0A%0AFor?%0A%0AEn el ciclo Para, se utiliza una variable de índice (comúnmente i, j, k), que debe ser de tipo Entero.%0A%0A1. Inicialización: La variable de control se inicializa con un número (por ejemplo, 0).%0A2. Evaluación de Condición: Se evalúa si la variable de índice ya alcanzó el valor final. Si aún no lo ha hecho, se ejecuta el cuerpo del ciclo.%0A3. Ejecución del Cuerpo: Se ejecutan las instrucciones dentro del bloque del ciclo.%0A4. Incremento Automático: Después de ejecutar el cuerpo del ciclo, la variable de índice se incrementa automáticamente (por defecto, en 1). Es crucial recordar que este incremento no se debe realizar manualmente dentro del algoritmo, ya que es parte del funcionamiento intrínseco de la estructura Para.%0A5. Re-evaluación: El ciclo Para vuelve a evaluar la condición y repite el proceso hasta que la variable de índice alcanza su valor final.%0A%0ALos valores iniciales y finales son inclusive, es decir, la primera iteración se ejecutará con el valor inicial, y la última con el valor final (o hasta que la condición se deje de cumplir, como i < N).%0A%0APara%0A%0A* Pseudocódigo:%0A %0A Para i <- 0 Hasta N-1 Hacer%0A accion_1%0A...%0A accion_n%0A FinPara%0A %0A* C/C++:%0A cpp%0A for (int i = 0; i < N; i++) {%0A statement_1;%0A ….%0A statement_n;%0A }%0A %0A%0AFor para Cantidad de Edades%0A%0ARehaciendo el ejemplo de las edades con un ciclo Para, donde el usuario ingresa la cantidad de edades:%0A%0A%0AProceso Mayor%0A Definir edad como Entero;%0A Definir cantidad como Entero;%0A Mostrar “¿Cuántas edades ingresará?”;%0A Leer cantidad;%0A Para i<-0 Hasta cantidad - 1 Hacer%0A Mostrar “Ingrese una edad: “;%0A Leer edad;%0A Si ( edad >= 18) Entonces%0A Mostrar “Es mayor de edad”;%0A Sino%0A Mostrar “Es menor de edad“;%0A Fin Si%0A FinPara%0AFinProceso%0A%0A%0APaso) en Bucles For%0A%0ALa variable de índice en un bucle Para no solo se puede incrementar de a 1. El valor en que se incrementa el contador es llamado paso o incremento, y puede modificarse. Por ejemplo, para generar números pares desde 2 hasta 12:%0A%0A%0AProceso Pares%0A Para i<-2 Hasta 12 Con Paso 2 Hacer%0A Mostrar “Es par:”, i;%0A FinPara%0AFinProceso%0A%0A%0AEn C/C++, esto se expresaría como for (int i = 2; i <= 12; i = i + 2 ). De esta manera, no es necesario usar un condicional para verificar si el número es par, ya que el paso garantiza que todos los números generados serán pares.%0A%0APara%0A%0ASupongamos que queremos calcular el promedio de notas para un curso de 30 alumnos, con 4 notas por alumno:%0A%0A%0AProceso Promedios%0A Definir nota como Entero;%0A Definir prom como Real;%0A Definir nombre como Cadena;%0A Para i<-0 Hasta 29 Hacer // 30 alumnos%0A Mostrar “Ingrese nombre”;%0A Leer nombre;%0A prom = 0; // Inicializa prom para cada alumno%0A Para j<-0 Hasta 3 Hacer // 4 notas por alumno%0A Mostrar “Ingrese nota”;%0A Leer nota;%0A prom = prom + nota; // Acumula notas%0A FinPara%0A prom = prom / 4; // Calcula el promedio%0A Mostrar “Promedio:”, prom;%0A FinPara%0AFinProceso%0A%0A%0AEl primer Para genera 30 iteraciones (una por alumno), y el segundo Para genera 4 iteraciones (una por nota). Al estar anidado, para cada alumno, se solicitan 4 notas, logrando el objetivo deseado.%0A%0AMientras y Para en Bucles Anidados%0A%0CEl anidamiento no se limita a usar el mismo tipo de bucle. Podemos combinar Mientras con Para o viceversa, dependiendo del problema. Por ejemplo, si el número de alumnos es desconocido (termina cuando el profesor ingresa "Fin"), pero cada alumno tiene 4 notas:%0A%0A%0AProceso Promedios%0A Definir nota como Entero;%0A Definir prom como Real;%0A Definir nombre como Cadena;%0A Mostrar “Ingrese nombre”;%0A Leer nombre;%0A Mientras nombre != “Fin” Hacer // Bucle inexacto para alumnos%0A prom = 0;%0A Para j<-0 Hasta 3 Hacer // Bucle exacto para 4 notas%0A Mostrar “Ingrese nota”;%0A Leer nota;%0A prom = prom + nota;%0A FinPara%0A prom = prom / 4;%0A Mostrar “Promedio:”, prom;%0A Mostrar “Ingrese nombre”; // Se pide nuevo nombre para la siguiente iteración%0A Leer nombre;%0A FinMientras%0AFinProceso%0A%0A%0AEn este caso, el Mientras controla el flujo de alumnos (ciclo inexacto), mientras que el Para anidado controla la entrada de las 4 notas por alumno (ciclo exacto). La condición de corte del Mientras está vinculada a un valor ingresado por el usuario ("Fin") y no a un contador.%0A%0AMientras y un bucle Para?%0A%0ALa diferencia clave es que el bucle Mientras (While) se usa para repeticiones no exactas, donde no se conoce de antemano el número de iteraciones y se basa en una condición que puede cambiar. El bucle Para (For), en cambio, es para repeticiones exactas, donde el número de iteraciones es conocido o predefinido, y controla automáticamente una variable de índice para contar las vueltas.%0A%0AMientras en lugar de un Para?%0A%0ADebes usar un bucle Mientras cuando la cantidad de veces que necesitas repetir un bloque de código no es fija o depende de una condición que se evaluará durante la ejecución del programa. Por ejemplo, leer datos hasta que el usuario ingrese un valor específico para salir, o procesar elementos hasta que una condición externa cambie.%0A%0AMientras, si la condición es Falso desde la primera vez que se evalúa, el bloque de instrucciones dentro del bucle nunca se ejecutará. En un bucle Para, si el valor inicial de la variable de índice ya cumple la condición de terminación (por ejemplo, i empieza en 5 y la condición es i < 3), tampoco se ejecutará ninguna iteración.%0A%0APara?%0A%0AEl "paso" o "incremento" en un bucle Para se refiere al valor en que la variable de índice se modifica (aumenta o disminuye) después de cada iteración del bucle. Por defecto, suele ser 1 (incremento), pero se puede especificar para que la variable salte de dos en dos, de tres en tres, o cualquier otro valor, lo que permite un control más fino sobre las secuencias generadas.