Los bucles for, while y do-while en C y C++
En esta lección vas a repetir tareas con los bucles for, while y do-while y a controlarlos con break y continue.
Introducción
Los bucles ejecutan varias veces el mismo bloque de código. El bucle for es adecuado cuando conoces el número de repeticiones, while repite mientras la condición sea verdadera, y do-while siempre ejecuta el cuerpo al menos una vez antes de comprobar la condición.
Puntos importantes
- Activa los avisos del compilador (compiler warnings) y corrígelos todos.
- Entiende bien el tipo y la vida útil (lifetime) de cada valor.
- Comprueba siempre los datos de entrada y los límites de los índices de los arreglos.
Mira cómo funciona
Pulsa Paso para ejecutar el bucle paso a paso. Observa cómo se comprueba la condición, se ejecuta el cuerpo y la tabla de seguimiento crece fila a fila.
Ejemplos de código C y C++
#include <stdio.h>
int main(void) {
/* for: start; condition; step */
for (int i = 1; i <= 5; i++) {
printf("%d ", i);
}
printf("\n");
/* while: repeat as long as the condition holds */
int n = 20;
int steps = 0;
while (n > 1) {
n /= 2;
steps++;
}
printf("halved %d times\n", steps);
/* do-while: the body runs at least once */
int tries = 0;
do {
tries++;
} while (tries < 3);
printf("tries = %d\n", tries);
/* break leaves the loop, continue skips to the next round */
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) continue;
if (i > 7) break;
printf("%d ", i);
}
printf("\n");
return 0;
}
1 2 3 4 5
halved 4 times
tries = 3
1 3 5 7
#include <iostream>
#include <vector>
int main() {
// for: start; condition; step
for (int i = 1; i <= 5; i++) {
std::cout << i << ' ';
}
std::cout << '\n';
// while: repeat as long as the condition holds
int n = 20;
int steps = 0;
while (n > 1) {
n /= 2;
steps++;
}
std::cout << "halved " << steps << " times\n";
// do-while: the body runs at least once
int tries = 0;
do {
tries++;
} while (tries < 3);
std::cout << "tries = " << tries << '\n';
// range-based for visits every element of a container
std::vector<int> values{1, 3, 5, 7};
int sum = 0;
for (int value : values) {
sum += value;
}
std::cout << "sum = " << sum << '\n';
}
1 2 3 4 5
halved 4 times
tries = 3
sum = 16
Comparación entre C y C++
La cabecera de un bucle for tiene tres partes: el valor inicial, la condición de repetición y el paso. La instrucción break sale del bucle de inmediato, mientras que continue se salta el resto de la vuelta actual y pasa a la siguiente. C++ también ofrece el bucle for basado en rango (range-based for), que recorre todos los elementos de un contenedor sin usar índices.
C usa funciones procedurales pequeñas y muestra abiertamente cómo se representan los datos en memoria.
C++ sigue permitiendo trabajar a bajo nivel, pero añade tipos de biblioteca y abstracciones más seguras.
Ejercicios de práctica
Ejecuta las dos versiones y después modifica el código para ver la diferencia de seguridad que aporta cada lenguaje.
- Prueba entradas no válidas y valores límite.
- Compila con las opciones -Wall -Wextra -Wpedantic para activar más avisos.
- Pon las declaraciones comunes en un archivo de cabecera y la implementación en un archivo aparte.
Practica con un reto
Usa lo que cubre esta lección para resolver un problema real. Cada reto se ejecuta en el navegador, con pruebas al instante y una revisión de IA.
- Sum of Odd Numbers Add every odd number up to a limit. Fácil
- Cuenta regresiva hasta el despegue Cuenta regresiva desde un número y termina con ¡Despegue! Fácil
- Multiplication Table Row List the first multiples of a number. Fácil