Parcours
/
Cairo
Cairo
/
Exercices
/
Système de commandes de boulangerie
Système de commandes de boulangerie

Système de commandes de boulangerie

Exercice d'apprentissage

Introduction

Le flux de contrôle en Cairo permet de contrôler le chemin d'exécution des programmes en fonction de conditions et de répétitions.

Exécution conditionnelle

Utilise des expressions if pour exécuter du code en fonction de conditions :

let number = 42;
if number > 0 {
    println!("Positive number");
} else if number < 0 {
    println!("Negative number");  
} else {
    println!("Zero");
}

if est une expression, elle peut donc renvoyer des valeurs :

let result = if condition { 5 } else { 10 };

Boucles

Utilise loop pour répéter du code. Une boucle s'exécute indéfiniment tant que tu ne l'arrêtes pas ; utilise break pour sortir de la boucle quand une condition est remplie.

let mut counter = 0;
loop {
    if counter == 5 {
        break;
    }
    println!("Counter: {}", counter);
    counter += 1;
}

Les boucles peuvent renvoyer des valeurs avec break :

let result = loop {
    counter += 1;
    if counter == 10 {
        break counter * 2; // Returns 20
    }
};

Utilise continue pour passer à l'itération suivante :

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
}

Instructions

Dans cet exercice, tu vas aider à gérer le quotidien d'une petite boulangerie grâce aux structures de contrôle de Cairo.

1. Calcule le total de la commande

Implémente calculate_total, qui calcule le coût d'une commande en fonction du type de pâtisserie et de sa quantité :

  • Croissant : 3 pièces l'unité
  • Muffin : 2 pièces l'unité
  • Cookie : 1 pièce l'unité
calculate_total(Pastry::Croissant, 4) // Returns: 12 (4 * 3)
calculate_total(Pastry::Cookie, 10)   // Returns: 10 (10 * 1)

2. Applique les remises sur le volume

Implémente apply_discount, qui applique des remises en fonction du total de la commande. Applique la remise en pourcentage au total, puis arrondis à la pièce entière inférieure (floor).

  • Commandes ≥ 20 pièces : remise de 10 %
  • Commandes ≥ 10 pièces : remise de 5 %
  • Commandes < 10 pièces : aucune remise
apply_discount(25) // Returns: 22
apply_discount(15) // Returns: 14
apply_discount(8)  // Returns: 8

3. Crée le planning de cuisson

Implémente baking_schedule, qui crée un planning de cuisson quotidien. La boulangerie cuit par lots de 5 commandes par heure :

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)

Utilise les structures de contrôle adaptées (if/else, loop) pour résoudre efficacement chaque problème.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Cairo Exercism

Prêt à commencer Système de commandes de boulangerie ?

Inscris-toi sur Exercism pour apprendre et maîtriser Cairo avec 25 concepts68 exercices, et un vrai mentorat humain, le tout gratuitement.