Im letzten Schritt (Bedingungen) hast du gelernt, wie dein Programm Entscheidungen trifft. Jetzt schauen wir uns den letzten Baustein an: Wie du Code mehrfach ausführen kannst, ohne ihn mehrfach hinzuschreiben.
Die while-Schleife
Eine while-Schleife führt einen Codeblock immer wieder aus, solange eine Bedingung true ist - das ist genau der gleiche Wahrheitswert, den du schon von if kennst.
int zaehler = 1;
while (zaehler <= 5)
{
Console.WriteLine(zaehler);
zaehler = zaehler + 1;
}
Praktisches Beispiel: Solange fragen, bis wir eine Antwort haben
Erinnerst du dich an das "Wie heisst du?"-Beispiel aus Lass mich etwas eingeben? Was passiert eigentlich, wenn jemand einfach nur Enter drückt, ohne einen Namen einzutippen? Mit einer while-Schleife kannst du so lange nachfragen, bis wirklich etwas eingegeben wurde:
string name = "";
while (name == "")
{
Console.Write("Wie heisst du? ");
name = Console.ReadLine();
}
Console.WriteLine("Hallo, " + name + "!");
Noch eleganter: do-while
Etwas stört an der Lösung von eben: Wir mussten name vorher extra mit einem leeren Text vorbelegen, nur damit die Bedingung beim ersten Mal überhaupt geprüft werden kann. Dafür gibt es eine zweite Variante der while-Schleife: do-while. Sie dreht die Reihenfolge um und prüft die Bedingung erst nach dem Durchlauf - der Block davor wird also immer mindestens einmal ausgeführt, ganz ohne Vorbelegung:
string name;
do
{
Console.Write("Wie heisst du? ");
name = Console.ReadLine();
}
while (name == "");
Console.WriteLine("Hallo, " + name + "!");
Die for-Schleife
Wenn du - wie im Zähler-Beispiel oben - von vornherein weisst, wie oft etwas wiederholt werden soll, ist eine for-Schleife oft die kürzere Schreibweise. Sie fasst drei Dinge in einer Zeile zusammen: Startwert, Bedingung und was nach jedem Durchlauf passieren soll.
for (int zaehler = 1; zaehler <= 5; zaehler++)
{
Console.WriteLine(zaehler);
}
Praktisches Beispiel: Das Einmaleins
Für eine Kombination aus Konsoleneingabe und for-Schleife lohnt sich ein kleines Einmaleins - wir fragen nach einer Zahl und geben dann die ersten zehn Vielfachen davon aus:
Console.Write("Für welche Zahl möchtest du das Einmaleins sehen? ");
int zahl = int.Parse(Console.ReadLine());
for (int i = 1; i <= 10; i++)
{
Console.WriteLine(zahl + " x " + i + " = " + (zahl * i));
}
Kurz zusammengefasst: Mit while wiederholst du einen Codeblock, solange eine Bedingung true ist - besonders praktisch, wenn du vorher nicht weisst, wie oft das sein wird. Mit do-while machst du das Gleiche, prüfst die Bedingung aber erst nach dem ersten Durchlauf - praktisch bei Eingabeabfragen. Mit for hast du eine kompakte Schreibweise, wenn du Startwert, Bedingung und Schrittweite schon kennst. Achte immer darauf, dass die Bedingung irgendwann false wird - sonst entsteht eine Endlosschleife.