PR3-Rust-SS26/B-basics/5-kontrollfluss.rs

67 lines
2.0 KiB
Rust

fn main() {
let mut x = 0;
println!("If Else:\n-----");
// If Bedingungen sind sehr ähnlich zu anderen Sprachen
if x == 0 {
println!("x ist Null");
} else if x < 0 {
println!("x ist negativ");
} else {
println!("x ist positiv");
}
println!("\nWhile:\n-----");
// While Schleifen wie in Java, nur ohne Klammen
// Klammern dürfen dabei stehen, das würde aber ein Warning ausgeben
while x < 10 {
println!("x ist kleiner als 10");
x += 1;
}
println!("\nFor:\n-----");
// For Loops sind etwas wilder, die klassische Java for-Loop (for (int i = 0; i < 10; i++) {}) sehe so aus
for i in 0..10 {
// Das ist quasi der Ternary Operator aus Python
let gerade = if i % 2 == 0 { true } else { false }; // Semicolon wichtig, da das eine Variableninitialisierung ist
println!("{:?}", gerade);
}
println!("\nLoop:\n-----");
// Loop läuft solange, bis ein break irgendwo erscheint, oder endlos
loop {
println!("Endlosschleifeeeee...");
break; // nicht mehr endlos
}
println!("\nMatch:\n-----");
for tag in 1..8 {
// Switch Case werden realisiert durch Pattern Matching
match tag {
1 => println!("Montag :O"),
2 => println!("Dienstag >:("),
3 => println!("Mittwoch :("),
4 => println!("Donnerstag :|"),
5 => println!("Freitag :)"),
6 => println!("Samstag :D"),
7 => println!("Sonntag :D"),
_ => println!("Tag unbekannt"), // Default Fall
}
}
let punktzahl = 50;
// Durch match kann ein Wert einer Variable zugeordnet werden, je nachdem, was die Lage ist
let note = match punktzahl {
0..50 => "Ungenügend",
50..67 => "Ausreichend",
67..80 => "Befriedigend",
80..92 => "Gut",
92..101 => "Sehr gut",
_ => "Unbekannte Punktzahl",
}; // Hier ist ein Semikolon nötig, da es eine Variableninitialisierung ist
println!("{note}");
}