Menu
Coddy logo textTech

Break

Parte de la sección Fundamentos del Journey de R de Coddy — lección 40 de 78.

A veces necesitas salir de un bucle antes de tiempo, antes de que termine todas sus iteraciones. La sentencia break te permite detener inmediatamente un bucle cuando se cumple una condición específica.

for (i in 1:10) {
  if (i == 5) {
    break
  }
  print(i)
}

Salida:

[1] 1
[1] 2
[1] 3
[1] 4

El bucle estaba configurado para ejecutarse del 1 al 10, pero cuando i alcanzó el 5, la sentencia break detuvo el bucle por completo. Observa que el 5 nunca se imprimió porque break sale inmediatamente.

Esto es especialmente útil con los bucles while cuando se busca algo:

num <- 1
while (TRUE) {
  if (num * num > 20) {
    break
  }
  num <- num + 1
}
print(num)

Salida:

[1] 5

Aquí, while (TRUE) normalmente se ejecutaría indefinidamente, pero break lo detiene una vez que encontramos el primer número cuyo cuadrado supera 20. Este patrón es común cuando necesitas buscar hasta que se cumpla una condición.

challenge icon

Desafío

Fácil

Lee un número limit de la entrada. Usa un bucle for para iterar desde 1 hasta limit, pero detén el bucle anticipadamente usando break cuando encuentres el primer número que sea divisible tanto por 3 como por 7.

Imprime cada número antes de verificar la condición. Cuando encuentres un número divisible tanto por 3 como por 7, imprime ese número y luego sal del bucle.

Después de que termine el bucle, imprime "Loop ended" usando print().

Por ejemplo, si la entrada es 30, la salida debería ser:

[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10
[1] 11
[1] 12
[1] 13
[1] 14
[1] 15
[1] 16
[1] 17
[1] 18
[1] 19
[1] 20
[1] 21
[1] "Loop ended"

El bucle se detiene en 21 porque es el primer número divisible tanto por 3 como por 7 (21 = 3 × 7).

Hoja de referencia

La sentencia break detiene inmediatamente un bucle cuando se cumple una condición específica:

for (i in 1:10) {
  if (i == 5) {
    break
  }
  print(i)
}

Salida:

[1] 1
[1] 2
[1] 3
[1] 4

El bucle termina cuando i llega a 5. El valor 5 nunca se imprime porque break sale inmediatamente.

Uso de break con while (TRUE) para realizar búsquedas:

num <- 1
while (TRUE) {
  if (num * num > 20) {
    break
  }
  num <- num + 1
}
print(num)

Salida:

[1] 5

Este patrón encuentra el primer número cuyo cuadrado supera 20 y luego detiene el bucle infinito.

Pruébalo tú mismo

# Leer entrada
con <- file("stdin", "r")
limit <- as.integer(suppressWarnings(readLines(con, n = 1)))

# TODO: Escribe tu código a continuación
# Usa un bucle for desde 1 hasta limit
# Imprime cada número antes de comprobar la condición
# Rompe el bucle cuando encuentres un número divisible por 3 y 7 a la vez
# Pista: Usa el operador %% para comprobar la divisibilidad


# Imprimir "Loop ended" después del bucle
print("Loop ended")
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos