Ejercicio 1 de 5
Tu primer bucle
Un bucle for repite código. Tiene tres partes:
for (int i = 0; i < 3; i++) {
IO.println(i);
}
// Imprime: 0, 1, 2
int i = 0: empieza en 0
i < 3: sigue mientras i sea menor que 3
i++: aumenta i en 1 después de cada vuelta
Cambia el 3 por un 5 para que se impriman los números del 0 al 4.
Código inicial
void main() {
for (int i = 0; i < 3; i++) {
IO.println(i);
}
}
Contexto
Las tres partes de un bucle for
for (inicio; condición; actualización): las tres partes se ejecutan en momentos distintos:
1. inicio: una sola vez, al principio del todo. 2. condición: se comprueba antes de cada vuelta. 3. actualización: después de cada vuelta.
Las tres partes son opcionales. for (;;) es un bucle infinito (igual que while(true)).
Ejercicio 2 de 5
Bucle: valor inicial
Puedes cambiar el valor inicial del bucle:
for (int i = 5; ...) // empieza en 5
Cambia el valor inicial para que se impriman los números del 1 al 5.
Cambia solo un número.
Código inicial
void main() {
for (int i = 0; i <= 5; i++) {
IO.println(i);
}
}
Contexto
¿Por qué empezar en 0?
En informática casi siempre se empieza a contar desde 0, porque los índices de un array son desplazamientos desde el inicio. El primer elemento está a 0 posiciones del principio.
Este lío del "off-by-one" (equivocarse justo por 1) es uno de los bugs más comunes en el desarrollo de software.
Ejercicio 3 de 5
Cuenta atrás
Los bucles también pueden ir hacia atrás:
for (int i = 10; i >= 1; i--) {
// i-- significa: reduce i en 1
}
El bucle está casi listo. Sustituye ??? por la expresión correcta para que cuente hacia atrás del 5 al 1.
Código inicial
void main() {
for (int i = 5; i >= 1; ???) {
IO.println(i);
}
}
Contexto
Incremento y decremento
i++ es la forma corta de i = i + 1. Hay dos variantes: i++ (post-incremento) y ++i (pre-incremento). La diferencia: int a = i++; guarda primero el valor antiguo y después aumenta i. int a = ++i; aumenta i primero y luego lo guarda.
En un bucle for da igual, porque el valor resultante no se usa.
Ejercicio 4 de 5
Bucle con condición
Puedes usar un if dentro de un bucle: así filtras valores.
El bucle va del 1 al 10. Completa la condición del if para que solo se impriman los números pares.
Pista: un número es par si i % 2 == 0 (al dividirlo entre 2 no queda resto).
Código inicial
void main() {
for (int i = 1; i <= 10; i++) {
if (???) {
IO.println(i);
}
}
}
Contexto
El operador módulo %
% te da el resto de una división. 7 % 3 = 1 (7 entre 3 = 2, resto 1). Así compruebas la divisibilidad: x % n == 0 significa "x es divisible entre n".
Usos típicos: comprobar si algo es par o impar, hacer que los valores "den la vuelta" (por ejemplo indice % array.length para recorrer un array en círculo) o hacer cálculos con horas del reloj.
Ejercicio 5 de 5
Bucle while
Un bucle while se ejecuta mientras la condición sea true:
while (condicion) {
// código
}
El bucle debe empezar en 1 y terminar en 3. Completa la condición.
Código inicial
void main() {
int i = 1;
while (???) {
IO.println(i);
i++;
}
}
Contexto
for vs. while: ¿cuándo usar cuál?
Usa for cuando sabes de antemano cuántas veces debe ejecutarse el bucle (por ejemplo "5 veces" o "para cada elemento"). Usa while cuando no lo sabes, por ejemplo "leer líneas hasta el final del archivo" o "repetir hasta que el usuario escriba 'salir'".
También existe do-while: como while, pero el cuerpo se ejecuta al menos una vez, porque la condición se comprueba al final.