El control de flujo en Cairo te permite controlar el flujo de ejecución de tus programas en función de condiciones y repeticiones.
Usa expresiones if para ejecutar código en función de condiciones:
let number = 42;
if number > 0 {
println!("Positive number");
} else if number < 0 {
println!("Negative number");
} else {
println!("Zero");
}
if es una expresión, así que puede devolver valores:
let result = if condition { 5 } else { 10 };
Usa loop para repetir código.
Un bucle se ejecuta indefinidamente a menos que lo detengas; usa break para salir del bucle cuando se cumpla una condición.
let mut counter = 0;
loop {
if counter == 5 {
break;
}
println!("Counter: {}", counter);
counter += 1;
}
Los bucles pueden devolver valores usando break:
let result = loop {
counter += 1;
if counter == 10 {
break counter * 2; // Returns 20
}
};
Usa continue para pasar a la siguiente iteración:
let mut i = 0;
loop {
i += 1;
if i % 2 == 0 {
continue; // Skip even numbers
}
if i > 10 {
break;
}
println!("{}", i); // Only prints odd numbers
}
En este ejercicio ayudarás a gestionar las operaciones diarias de una pequeña panadería utilizando las estructuras de control de flujo de Cairo.
Implementa calculate_total, que calcula el coste de un pedido según el tipo de bollería y la cantidad:
calculate_total(Pastry::Croissant, 4) // Returns: 12 (4 * 3)
calculate_total(Pastry::Cookie, 10) // Returns: 10 (10 * 1)
Implementa apply_discount, que aplica descuentos según el total del pedido.
Aplica el descuento porcentual al total y, a continuación, redondea hacia abajo hasta la moneda entera más cercana (floor).
apply_discount(25) // Returns: 22
apply_discount(15) // Returns: 14
apply_discount(8) // Returns: 8
Implementa baking_schedule, que crea un plan de horneado diario.
La panadería hornea en lotes de 5 pedidos por hora:
baking_schedule(18) // Returns: [5, 5, 5, 3] (3 full batches + 3 remaining)
baking_schedule(10) // Returns: [5, 5] (2 full batches)
baking_schedule(3) // Returns: [3] (1 partial batch)
Utiliza las estructuras de control de flujo adecuadas (if/else, loop) para resolver cada problema de forma eficiente.
Regístrate en Exercism para aprender y dominar Cairo con 25 conceptos68 ejercicios y mentoría humana real, todo gratis.