Saltar al contenido principal
eLearner.app
Módulo 2 · Lección 1 de 23/14 en el curso~12 min
Lecciones del módulo (1/2)

Condicionales y bucles

El control del flujo en Rust gira en torno a dos constructores principales: expresiones condicionales para decidir qué camino tomar y constructores cíclicos para repetir instrucciones.

Condicionales: if como Expresión

In Rust, la instrucción if es una expresión, lo que significa que devuelve un valor. Podemos usar if para asignar directamente un valor a una variable:

Code
let condition = true;
let number = if condition { 5 } else { 6 }; // if/else come espressione

Bucles e Iteraciones

Rust proporciona tres tipos de bucles nativos: loop, while y for.

1. loop (Bucle Infinito)

La palabra clave loop crea un bucle infinito que continúa hasta que le indicas explícitamente que se detenga con break:

Code
let mut count = 0;
loop {
    count += 1;
    if count == 10 {
        break; // Esce dal ciclo
    }
}

Además, puedes devolver un valor desde un loop colocándolo justo después de break:

Code
let result = loop {
    count += 1;
    if count == 10 {
        break count * 2; // Restituisce 20
    }
};

2. while (Bucle Condicional)

Ejecuta un bloque de código mientras una condición booleana siga siendo verdadera:

Code
let mut number = 3;
while number != 0 {
    println!("{}!", number);
    number -= 1;
}

3. for (Iteración sobre Colecciones y Rangos)

El bucle for es la herramienta más común y segura para recorrer elementos de una colección o rangos de números:

Code
// Itera sui numeri da 1 a 3 (escluso il 4)
for number in 1..4 {
    println!("Valore: {}", number);
}

// Itera includendo l'estremo destro usando '='
for number in 1..=3 {
    println!("Valore: {}", number); // Stampa 1, 2 e 3
}

Etiquetas para Bucles (Loop Labels)

En caso de bucles anidados, las instrucciones break y continue se refieren por defecto al bucle más interno. Rust permite aplicar una etiqueta a un bucle (escrita como 'nombre_etiqueta:) para poder interrumpir o continuar explícitamente un bucle más externo:

Code
let mut count = 0;
'outer: loop {
    loop {
        if count == 5 {
            break 'outer; // Esce direttamente dal loop esterno
        }
        count += 1;
    }
}

Pruébalo tú

Ejercicio#rust.m2.l1.e1
Intentos: 0Cargando...

Declara una variable llamada number con el valor 7. Luego usa una expresión if/else para asignar a la variable message el valor 'greater' si number es mayor que 5, o 'smaller' en caso contrario. Por último, imprime message con println!.

Cargando editor...
Mostrar pista

Escribe `let message = if number > 5 { 'greater' } else { 'smaller' };` y pásala a `println!`.

Solución disponible después de 3 intentos

Ejercicio#rust.m2.l1.e2
Intentos: 0Cargando...

Escribe un bucle for que imprima los números del 1 al 5 inclusive (es decir, 1, 2, 3, 4, 5) usando println! en cada iteración.

Cargando editor...
Mostrar pista

Usa la sintaxis del rango inclusivo `for i in 1..=5` y ejecuta `println!('{}', i);` en el bloque.

Solución disponible después de 3 intentos

Ejercicio#rust.m2.l1.e3
Intentos: 0Cargando...

Escribe un bucle loop que incremente una variable mutable counter comenzando desde 0. Cuando counter llegue al valor 10, sal del bucle devolviendo counter multiplicado por 5 mediante la instrucción break para asignar este valor a una variable inmutable result. Por último, imprime result.

Cargando editor...
Mostrar pista

Usa `let result = loop { ... };`. Dentro del bucle incrementa `counter` e inserta la condición `if counter == 10 { break counter * 5; }`.

Solución disponible después de 3 intentos