Tracks
/
Cairo
Cairo
/
Übungen
/
Bäckerei-Bestellsystem
Bäckerei-Bestellsystem

Bäckerei-Bestellsystem

Lernübung

Einführung

Mit dem Kontrollfluss in Cairo kannst du den Ausführungspfad deiner Programme anhand von Bedingungen und Wiederholungen steuern.

Bedingte Ausführung

Mit if-Ausdrücken führst du Code abhängig von Bedingungen aus:

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

if ist ein Ausdruck und kann daher Werte zurückgeben:

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

Schleifen

Mit loop wiederholst du Code. Eine Schleife läuft endlos, bis du sie stoppst. Mit break brichst du die Schleife ab, sobald eine Bedingung erfüllt ist.

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

Schleifen können mit break Werte zurückgeben:

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

Mit continue springst du zur nächsten Iteration:

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
}

Anleitung

In dieser Übung hilfst du bei der täglichen Arbeit einer kleinen Bäckerei und nutzt dabei die Kontrollflusskonstrukte von Cairo.

1. Bestellsumme berechnen

Implementiere calculate_total, die die Kosten einer Bestellung anhand von Gebäckart und Menge berechnet:

  • Croissant: 3 Münzen pro Stück
  • Muffin: 2 Münzen pro Stück
  • Cookie: 1 Münze pro Stück
calculate_total(Pastry::Croissant, 4) // Returns: 12 (4 * 3)
calculate_total(Pastry::Cookie, 10)   // Returns: 10 (10 * 1)

2. Mengenrabatte anwenden

Implementiere apply_discount, die Rabatte auf Basis der Bestellsumme anwendet. Wende den prozentualen Rabatt auf die Summe an und runde dann auf die nächste ganze Münze ab (Abrunden).

  • Bestellungen ≥ 20 Münzen: 10 % Rabatt
  • Bestellungen ≥ 10 Münzen: 5 % Rabatt
  • Bestellungen < 10 Münzen: kein Rabatt
apply_discount(25) // Returns: 22
apply_discount(15) // Returns: 14
apply_discount(8)  // Returns: 8

3. Backplan erstellen

Implementiere baking_schedule, die einen täglichen Backplan erstellt. Die Bäckerei backt in Chargen von 5 Bestellungen pro Stunde:

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)

Nutze passende Kontrollflusskonstrukte (if/else, loop), um jedes Problem effizient zu lösen.

Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Cairo Exercism

Bereit, mit Bäckerei-Bestellsystem zu starten?

Melde dich bei Exercism an, um Cairo mit 25 Konzepte68 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.