Los bucles se utilizan para ejecutar repetidamente cierta lógica.
Los dos tipos más comunes son el while loop (bucle indefinido) y el for loop (bucle definido, o contado).
También existe el bucle for each, que aparecerá en un concepto posterior.
El for loop consta de una cabecera y un bloque de código que contiene el cuerpo del bucle encerrado entre llaves.
La cabecera consta de 3 componentes separados por puntos y comas ;: instrucción de inicialización, condición y otra expresión.
Cada uno de ellos puede estar vacío.
for (init-statement; condition; expression) {
some_statement;
}
El while loop ejecuta su cuerpo mientras la comprobación de su condición sea verdadera.
El fragmento de código siguiente muestra cómo transformar un bucle for en un bucle while.
init-statement;
while(condition) {
some_statement;
expression;
}
Cuando se trabaja con bucles, a menudo es necesario sumar 1 o restar 1 a una variable contadora.
Esto es tan común que la operación tiene operadores especiales: ++ y --.
Se presentan en forma prefija y postfija. La forma prefija cambia la variable antes de usarla en la instrucción, y la versión postfija, después. Probablemente quieras la versión prefija la mayor parte del tiempo.
int a{3};
int b{--a};
// b is 2, a is now 2
int c{a++};
// c is 2, a is now 3
for: un ejemploEl componente init normalmente inicializa una variable contadora, la condición comprueba si el bucle debe continuar o detenerse y el componente post normalmente incrementa el contador al final de cada repetición.
int sum{0};
for (int i{1}; i < 10; ++i) {
sum += i;
}
Este bucle sumará los números del 1 al 9 (incluido el 9).
break y continue
Dentro del cuerpo de un bucle, puedes usar la palabra clave break para detener por completo la ejecución del bucle:
int sum{2};
while(true) {
sum *= 2;
if (sum > 1000)
break;
}
// sum is now 1024
En cambio, la palabra clave continue solo detiene la ejecución de la iteración actual y continúa con la siguiente:
int equal_sum{0};
for (int i{1}; i < 7; ++i) {
if (n%2 == 1) {
continue;
}
equal_sum += i;
}
// equal_sum is now 12
Nota: normalmente es más fácil entender la lógica del bucle cuando se minimiza o se evita por completo el uso de
breakycontinue.