Lección 3

Condiciones y bucles

if como expresión, las tres formas de repetir, ranges, loop labels, break con valor y continue.

Nivel
Inicial
Duración
22 min
Actualizada

Tres formas de repetir, y un nombre para cada bucle

En «Variables, funciones y control de flujo» ya usaste if y for de forma informal, sin nombrar por qué if produce un valor ni que existen otras dos formas de repetir. Aquí completamos el vocabulario: loop, while y for cubren casos distintos, y los rangos, las etiquetas y break/continue te dan control fino sobre cuándo parar.

Este vocabulario reaparece en el resto del curso: iteradores, match, y más adelante el operador ? construyen sobre las mismas ideas de expresión y control de flujo que ves aquí.

Verás cuatro estaciones: if como expresión, las tres formas de repetir, rangos y etiquetas, y las dos salidas de un bucle.

Estado del flujo

  • CONDICIÓN · n < 0resultado booleano
  • CAMINO · ambas ramas: i32mismo tipo en las dos ramas
  • RESULTADO · clamp_lowclamp_low(-5), clamp_low(5)
01 / 04IF · ELSE · MISMO TIPO

Ejercicio 01 · Conjetura de Collatz

Cuenta cuántos pasos tarda una secuencia de Collatz en llegar a 1.

El starter ya declara la firma. Completa el cuerpo con un bucle `while` que aplique la regla par/impar en cada vuelta hasta llegar a 1.

0/1correcta

Completa collatz_steps para que cuente los pasos: si n es par, divide entre 2; si es impar, calcula 3 * n + 1. Repite hasta que n valga 1 y devuelve el número de pasos dados.

01

Implementa

Sustituye `todo!` por un bucle `while n != 1` con un `if`/`else` para par/impar.

Función 01

Contar los pasos de Collatz

Sin cambios

Repite la regla par/impar hasta llegar a 1, sumando una vuelta por cada paso aplicado.

/// Counts the steps the Collatz sequence takes to reach 1 from `start`.
pub fn collatz_steps(start: u64) -> u32 {
    todo!("loop while n != 1: even -> n / 2, odd -> 3 * n + 1, count each step")
}
02

Comprueba

Ejecuta los casos visibles y usa el diagnóstico para corregir el código.

cuenta los pasos correctos para varias secuencias conocidas
Compilador

Modifica el código antes de ejecutar las pruebas.

03

Ayuda

Consulta pistas progresivas o compara con la solución.

Ejecuta un intento para desbloquear la solución.

Resumen

  • if es una expresión: produce un valor, y sus dos ramas deben tener el mismo tipo.
  • loop repite hasta un break explícito; while comprueba su condición antes de cada vuelta; for recorre un rango o iterador.
  • Los rangos ../..= excluyen o incluyen el final; una etiqueta ('outer) identifica qué bucle debe romperse cuando hay varios anidados.
  • break 'etiqueta sale del bucle exterior directamente, sin banderas auxiliares.
  • continue salta a la siguiente vuelta sin ejecutar el resto del cuerpo.
  • break valor termina un loop y ese valor se convierte en el resultado del bucle.

Fuentes