Bu

Bucles en C++

12 ejercicios

Acerca de Bucles

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.

Sintaxis general

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 componente init es código que se ejecuta una sola vez antes de que empiece el bucle.
  • El componente condition debe ser una expresión que se evalúe como un valor booleano y controle cuándo debe detenerse el bucle. El código dentro del bucle se ejecutará mientras esta condición se evalúe como verdadera. Tan pronto como esta expresión se evalúe como falsa, no se ejecutarán más iteraciones del bucle.
  • El componente expression es código que se ejecutará al final de cada iteración.

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;
}

Interludio: incrementos y decrementos

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

Bucles for: un ejemplo

El 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 break y continue.

Editar en GitHub El enlace se abre en una nueva ventana o pestaña

Aprende Bucles

La práctica está bloqueada

Desbloquea 4 ejercicios más para practicar Bucles