For-Schleife
Eine Schleife ermöglicht es, einen Codeabschnitt beliebig oft auszuführen. Es gibt verschiedene Arten von Schleifen. In C# verwendet man die for loop, wenn ein Codeabschnitt eine bestimmte Anzahl von Malen ausgeführt werden soll.
Das Grundmuster (Syntax) einer for-Schleife ist wie folgt:
for(initiation; condition; operation) {
// code to execute
}
Betrachten wir ein Beispiel, in dem wir diese Syntax verwenden:
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // Output "Hello World" ten times. for(int i = 0; i < 10; i++) { Console.WriteLine("Hello World"); } } } }
Hinweis
i++entsprichti = i + 1. Der Wert der Variablen wird um1erhöht. Entsprechend verringerti--den Wert um1.
int i = 0ist der Initialisierungsteil. Die Initialisierung erfolgt beim Start der Schleife. Zu Beginn der Schleife wird eine neue temporäre Variable namensierstellt und mit dem Wert0initialisiert.i < 10ist die Bedingung. Die Bedingung wird bei jeder Iteration (Wiederholung) der Schleife überprüft. Die Schleife führt den eingeschlossenen Codeblock aus, solange die Bedingung wahr ist.i++ist die Operation, die nach jeder Iteration ausgeführt wird. Die Operation ist üblicherweise eine Erhöhung oder Verringerung. Da der Wert voninach jeder Iteration erhöht wird, wird die Bedingungi < 10nach 10 Durchläufen falsch und die Schleife endet.
Es ist wichtig zu verstehen, dass alle drei Komponenten der for-Schleife — initialization, condition und operation — optional sind. Sie können jede davon weglassen, was jedoch das Verhalten der Schleife verändern kann.
Obwohl es nicht empfohlen wird, können Sie die Schleifenvariable außerhalb der Schleife deklarieren und den Teil initialization leer lassen. Die Schleife funktioniert dann weiterhin, allerdings ist Vorsicht geboten, da dies zu unerwarteten Ergebnissen führen kann, wenn es nicht korrekt gehandhabt wird.
main.cs
12345678910111213141516using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10; i++) { Console.WriteLine("Hello World"); } } } }
Wir können auch den Teil operation entfernen und ihn stattdessen am Ende des Codeblocks der Schleife platzieren. Die Schleife verhält sich weiterhin wie zuvor, da die Variable i nach jeder Iteration weiterhin inkrementiert wird.
main.cs
1234567891011121314151617using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10;) { Console.WriteLine("Hello World"); i++; } } } }
Beachte, dass im obigen Code weiterhin ein Semikolon (;) in der Schleifensyntax an der Stelle steht, an der int i = 0 erwartet wurde. Dieses Semikolon muss immer vorhanden sein, unabhängig davon, ob eine Schleifenvariable erstellt wird oder nicht.
Auch das Entfernen der Schleifenbedingung ist möglich, führt jedoch dazu, dass die Schleife unendlich läuft, sofern sie nicht manuell beendet wird (worauf in späteren Kapiteln noch näher eingegangen wird).
main.cs
1234567891011121314151617using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // In this case the variable `i` is useless so we don't create it. // The loop never ends for(;;) { Console.WriteLine("Hello World"); } } } }
Hinweis
Wir haben in der Schleifensyntax
for(;;)weiterhin beide Semikolons eingefügt, da diese zwingend erforderlich sind. Andernfalls zeigt der Compiler Fehler an.
Da sich der Wert von i bei jeder Iteration ändert, können wir dies zu unserem Vorteil nutzen. Um dies zu verdeutlichen, betrachten wir ein einfaches Programm, das den Wert von i bei jeder Iteration ausgibt:
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 0; i < 10; i++) { Console.WriteLine(i); } } } }
Beachte, dass die Schleife bei 9 endet, da sie mit der Ziffer 0 beginnt. Die Gesamtanzahl der Iterationen betrug zehn. Wir können Initialisierung, Bedingung und Operation anpassen, um die zehn geraden Zahlen von 2 bis 20 auszugeben.
Hinweis
Gerade Zahlen sind Zahlen, die durch
2teilbar sind. Zum Beispiel 2, 4, 6, 8, 10 usw. Gerade Zahlen schließen auch die Zahl0ein, aber in diesen Beispielen betrachten wir nur gerade Zahlen größer als0.
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 2; i <= 20; i += 2) { Console.WriteLine(i); } } } }
Hinweis
i += 2ist eine kürzere Schreibweise füri = i + 2. Diese Syntax ist auch für andere Operatoren gültig, zum Beispieli -= 2,i *= 2,i /= 2,i %= 2usw.
Die Schleife beginnt mit 0 und erhöht den Wert von i bei jeder Iteration um 2. Wir haben die Bedingung auf i <= 20 geändert, sodass die Schleife bei 20 endet.
Die obige Logik dient dem Verständnis der Funktionsweise einer for-Schleife. Wir können eine viel einfachere Logik verwenden, um die ersten zehn geraden Zahlen auszugeben:
main.cs
1234567891011121314using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 10; i++) { Console.WriteLine(i * 2); } } } }
In diesem Fall ist die Bedingung wesentlich einfacher. Wenn wir beispielsweise die ersten 27 geraden Zahlen benötigen, müssten wir beim vorherigen Verfahren wissen, welches die 27. gerade Zahl ist, um die Bedingung zu formulieren. In diesem Fall müssen wir jedoch lediglich die Bedingung zu i <= 27 anpassen:
main.cs
1234567891011121314using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 27; i++) { Console.WriteLine(i * 2); } } } }
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Can you explain how to use a for loop to print odd numbers?
What happens if I remove all three components from the for loop?
Can you show an example of an infinite for loop and how to stop it?
Awesome!
Completion rate improved to 1.59
For-Schleife
Swipe um das Menü anzuzeigen
Eine Schleife ermöglicht es, einen Codeabschnitt beliebig oft auszuführen. Es gibt verschiedene Arten von Schleifen. In C# verwendet man die for loop, wenn ein Codeabschnitt eine bestimmte Anzahl von Malen ausgeführt werden soll.
Das Grundmuster (Syntax) einer for-Schleife ist wie folgt:
for(initiation; condition; operation) {
// code to execute
}
Betrachten wir ein Beispiel, in dem wir diese Syntax verwenden:
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // Output "Hello World" ten times. for(int i = 0; i < 10; i++) { Console.WriteLine("Hello World"); } } } }
Hinweis
i++entsprichti = i + 1. Der Wert der Variablen wird um1erhöht. Entsprechend verringerti--den Wert um1.
int i = 0ist der Initialisierungsteil. Die Initialisierung erfolgt beim Start der Schleife. Zu Beginn der Schleife wird eine neue temporäre Variable namensierstellt und mit dem Wert0initialisiert.i < 10ist die Bedingung. Die Bedingung wird bei jeder Iteration (Wiederholung) der Schleife überprüft. Die Schleife führt den eingeschlossenen Codeblock aus, solange die Bedingung wahr ist.i++ist die Operation, die nach jeder Iteration ausgeführt wird. Die Operation ist üblicherweise eine Erhöhung oder Verringerung. Da der Wert voninach jeder Iteration erhöht wird, wird die Bedingungi < 10nach 10 Durchläufen falsch und die Schleife endet.
Es ist wichtig zu verstehen, dass alle drei Komponenten der for-Schleife — initialization, condition und operation — optional sind. Sie können jede davon weglassen, was jedoch das Verhalten der Schleife verändern kann.
Obwohl es nicht empfohlen wird, können Sie die Schleifenvariable außerhalb der Schleife deklarieren und den Teil initialization leer lassen. Die Schleife funktioniert dann weiterhin, allerdings ist Vorsicht geboten, da dies zu unerwarteten Ergebnissen führen kann, wenn es nicht korrekt gehandhabt wird.
main.cs
12345678910111213141516using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10; i++) { Console.WriteLine("Hello World"); } } } }
Wir können auch den Teil operation entfernen und ihn stattdessen am Ende des Codeblocks der Schleife platzieren. Die Schleife verhält sich weiterhin wie zuvor, da die Variable i nach jeder Iteration weiterhin inkrementiert wird.
main.cs
1234567891011121314151617using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10;) { Console.WriteLine("Hello World"); i++; } } } }
Beachte, dass im obigen Code weiterhin ein Semikolon (;) in der Schleifensyntax an der Stelle steht, an der int i = 0 erwartet wurde. Dieses Semikolon muss immer vorhanden sein, unabhängig davon, ob eine Schleifenvariable erstellt wird oder nicht.
Auch das Entfernen der Schleifenbedingung ist möglich, führt jedoch dazu, dass die Schleife unendlich läuft, sofern sie nicht manuell beendet wird (worauf in späteren Kapiteln noch näher eingegangen wird).
main.cs
1234567891011121314151617using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // In this case the variable `i` is useless so we don't create it. // The loop never ends for(;;) { Console.WriteLine("Hello World"); } } } }
Hinweis
Wir haben in der Schleifensyntax
for(;;)weiterhin beide Semikolons eingefügt, da diese zwingend erforderlich sind. Andernfalls zeigt der Compiler Fehler an.
Da sich der Wert von i bei jeder Iteration ändert, können wir dies zu unserem Vorteil nutzen. Um dies zu verdeutlichen, betrachten wir ein einfaches Programm, das den Wert von i bei jeder Iteration ausgibt:
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 0; i < 10; i++) { Console.WriteLine(i); } } } }
Beachte, dass die Schleife bei 9 endet, da sie mit der Ziffer 0 beginnt. Die Gesamtanzahl der Iterationen betrug zehn. Wir können Initialisierung, Bedingung und Operation anpassen, um die zehn geraden Zahlen von 2 bis 20 auszugeben.
Hinweis
Gerade Zahlen sind Zahlen, die durch
2teilbar sind. Zum Beispiel 2, 4, 6, 8, 10 usw. Gerade Zahlen schließen auch die Zahl0ein, aber in diesen Beispielen betrachten wir nur gerade Zahlen größer als0.
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 2; i <= 20; i += 2) { Console.WriteLine(i); } } } }
Hinweis
i += 2ist eine kürzere Schreibweise füri = i + 2. Diese Syntax ist auch für andere Operatoren gültig, zum Beispieli -= 2,i *= 2,i /= 2,i %= 2usw.
Die Schleife beginnt mit 0 und erhöht den Wert von i bei jeder Iteration um 2. Wir haben die Bedingung auf i <= 20 geändert, sodass die Schleife bei 20 endet.
Die obige Logik dient dem Verständnis der Funktionsweise einer for-Schleife. Wir können eine viel einfachere Logik verwenden, um die ersten zehn geraden Zahlen auszugeben:
main.cs
1234567891011121314using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 10; i++) { Console.WriteLine(i * 2); } } } }
In diesem Fall ist die Bedingung wesentlich einfacher. Wenn wir beispielsweise die ersten 27 geraden Zahlen benötigen, müssten wir beim vorherigen Verfahren wissen, welches die 27. gerade Zahl ist, um die Bedingung zu formulieren. In diesem Fall müssen wir jedoch lediglich die Bedingung zu i <= 27 anpassen:
main.cs
1234567891011121314using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 27; i++) { Console.WriteLine(i * 2); } } } }
Danke für Ihr Feedback!