Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen For-Schleife | Schleifen
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
C# Grundlagen

bookFor-Schleife

Eine Schleife ermöglicht es, einen Codeabschnitt beliebig oft auszuführen. Es gibt verschiedene Arten von Schleifen. In C# verwenden wir die for loop, wenn wir einen Codeabschnitt eine bestimmte Anzahl von Malen ausführen möchten.

Das Grundmuster (Syntax) einer for-Schleife ist wie folgt:

main.cs

main.cs

copy
123
for(initiation; condition; operation) { // code to execute }

Betrachten wir ein Beispiel, in dem wir diese Syntax verwenden:

main.cs

main.cs

copy
123456789101112131415
using 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++ ist dasselbe wie i = i + 1. Es erhöht den Wert der Variablen um 1. Entsprechend verringert i-- den Wert um 1.

  • int i = 0 ist der Initialisierungsteil. Die Initialisierung erfolgt beim Start der Schleife. Zu Beginn der Schleife wird eine neue temporäre Variable namens i erstellt und mit dem Wert 0 initialisiert;
  • i < 10 ist 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 Inkrementierung oder Dekrementierung. Da der Wert von i nach jeder Iteration erhöht wird, wird die Bedingung i < 10 nach 10 Iterationen 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 initialization-Teil 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

main.cs

copy
12345678910111213141516
using 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 den Teil operation auch entfernen und ihn am Ende des Codeblocks der Schleife platzieren. Die Schleife verhält sich genauso wie zuvor, da die Variable i weiterhin nach jeder Iteration inkrementiert wird.

main.cs

main.cs

copy
1234567891011121314151617
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10;) { Console.WriteLine("Hello World"); i++; } } } }

Beachten Sie, 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 (was in späteren Kapiteln näher erläutert wird).

main.cs

main.cs

copy
1234567891011121314151617
using 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

Beide Semikolons in der Schleifensyntax for(;;) wurden weiterhin eingefügt, da diese zwingend erforderlich sind, andernfalls zeigt der Compiler Fehler an.

Da sich der Wert von i bei jeder Iteration ändert, kann dies vorteilhaft genutzt werden. Zur Veranschaulichung folgt ein einfaches Programm, das den Wert von i bei jeder Iteration ausgibt:

main.cs

main.cs

copy
123456789101112131415
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 0; i < 10; i++) { Console.WriteLine(i); } } } }

Beachten Sie, dass die Schleife bei 9 endet, da sie mit der Ziffer 0 beginnt. Die Gesamtanzahl der Durchläufe betrug zehn. Die Initialisierung, die Bedingung und die Operation können angepasst werden, um die zehn geraden Zahlen von 2 bis 20 auszugeben.

Hinweis

Gerade Zahlen sind Zahlen, die durch 2 teilbar sind. Zum Beispiel 2, 4, 6, 8, 10 usw. Gerade Zahlen schließen auch die Zahl 0 ein, aber in diesen Beispielen werden nur gerade Zahlen größer als 0 betrachtet.

main.cs

main.cs

copy
123456789101112131415
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 2; i <= 20; i += 2) { Console.WriteLine(i); } } } }

Hinweis

i += 2 ist eine kürzere Schreibweise für i = i + 2. Diese Syntax ist auch für andere Operatoren gültig, zum Beispiel i -= 2, i *= 2, i /= 2, i %= 2 usw.

Die Schleife beginnt mit 0 und erhöht den Wert von i bei jeder Iteration um 2. Die Bedingung wurde auf i <= 20 geändert, sodass die Schleife bei 20 endet.

Die obige Logik dient dem Verständnis der Funktionsweise einer for-Schleife. Es kann jedoch eine wesentlich einfachere Logik verwendet werden, um die ersten zehn geraden Zahlen auszugeben:

main.cs

main.cs

copy
1234567891011121314
using 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 deutlich einfacher. Möchte man beispielsweise die ersten 27 geraden Zahlen ausgeben, müsste man beim vorherigen Verfahren wissen, welches die 27. gerade Zahl ist, um die Bedingung zu formulieren. In diesem Fall muss lediglich die Bedingung auf i <= 27 angepasst werden:

main.cs

main.cs

copy
1234567891011121314
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 27; i++) { Console.WriteLine(i * 2); } } } }
question mark

Was wird die Ausgabe des folgenden Programms sein? Der Wert von sum erhöht sich in jeder Iteration um i, daher sind die Werte während der ersten vier Durchläufe: 1, 3, 6, 10.

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 1

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Suggested prompts:

