Direkt zum Hauptinhalt springen
eLearner.app
Modul 2 · Lektion 1 von 23/14 im Kurs~12 min
Lektionen des Moduls (1/2)

Bedingungen und Schleifen

Die Ablaufsteuerung in Rust dreht sich um zwei Hauptkonstrukte: bedingte Ausdrücke, um zu entscheiden, welcher Weg eingeschlagen werden soll, und Schleifenkonstrukte, um Anweisungen zu wiederholen.

Bedingungen: if als Ausdruck

In Rust ist die if-Anweisung ein Ausdruck, was bedeutet, dass sie einen Wert zurückgibt. Wir können if verwenden, um einer Variablen direkt einen Wert zuzuweisen:

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

Schleifen und Iterationen

Rust bietet drei Arten von nativen Schleifen: loop, while und for.

1. loop (Endlosschleife)

Das Schlüsselwort loop erstellt eine Endlosschleife, die so lange fortgesetzt wird, bis Sie ihr mit break explizit mitteilen, dass sie stoppen soll:

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

Darüber hinaus können Sie einen Wert aus einem loop zurückgeben, indem Sie ihn direkt nach break platzieren:

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

2. while (Bedingte Schleife)

Führt einen Codeblock aus, solange eine boolesche Bedingung wahr bleibt:

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

3. for (Iteration über Sammlungen und Bereiche)

Die for-Schleife ist das gängigste und sicherste Werkzeug, um die Elemente einer Sammlung oder Zahlenbereiche zu durchlaufen:

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
}

Schleifen-Labels (Loop Labels)

Bei verschachtelten Schleifen beziehen sich die Anweisungen break und continue standardmäßig auf die innerste Schleife. Rust ermöglicht es, eine Schleife mit einem Label (geschrieben als 'label_name:) zu versehen, um eine weiter außen liegende Schleife explizit abbrechen oder fortsetzen zu können:

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

Probiere es aus

Übung#rust.m2.l1.e1
Versuche: 0Wird geladen…

Deklarieren Sie eine Variable namens number mit dem Wert 7. Verwenden Sie anschließend einen if/else-Ausdruck, um der Variablen message den Wert 'greater' zuzuweisen, wenn number größer als 5 ist, andernfalls den Wert 'smaller'. Geben Sie message schließlich mit println! aus.

Editor wird geladen…
Hinweis anzeigen

Schreiben Sie `let message = if number > 5 { 'greater' } else { 'smaller' };` und übergeben Sie diese an `println!`.

Lösung nach 3 Versuchen verfügbar

Übung#rust.m2.l1.e2
Versuche: 0Wird geladen…

Schreiben Sie eine for-Schleife, die die Zahlen von 1 bis einschließlich 5 (also 1, 2, 3, 4, 5) ausgibt, wobei bei jeder Iteration println! verwendet wird.

Editor wird geladen…
Hinweis anzeigen

Verwenden Sie die Syntax des inklusiven Bereichs `for i in 1..=5` und führen Sie `println!('{}', i);` im Block aus.

Lösung nach 3 Versuchen verfügbar

Übung#rust.m2.l1.e3
Versuche: 0Wird geladen…

Schreiben Sie eine Schleife (loop), die eine veränderliche Variable counter ausgehend von 0 erhöht. Wenn counter den Wert 10 erreicht, verlassen Sie die Schleife und geben Sie counter multipliziert mit 5 über die break-Anweisung zurück, um diesen Wert einer unveränderlichen Variablen result zuzuweisen. Geben Sie result schließlich aus.

Editor wird geladen…
Hinweis anzeigen

Verwenden Sie `let result = loop { ... };`. Erhöhen Sie innerhalb der Schleife `counter` und fügen Sie die Bedingung `if counter == 10 { break counter * 5; }` ein.

Lösung nach 3 Versuchen verfügbar