En este tema, aprenderemos sobre las estructuras de control de flujo en Rust, que nos permiten dirigir la ejecución de nuestro programa en función de condiciones y repeticiones. Las estructuras de control de flujo son fundamentales para escribir programas que puedan tomar decisiones y realizar tareas repetitivas.

Contenido

Condicionales: if, else if, else

Sintaxis Básica

La estructura condicional if se utiliza para ejecutar código basado en una condición booleana. La sintaxis básica es la siguiente:

fn main() {
    let number = 5;

    if number < 10 {
        println!("El número es menor que 10");
    } else if number == 10 {
        println!("El número es igual a 10");
    } else {
        println!("El número es mayor que 10");
    }
}

Explicación

  • if: Evalúa una condición. Si es verdadera, ejecuta el bloque de código asociado.
  • else if: Evalúa una nueva condición si la anterior fue falsa.
  • else: Ejecuta el bloque de código si todas las condiciones anteriores fueron falsas.

Ejemplo Práctico

fn main() {
    let temperature = 30;

    if temperature > 30 {
        println!("Hace calor");
    } else if temperature < 10 {
        println!("Hace frío");
    } else {
        println!("El clima es agradable");
    }
}

Bucles: loop, while, for

loop

El bucle loop ejecuta un bloque de código indefinidamente hasta que se encuentre una instrucción break.

fn main() {
    let mut count = 0;

    loop {
        count += 1;
        println!("Contando: {}", count);

        if count == 5 {
            break;
        }
    }
}

while

El bucle while ejecuta un bloque de código mientras una condición sea verdadera.

fn main() {
    let mut number = 3;

    while number != 0 {
        println!("{}!", number);
        number -= 1;
    }

    println!("¡Despegue!");
}

for

El bucle for itera sobre una colección de elementos, como un rango o un array.

fn main() {
    let a = [10, 20, 30, 40, 50];

    for element in a.iter() {
        println!("El valor es: {}", element);
    }
}

Expresiones match

La expresión match permite comparar un valor contra una serie de patrones y ejecutar el código correspondiente al primer patrón que coincida.

Sintaxis Básica

fn main() {
    let number = 3;

    match number {
        1 => println!("Uno"),
        2 => println!("Dos"),
        3 => println!("Tres"),
        _ => println!("Otro número"),
    }
}

Explicación

  • Patrones: Cada rama de match tiene un patrón y un bloque de código.
  • _: Es un comodín que coincide con cualquier valor no cubierto por los patrones anteriores.

Ejemplo Práctico

fn main() {
    let day = "Martes";

    match day {
        "Lunes" => println!("Inicio de la semana"),
        "Martes" => println!("Segundo día de la semana"),
        "Miércoles" => println!("Mitad de la semana"),
        "Jueves" => println!("Casi fin de semana"),
        "Viernes" => println!("Fin de la semana laboral"),
        "Sábado" | "Domingo" => println!("Fin de semana"),
        _ => println!("Día no válido"),
    }
}

Ejercicios Prácticos

Ejercicio 1: Condicionales

Escribe un programa que verifique si un número es positivo, negativo o cero.

fn main() {
    let number = -5;

    if number > 0 {
        println!("El número es positivo");
    } else if number < 0 {
        println!("El número es negativo");
    } else {
        println!("El número es cero");
    }
}

Ejercicio 2: Bucles

Escribe un programa que imprima los números del 1 al 10 usando un bucle for.

fn main() {
    for number in 1..=10 {
        println!("{}", number);
    }
}

Ejercicio 3: match

Escribe un programa que use match para imprimir el nombre del día de la semana basado en un número del 1 al 7.

fn main() {
    let day_number = 4;

    match day_number {
        1 => println!("Lunes"),
        2 => println!("Martes"),
        3 => println!("Miércoles"),
        4 => println!("Jueves"),
        5 => println!("Viernes"),
        6 => println!("Sábado"),
        7 => println!("Domingo"),
        _ => println!("Número de día no válido"),
    }
}

Resumen

En esta sección, hemos aprendido sobre las estructuras de control de flujo en Rust, incluyendo condicionales (if, else if, else), bucles (loop, while, for) y la expresión match. Estas herramientas son esenciales para escribir programas que puedan tomar decisiones y realizar tareas repetitivas de manera eficiente. Asegúrate de practicar estos conceptos con los ejercicios proporcionados para reforzar tu comprensión. ¡En el próximo módulo, exploraremos la propiedad y el préstamo en Rust!

© Copyright 2024. Todos los derechos reservados