Can you explain more about the different types of loops in C#?

What happens if I omit all three components in the for loop?

Can you show an example of a for loop that runs infinitely?

bookFor-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# verwenden wir die for loop, wenn wir einen Codeabschnitt eine bestimmte Anzahl von Malen ausführen möchten.

Das Grundmuster (Syntax) einer for-Schleife ist wie folgt:

main.cs

main.cs

copy
123
for(initiation; condition; operation) { // code to execute }

Betrachten wir ein Beispiel, in dem wir diese Syntax verwenden:

main.cs

main.cs

copy
123456789101112131415
using 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++ ist dasselbe wie i = i + 1. Es erhöht den Wert der Variablen um 1. Entsprechend verringert i-- den Wert um 1.

  • int i = 0 ist der Initialisierungsteil. Die Initialisierung erfolgt beim Start der Schleife. Zu Beginn der Schleife wird eine neue temporäre Variable namens i erstellt und mit dem Wert 0 initialisiert;
  • i < 10 ist 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 Inkrementierung oder Dekrementierung. Da der Wert von i nach jeder Iteration erhöht wird, wird die Bedingung i < 10 nach 10 Iterationen 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 initialization-Teil 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

main.cs

copy
12345678910111213141516
using 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 den Teil operation auch entfernen und ihn am Ende des Codeblocks der Schleife platzieren. Die Schleife verhält sich genauso wie zuvor, da die Variable i weiterhin nach jeder Iteration inkrementiert wird.

main.cs

main.cs

copy
1234567891011121314151617
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10;) { Console.WriteLine("Hello World"); i++; } } } }

Beachten Sie, 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 (was in späteren Kapiteln näher erläutert wird).

main.cs

main.cs

copy
1234567891011121314151617
using 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

Beide Semikolons in der Schleifensyntax for(;;) wurden weiterhin eingefügt, da diese zwingend erforderlich sind, andernfalls zeigt der Compiler Fehler an.

Da sich der Wert von i bei jeder Iteration ändert, kann dies vorteilhaft genutzt werden. Zur Veranschaulichung folgt ein einfaches Programm, das den Wert von i bei jeder Iteration ausgibt:

main.cs

main.cs

copy
123456789101112131415
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 0; i < 10; i++) { Console.WriteLine(i); } } } }

Beachten Sie, dass die Schleife bei 9 endet, da sie mit der Ziffer 0 beginnt. Die Gesamtanzahl der Durchläufe betrug zehn. Die Initialisierung, die Bedingung und die Operation können angepasst werden, um die zehn geraden Zahlen von 2 bis 20 auszugeben.

Hinweis

Gerade Zahlen sind Zahlen, die durch 2 teilbar sind. Zum Beispiel 2, 4, 6, 8, 10 usw. Gerade Zahlen schließen auch die Zahl 0 ein, aber in diesen Beispielen werden nur gerade Zahlen größer als 0 betrachtet.

main.cs

main.cs

copy
123456789101112131415
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 2; i <= 20; i += 2) { Console.WriteLine(i); } } } }

Hinweis

i += 2 ist eine kürzere Schreibweise für i = i + 2. Diese Syntax ist auch für andere Operatoren gültig, zum Beispiel i -= 2, i *= 2, i /= 2, i %= 2 usw.

Die Schleife beginnt mit 0 und erhöht den Wert von i bei jeder Iteration um 2. Die Bedingung wurde auf i <= 20 geändert, sodass die Schleife bei 20 endet.

Die obige Logik dient dem Verständnis der Funktionsweise einer for-Schleife. Es kann jedoch eine wesentlich einfachere Logik verwendet werden, um die ersten zehn geraden Zahlen auszugeben:

main.cs

main.cs

copy
1234567891011121314
using 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 deutlich einfacher. Möchte man beispielsweise die ersten 27 geraden Zahlen ausgeben, müsste man beim vorherigen Verfahren wissen, welches die 27. gerade Zahl ist, um die Bedingung zu formulieren. In diesem Fall muss lediglich die Bedingung auf i <= 27 angepasst werden:

main.cs

main.cs

copy
1234567891011121314
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 27; i++) { Console.WriteLine(i * 2); } } } }
question mark

Was wird die Ausgabe des folgenden Programms sein? Der Wert von sum erhöht sich in jeder Iteration um i, daher sind die Werte während der ersten vier Durchläufe: 1, 3, 6, 10.

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 1
some-alt