Tracks
/
Crystal
Crystal
/
Temario
/
Bucles while
Bu

Bucles while en Crystal

1 ejercicio

Acerca de Bucles while

Un bucle es una estructura de control que permite ejecutar código repetidamente en función de una condición dada.

Bucles while

Un bucle while es una estructura de control que permite ejecutar código repetidamente en función de una condición dada. El código dentro de un bucle while seguirá ejecutándose mientras la condición se evalúe como verdadera. Los bucles while se usan a menudo cuando no se sabe de antemano cuántas iteraciones habrá; también sirven en cualquier situación en la que se necesite un bucle.

La condición se evalúa antes de que se ejecute el código dentro del bucle, lo que significa que si la condición es falsa, el código dentro del bucle nunca se ejecutará.

i = 0
while i < 3
  puts i
  i += 1
end

# Output:
# 0
# 1
# 2

Cuando quieras iterar sobre un string, puedes recorrer la longitud del string.

str = "Hello"
i = 0
while i < str.size
  puts str[i]
  i += 1
end

# Output:
# H
# e
# l
# l
# o

Bucles until

Los bucles until funcionan igual que los bucles while, salvo que el código dentro del bucle se seguirá ejecutando hasta que la condición se evalúe como verdadera. Es lo mismo que la diferencia entre if y unless.

i = 0
until i == 3
  puts i
  i += 1
end

Bucles infinitos

Un error común con los bucles while es entrar en un «bucle infinito», que nunca termina. Un bucle infinito puede deberse a que una condición nunca se evalúe como verdadera o falsa. A menudo se debe a un error del programador; por ejemplo, olvidar incrementar la variable del bucle. Pero a veces, un bucle infinito es la forma más clara de implementar la lógica del programa. O es vital repetir para siempre; por ejemplo, un servidor HTTP espera una conexión entrante, la atiende y luego espera la siguiente conexión.

break

La palabra clave break se puede usar para salir de un bucle antes de tiempo. Esto puede ser útil cuando quieres salir de un bucle antes de tiempo bajo ciertas condiciones.

i = 0
while i <= 3
  puts i
  i += 1
  if i == 2
    break
  end
end

# Output:
# 0
# 1

next

La palabra clave next se puede usar para saltar a la siguiente iteración de un bucle. Esto puede ser útil cuando quieres saltarte iteraciones específicas de un bucle.

i = 0
while i <= 3
  i += 1
  if i == 2
    next
  end
  puts i
end

# Output:
# 1
# 3

Tipos al iterar

El tipo de la variable puede ser diferente durante la iteración. En el siguiente ejemplo, el tipo de a es Int32 | String porque puede ser Int32 o String en la primera parte del bucle. La variable a solo tendrá el tipo Int32 | String en la primera parte del bucle, ya que cuando el bucle empieza contiene un Int32, y en la segunda iteración contiene un String. Este sistema de tipos múltiples se explicará en detalle más adelante. Pero como estamos seguros de que la segunda parte del bucle solo contendrá String, el tipo de a es String en la segunda parte del bucle. En tiempo de ejecución, nunca contendrá Int32 y String al mismo tiempo.

i = 0
a = 4
while i < 3
  p typeof(a)
  # => Int32 | String
  a = "4"
  p typeof(a)
  # => String
  i += 1
end

Usar while como expresión

while se puede usar como una expresión, lo que significa que se puede usar como el valor de una variable. El valor que se devuelve es el valor que se da con la palabra clave break. No devuelve el valor de la última expresión del bucle.

a = while true
  break 1
end

p a
# => 1

i = 0
a = while i == 0
  i += 1
  1
end

p a
# => nil
Editar en GitHub El enlace se abre en una ventana o pestaña nueva

Aprende Bucles while

La práctica está bloqueada

Desbloquea 10 ejercicios más para practicar Bucles while