Übung: Erstellen und Konfigurieren von for-Iterationsschleifen
- 14 Minuten
Auf der Oberfläche ist die for Anweisung eine weitere Iterationsanweisung, mit der Sie einen Codeblock durchlaufen und dadurch den Ausführungsfluss des Codes ändern können. Sobald wir jedoch untersuchen, wie jede funktioniert, können wir die Nuancen der einzelnen Iterationsanweisungen und deren Verwendung besser identifizieren.
Was ist die for-Anweisung?
Die for Anweisung durchläuft einen Codeblock eine bestimmte Anzahl von Malen. Diese Art der Kontrolle macht die for Anweisung einzigartig unter den anderen Iterationsanweisungen. Die foreach-Anweisung iteriert über einen Codeblock für jedes Element in einer Datenabfolge wie etwa ein Array oder eine Sammlung. Die while Anweisung durchläuft einen Codeblock, bis eine Bedingung erfüllt ist.
Darüber hinaus bietet ihnen die for Anweisung viel mehr Kontrolle über den Prozess der Iteration, indem sie die Bedingungen für die Iteration verfügbar macht.
In dieser Übung verwenden Sie die for Anweisung und lernen, wie Sie die Vorbedingung, die Abschlussbedingung, das Iterationsmuster und vieles mehr steuern. Sie lernen darüber hinaus gängige Anwendungsfälle für die for-Anweisung.
Okay, jetzt bereiten wir unsere Codierungsumgebung vor und beginnen mit der Untersuchung von Codebeispielen, die eine for Anweisung implementieren.
Vorbereiten Ihrer Programmierumgebung
Dieses Modul enthält praktische Aktivitäten, die Sie durch den Prozess der Erstellung und Ausführung von Demonstrationscode führen. Es wird empfohlen, diese Aktivitäten mit Visual Studio Code als Entwicklungsumgebung durchzuführen. Die Verwendung von Visual Studio Code für diese Aktivitäten vereinfacht das Schreiben und Ausführen von Code in einer Entwicklerumgebung, die von Expert*innen weltweit verwendet wird.
Öffnen Sie Visual Studio Code.
Sie können das Windows-Startmenü (oder eine entsprechende Ressource für ein anderes Betriebssystem) verwenden, um Visual Studio Code zu öffnen.
Klicken Sie im Visual Studio Code-Menü Datei auf Ordner öffnen.
Navigieren Sie im Dialogfeld Ordner öffnen zum Windows-Ordner „Desktop“.
Wenn Sie Codeprojekte in der Regel in einem anderen Ordner speichern, können Sie stattdessen auch diesen verwenden. Für diese Übung sollten Sie einen Speicherort haben, den Sie leicht finden und sich gut merken können.
Wählen Sie im Dialogfeld "Ordner öffnen " die Option "Ordner auswählen" aus.
Wenn ein Sicherheitsdialogfeld angezeigt wird, in dem Sie gefragt werden, ob Sie den Autoren vertrauen, wählen Sie "Ja" aus.
Wählen Sie im Menü "Visual Studio Code Terminal " die Option "Neues Terminal" aus.
Beachten Sie, dass eine Eingabeaufforderung im Panel „Terminal“ den Ordnerpfad für den aktuellen Ordner anzeigt. Beispiel:
C:\Users\someuser\Desktop>Hinweis
Wenn Sie auf Ihrem eigenen PC und nicht in einer Sandbox oder gehosteten Umgebung arbeiten und schon andere Microsoft Learn-Module in dieser C#-Reihe absolviert haben, haben Sie vielleicht bereits einen Projektordner für Codebeispiele erstellt. In diesem Fall können Sie den nächsten Schritt überspringen, der zum Erstellen einer Konsolen-App im Ordner „TestProject“ verwendet wird.
Geben Sie an der Terminal-Eingabeaufforderung zum Erstellen einer neuen Konsolenanwendung in einem angegebenen Ordner die folgende Eingabeaufforderung ein:
dotnet new console -o ./CsharpProjects/TestProjectDieser .NET-CLI-Befehl verwendet eine .NET-Programmvorlage, um ein neues C#-Konsolenanwendungsprojekt am angegebenen Ordnerspeicherort zu erstellen. Der Befehl erstellt die Ordner „CsharpProjects“ und „TestProject“ für Sie und verwendet „TestProject“ als Namen für Ihre
.csproj-Datei.Wenn eine Meldung angezeigt wird, die Besagt, dass die Dateien bereits vorhanden sind, fahren Sie mit den nächsten Schritten fort. Sie werden die vorhandenen Projektdateien wiederverwenden.
Erweitern Sie in der EXPLORER-Ansicht den Ordner "CsharpProjects ".
Sie sollten den Ordner "TestProject " und zwei Dateien sehen, eine C#-Programmdatei mit dem Namen Program.cs und eine C#-Projektdatei namens TestProject.csproj.
Klicken Sie im Visual Studio Code-Menü Datei auf Ordner öffnen.
Wählen Sie im Dialogfeld "Ordner öffnen " den Ordner "CsharpProjects " und dann " Ordner auswählen" aus.
Erweitern Sie in der EXPLORER-Ansicht den Ordner "TestProject", und wählen Sie dann Program.cs aus.
Löschen Sie die vorhandenen Codezeilen.
Sie verwenden dieses C#-Konsolenprojekt zum Erstellen und Ausführen von Codebeispielen im Rahmen dieses Moduls.
Schließen Sie das Panel „Terminal“.
Schreiben einer einfachen for-Anweisung
Stellen Sie sicher, dass Visual Studio Code geöffnet ist und „Program.cs“ im Editor-Bereich angezeigt wird.
Hinweis
„Program.cs“ sollte leer sein. Wenn dies nicht der Fall ist, wählen Sie alle Codezeilen aus, und löschen Sie sie.
Geben Sie den folgenden Code in den Visual Studio Code-Editor ein:
for (int i = 0; i < 10; i++) { Console.WriteLine(i); }Dieser Code stellt eine einfache
forAnweisung dar, die den Codeblock 10 Mal durchläuft, wobei der aktuelle Wert gedrucktiwird.Wählen Sie im Visual Studio Code-Menü Datei die Option Speichern aus.
Die Program.cs Datei muss vor dem Erstellen oder Ausführen des Codes gespeichert werden.
Klicken Sie im Panel „Explorer“ mit der rechten Maustaste auf TestProject, und klicken Sie dann auf In integriertem Terminal öffnen, um ein Terminal am Speicherort des TestProject-Ordners zu öffnen.
Ein Terminalbereich wird geöffnet. Der Terminalbereich sollte eine Eingabeaufforderung enthalten, die anzeigt, dass das Terminal am Speicherort Ihres Ordners „TestProject“ geöffnet ist.
Um Ihren Code auszuführen, geben Sie an der Terminal-Eingabeaufforderung dotnet run ein und drücken Sie dann die Eingabetaste.
Hinweis
Wenn die Meldung „Es wurde kein ausführbares Projekt gefunden“ angezeigt wird, stellen Sie sicher, dass in der Eingabeaufforderung des Terminals der erwartete Speicherort des Ordners „TestProject“ angezeigt wird. Beispiel:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Die folgende Ausgabe sollte angezeigt werden.
0 1 2 3 4 5 6 7 8 9Nehmen Sie sich eine Minute Zeit, um die sechs Teile der
forAnweisung zu identifizieren.Die
for-Anweisung umfasst die folgenden sechs Teile:- Das Schlüsselwort
for. - Eine Reihe von Klammern, die die Bedingungen der
forIteration definieren. Die Klammern enthalten drei voneinander getrennte Teile, die durch den Operator für das Ende der Anweisung, ein Semikolon, getrennt sind. - Der erste Teil definiert und initialisiert die Iteratorvariable. In diesem Beispiel:
int i = 0. Dieser Abschnitt wird als Initialisierer bezeichnet. - Der zweite Teil definiert die Abschlussbedingung. In diesem Beispiel:
i < 10. Anders ausgedrückt, die Runtime setzt die Iteration über den Code unterhalb derfor-Anweisung so lange fort, wieikleiner als10ist. Wennigleich10wird, wird die Ausführung des Codeblocks derforAnweisung nicht mehr fortgesetzt. Die Dokumente beziehen sich auf diesen Abschnitt als Bedingung. - Der dritte Teil definiert die Aktion, die nach jeder Iteration ausgeführt werden soll. In diesem Fall wird der Wert von
i++nach jeder Iteration vonium 1 erhöht. In den Dokumenten wird dieser Abschnitt als Iterator bezeichnet. - Schließlich der Codeblock. Der Codeblock enthält den Code, der für jede Iteration ausgeführt wird. Beachten Sie, dass innerhalb des Codeblocks auf den Wert
iverwiesen wird. Die Dokumente beziehen sich auf diesen Abschnitt als Textkörper.
Angesichts unserer Regeln für die Benennung von Variablen fragen Sie sich möglicherweise, ob
ies sich um einen gültigen Namen für die Variable handelt, die die aktuelle Iteration enthält. In diesem Fall,iwird von den meisten als gültig angesehen. Andere beliebte Auswahlmöglichkeiten sindxundcounter. Der Namejwird auch in diesen Situationen verwendet, wenn Sie eine äußereforAnweisung verwenden, dieinutzt, und eine Iterationsvariable für eine innereforAnweisung erstellen müssen.Hinweis
Alle drei Abschnitte (Initialisierung, Bedingung und Iterator) sind optional. In der Praxis werden jedoch in der Regel alle drei Abschnitte verwendet.
- Das Schlüsselwort
Ändern der Iterationsbedingungen
Wie wir zu Beginn erwähnt haben, hat die for Anweisung zwei einzigartige Qualitäten zwischen Iterationsanweisungen.
- Die
forAnweisung sollte verwendet werden, wenn Sie wissen, wie oft Sie einen Codeblock vorab durchlaufen müssen. - Mit der
forAnweisung können Sie steuern, wie jede Iteration behandelt wird.
Was wäre, wenn wir durch einen Codeblock iterieren müssten, aber anstatt nach oben zu zählen, nach unten zählen möchten?
Verwenden Sie den Visual Studio Code-Editor, um Ihren Code wie folgt zu aktualisieren:
for (int i = 10; i >= 0; i--) { Console.WriteLine(i); }Nehmen Sie sich eine Minute Zeit, um Ihren aktualisierten Code zu überprüfen.
Durch Ändern der drei Teile der
forAnweisung ändern wir das Verhalten.- Wir initialisieren die Iterationsvariable auf 10.
- Wir ändern die Abschlussbedingung so, dass die
forAnweisung beendet wird, wennikleiner als0ist. - Wir ändern das Muster des Iterators, um
1vonizu subtrahieren, jedes Mal, wenn wir eine Iteration abgeschlossen haben.
Speichern Sie Ihre Codedatei, und führen Sie Ihren Code dann mit Visual Studio Code aus.
Geben Sie
dotnet runüber die Eingabeaufforderung am Terminal ein, um Ihren Code auszuführen.Beachten Sie, wie sich die Ausgabe verändert hat.
Wenn Sie den Code ausführen, wird die folgende Ausgabe angezeigt.
10 9 8 7 6 5 4 3 2 1 0
Experimentieren Mit dem Iteratormuster
Was wäre, wenn bestimmte Werte in der Iteratorvariable übersprungen werden sollen?
Verwenden Sie den Visual Studio Code-Editor, um Ihren Code wie folgt zu aktualisieren:
for (int i = 0; i < 10; i += 3) { Console.WriteLine(i); }Nehmen Sie sich eine Minute Zeit, um Ihren aktualisierten Code zu überprüfen.
Anstatt den Wert der Iteratorvariable um
1zu erhöhen oder zu verringern, verwenden wiri += 3, um nach jeder Iteration zwei Werte zu überspringen.Speichern Sie Ihre Codedatei, und führen Sie Ihren Code dann mit Visual Studio Code aus.
Geben Sie
dotnet runüber die Eingabeaufforderung am Terminal ein, um Ihren Code auszuführen.Beachten Sie, wie sich die Ausgabe verändert hat.
Wenn Sie den Code ausführen, wird die folgende Ausgabe angezeigt.
0 3 6 9Zugegeben, Sie werden diese Art von Tätigkeit nicht oft ausführen, aber hoffentlich können Sie wertschätzen, dass Sie ein fein abgestimmtes Maß an Kontrolle über die Iterationen haben, wenn Sie es jemals benötigen.
Verwenden des Schlüsselworts "Break" zum Unterbrechen der Iterationsanweisung
Was geschieht, wenn die Iterationsanweisung aufgrund einer Bedingung vorzeitig beendet werden muss? Wir können das break Schlüsselwort verwenden.
Verwenden Sie den Visual Studio Code-Editor, um Ihren Code wie folgt zu aktualisieren:
for (int i = 0; i < 10; i++) { Console.WriteLine(i); if (i == 7) break; }Nehmen Sie sich eine Minute Zeit, um die Verwendung des
breakSchlüsselworts in Ihrem aktualisierten Code zu überprüfen.Wir haben zuerst das
breakSchlüsselwort im Modul "Verzweigen des Codeflusses mithilfe des Switch-Case-Konstrukts in C#" gesehen. Wie sich herausstellt, können wir auch dasbreakSchlüsselwort zum Beenden von Iterationsanweisungen verwenden.Speichern Sie Ihre Codedatei, und führen Sie Ihren Code dann mit Visual Studio Code aus.
Geben Sie
dotnet runüber die Eingabeaufforderung am Terminal ein, um Ihren Code auszuführen.Beachten Sie, wie sich die Ausgabe verändert hat.
Wenn Sie den Code ausführen, wird die folgende Ausgabe angezeigt.
0 1 2 3 4 5 6 7
Durchlaufen der einzelnen Elemente eines Arrays
Eine häufige Verwendung für die for Anweisung besteht darin, ein Array von Elementen zu durchlaufen, insbesondere, wenn Sie etwas Kontrolle über die Art und Weise benötigen, in der die Iteration erfolgt. Während foreach jedes Element des Arrays durchläuft, kann die for-Anweisung angepasst werden, um weitere Anpassungsmöglichkeiten zu bieten.
Verwenden Sie den Visual Studio Code-Editor, um Ihren Code wie folgt zu aktualisieren:
string[] names = { "Alex", "Eddie", "David", "Michael" }; for (int i = names.Length - 1; i >= 0; i--) { Console.WriteLine(names[i]); }Nehmen Sie sich eine Minute Zeit, um Ihren aktualisierten Code zu überprüfen.
Beachten Sie zunächst, dass wir ein Zeichenfolgenarray namens
namesinstanziiert haben, das vier Namen enthält.Beachten Sie als Nächstes, dass wir die
Array.LengthEigenschaft verwenden, um die Anzahl der Elemente im Array abzurufen, und dass wir diesen Wert verwenden, um unsere Iteratorvariable (int i = names.Length - 1) zu initialisieren. Wir subtrahieren 1 vom Wert, da die Indexnummer für Arrayelemente nullbasiert ist (die Indexnummern der vier Elemente sind 0-3).Beachten Sie schließlich, dass wir das Array rückwärts durchlaufen haben – etwas, das mit der
foreach-Anweisung nicht möglich ist. Wir verwenden den Wert der Iterationsvariable innerhalb des Codeblocks, um die Indexnummer der Arrayelemente (names[i]) anzugeben.Speichern Sie Ihre Codedatei, und führen Sie Ihren Code dann mit Visual Studio Code aus.
Geben Sie
dotnet runüber die Eingabeaufforderung am Terminal ein, um Ihren Code auszuführen.Beachten Sie, dass die Arrayelemente in umgekehrter Reihenfolge (wie gewünscht) aufgeführt werden.
Wenn Sie den Code ausführen, wird die folgende Ausgabe angezeigt.
Michael David Eddie AlexHinweis
Wir hätten durch die Array-Elemente iterieren können, indem wir die
for-Anweisung wie folgt formulieren:for (int i = 0; i < names.Length; i++).
Untersuchen der Einschränkung der foreach-Anweisung
Was geschieht, wenn Sie einen Wert im Array während einer foreach Iteration aktualisieren möchten?
Verwenden Sie den Visual Studio Code-Editor, um Ihren Code wie folgt zu aktualisieren:
string[] names = { "Alex", "Eddie", "David", "Michael" }; foreach (var name in names) { // Can't do this: if (name == "David") name = "Sammy"; }Speichern Sie Ihre Codedatei, und führen Sie Ihren Code dann mit Visual Studio Code aus.
Geben Sie
dotnet runüber die Eingabeaufforderung am Terminal ein, um Ihren Code auszuführen.Beachten Sie die angezeigte Fehlermeldung.
Wenn Sie versuchen, diesen Code zu kompilieren und auszuführen, wird eine Ausnahme angezeigt.
Cannot assign to name because it is a 'foreach iteration variable'Mit anderen Worten, Sie können den Wert
namenicht neu zuweisen, weil er Teil der inneren Implementierung derforeachIteration ist.
Überwinden der Einschränkung der foreach-Anweisung mithilfe der for-Anweisung
Versuchen wir, mithilfe einer for Anweisung den Inhalt eines Arrays innerhalb des Iterationscodeblocks zu ändern.
Verwenden Sie den Visual Studio Code-Editor, um Ihren Code wie folgt zu aktualisieren:
string[] names = { "Alex", "Eddie", "David", "Michael" }; for (int i = 0; i < names.Length; i++) if (names[i] == "David") names[i] = "Sammy"; foreach (var name in names) Console.WriteLine(name);Nehmen Sie sich eine Minute Zeit, um Ihren aktualisierten Code zu überprüfen.
Beachten Sie, dass wir die geschweiften Klammern aus den Codeblöcken entfernt haben, die nur eine einzelne Codezeile enthielten. Diese Überarbeitung verwendet dieselbe Technik, über die wir im Modul "Variablenbereich und Logik mithilfe von Codeblöcken in C# steuern" gesprochen haben. Viele Entwickler finden diesen Stil schwer zu lesen, während andere diese abgekürzte Formatvorlage bevorzugen, da sie ihnen helfen, prägnant und ausdrucksstärker zu schreiben. Wenn Sie diesen Code nur schwer zu lesen finden oder diesen Stil nicht bevorzugen, seien Sie unbesorgt, die geschweiften Klammern können immer in Ihren Codeblöcken verwendet werden. Wenn Sie möchten, aktualisieren Sie den Code im Editorbereich mit dem folgenden Code:
string[] names = { "Alex", "Eddie", "David", "Michael" }; for (int i = 0; i < names.Length; i++) { if (names[i] == "David") { names[i] = "Sammy"; } } foreach (var name in names) { Console.WriteLine(name); }Speichern Sie Ihre Codedatei, und führen Sie Ihren Code dann mit Visual Studio Code aus.
Geben Sie
dotnet runüber die Eingabeaufforderung am Terminal ein, um Ihren Code auszuführen.Beachten Sie, dass der Code ohne Fehler ausgeführt wird und die gewünschte Ausgabe generiert.
Wenn Sie den Code ausführen, wird die folgende Ausgabe angezeigt.
Alex Eddie Sammy MichaelDa das Array nicht direkt Teil der Implementierung der Iterationsanweisung ist, können Sie Werte innerhalb des Arrays ändern.
Zusammenfassung
Hier sind ein paar der Erkenntnisse, die Ihnen in dieser Einheit vermittelt wurden:
- Mit der
forIterationsanweisung können Sie einen Codeblock eine bestimmte Anzahl von Malen durchlaufen. - Mit
forder Iterationsanweisung können Sie jeden Aspekt der Iterationsmechanik steuern, indem Sie die drei Bedingungen innerhalb der Klammern ändern: den Initialisierer, die Bedingung und den Iterator. - Es ist üblich, die
forAnweisung zu verwenden, wenn Sie steuern müssen, wie Sie jedes Element in einem Array durchlaufen möchten. - Wenn Ihr Codeblock nur eine Codezeile enthält, können Sie die geschweiften Klammern und leerzeichen entfernen, wenn Sie möchten.