Übung: Erstellen von do- und while-Iterationsschleifen
- 10 Minuten
Auf den ersten Blick sind die do-while- und while-Anweisungen nur eine weitere Iterationsanweisung, mit der Sie einen Codeblock durchlaufen und dadurch den Ausführungsfluss Ihres Codes ändern können. Sobald wir jedoch untersuchen, wie jede funktioniert, können wir die Nuancen der einzelnen Iterationsanweisungen und deren Verwendung besser identifizieren.
Wie funktioniert die do-while-Anweisung?
Die do-while Anweisung führt eine Anweisung oder einen Block von Anweisungen aus, während ein angegebener boolescher Ausdruck auf "true" ausgewertet wird. Da dieser Ausdruck jeweils nach jeder Ausführung der Schleife ausgewertet wird, wird eine do-while-Schleife einmal oder mehrmals ausgeführt.
do
{
// This code executes at least one time
} while (true);
Der Ausführungsablauf beginnt innerhalb der geschweiften Klammer. Der Code wird mindestens ein Mal ausgeführt, und der boolesche Ausdruck neben dem while Schlüsselwort wird ausgewertet. Wenn der boolesche Ausdruck zurückgegeben wird true, wird der Codeblock erneut ausgeführt.
Durch das feste Kodieren des booleschen Ausdrucks auf true haben wir eine Endlosschleife erstellt, die zumindest so, wie sie derzeit geschrieben ist, niemals enden wird. Wir benötigen eine Möglichkeit, die Schleife innerhalb des Codeblocks aufzubrechen. Die Beendigungskriterien von do-while werden später noch erläutert.
Okay, jetzt bereiten wir unsere Codierungsumgebung vor und beginnen mit der Untersuchung von Codebeispielen, die eine do-while 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 do-while-Anweisung, die unterbrochen wird, wenn eine bestimmte Zufallszahl generiert wird
Schreiben wir Code, der zufällige Zahlen zwischen 1 und 10 generiert, bis die Zahl 7 generiert wird. Es kann nur eine Iteration dauern, um eine 7 zu erhalten, oder es kann Dutzende von Iterationen dauern.
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:
Random random = new Random(); int current = 0; do { current = random.Next(1, 11); Console.WriteLine(current); } while (current != 7);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>Überprüfen Sie die Ausgabe.
Da die generierten Zahlen zufällig sind, werden Die Ergebnisse unterschiedlich sein. Der Wert
7wird die letzte Zahl sein, die gedruckt wird, da der boolesche Ausdruck auffalseausgewertet wird, wenn 7 generiert wird, wodurch der Ausführungsfluss den Codeblock verlässt.2 5 8 2 7Nehmen Sie sich einen Moment Zeit, um den Code zu überprüfen.
Ein wichtiger Lernvorgang für diese erste Aufgabe ist, dass der Codeblock einer
do-whileSchleife mindestens einmal ausgeführt wird. Es könnte eine große Anzahl von Durchläufen geben, und es ist unwahrscheinlich, dass wir im Voraus wissen, wie viele Iterationen es geben wird.Es ist auch wichtig zu beachten, dass der Code innerhalb des Codeblocks beeinflusst, ob das Durchlaufen des Codeblocks fortgesetzt werden soll oder nicht. Ein Codeblock, der sich auf die Beendigungskriterien auswirkt, ist der Hauptgrund, sich für
do-while- oderwhile-Anweisungen statt für eine der anderen Iterationsanweisungen zu entscheiden. Sowohlforeachals auchforhängen von Faktoren ab, die sich außerhalb des Codeblocks befinden, um die Anzahl der Iterationen des Codeblocks zu bestimmen.
Schreiben einer while-Anweisung, die nur durchlaufen wird, während eine Zufallszahl größer als ein bestimmter Wert ist
Im Folgenden sehen Sie sich die while-Anweisungen an.
Verwenden Sie den Visual Studio Code-Editor, um Ihren Code wie folgt zu aktualisieren:
Random random = new Random(); int current = random.Next(1, 11); /* do { current = random.Next(1, 11); Console.WriteLine(current); } while (current != 7); */ while (current >= 3) { Console.WriteLine(current); current = random.Next(1, 11); } Console.WriteLine($"Last number: {current}");Hinweis
In diesem Fall positionieren wir das
whileSchlüsselwort und den booleschen Ausdruck vor dem Codeblock. Dies ändert die Bedeutung des Codes, und dieses „Tor“ lässt den Eintritt in den Ausführungsablauf nur zu, wenn der Boolesche Ausdruck als WAHR ausgewertet wird.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.Überprüfen Sie die aufgelisteten Ausgabewerte.
Da die Zahlen zufällig sind, erzeugt Ihr Code also eine andere Sequenz.
9 7 5 Last number: 1Nehmen Sie sich einen Moment Zeit, um den Code zu überprüfen.
Ganz oben im Code wird
randomverwendet, um dieint-Variable mit dem Namencurrentzu initialisieren. Unsere nächste aktive Codezeile ist unserewhileAussage.Die
while-Anweisung wird je nach dem Wert des booleschen Ausdrucks(current >= 3)durchlaufen. Wir wissen nicht, welchen Wert zugewiesencurrentwird, aber es gibt Möglichkeiten, die sich auf unserewhileSchleife auswirken:- Wenn
currentmit einem Wert initialisiert wird, der größer oder gleich3ist, wird der Boolean-Ausdrucktruezurückgeben, und der Ausführungsfluss wird den Codeblock betreten. Innerhalb des Codeblocks schreiben wir zunächst den Wert voncurrentauf die Konsole. Als Nächstes aktualisieren wir den Wertcurrentim Codeblock mit einem neuen Zufallswert. An diesem Punkt wechselt das Steuerelement zurück zum Anfang derwhileAnweisung, in der der boolesche Ausdruck ausgewertet wird. Dieser Prozess wird fortgesetzt, bis der boolesche Ausdruckfalsezurückgibt und der Ausführungsflow den Codeblock verlässt. - Wenn
current(oben im Code) auf einen Wert initialisiert wird, der kleiner als3ist, wird der boolesche Ausdruck zurückgegebenfalse, und der Codeblock wird nie ausgeführt.
Die letzte Codezeile schreibt den Wert von
currentauf die Konsole. Dieser Code wird ausgeführt, unabhängig davon, ob der Iterationscodeblock ausgeführt wurde oder nicht, und gibt uns die Gelegenheit, den endgültigen Wert voncurrentin die Konsole zu schreiben.- Wenn
Verwenden Sie die Continue-Anweisung, um direkt zum booleschen Ausdruck zu wechseln.
In bestimmten Fällen möchten wir den Rest des Codes im Codeblock kurzschalten und mit der nächsten Iteration fortfahren. Dazu können wir die continue Anweisung verwenden.
Verwenden Sie den Visual Studio Code-Editor, um Ihren Code wie folgt zu aktualisieren:
Random random = new Random(); int current = random.Next(1, 11); do { current = random.Next(1, 11); if (current >= 8) continue; Console.WriteLine(current); } while (current != 7); /* while (current >= 3) { Console.WriteLine(current); current = random.Next(1, 11); } Console.WriteLine($"Last number: {current}"); */Nehmen Sie sich einen Moment Zeit, um den Code zu überprüfen.
Beachten Sie, dass nun wieder
do-whileangewandt wird.do-whilestellt sicher, dass die Schleife mindestens einmal durchlaufen wird.Als Erstes müssen wir innerhalb des Codeblocks einen neuen Zufallswert
currentzuweisen. Als Nächstes überprüfen wir, obcurrentgrößer oder gleich8ist. Wenn dieser Ausdrucktruezurückgibt, überträgt dascontinue-Schlüsselwort die Kontrolle zum Ende des Codeblocks undwhilewird(current != 7)auswerten. Die Schleife wird also so lange durchlaufen, bis der Wert voncurrentungleich7ist.Der Schlüssel zu diesem Schritt der Übung ist die Codezeile mit dem
continueSchlüsselwort:if (current >= 8) continue;Da sich der Code, der den Wert
currentin die Konsole schreibt, nach demif (current >= 8) continue;befindet, stellt unser Code sicher, dass ein Wertcurrentder größer oder gleich8ist, niemals in das Ausgabefenster geschrieben wird.Probieren wir es aus.
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.Überprüfen Sie die aufgelisteten Ausgabewerte.
5 1 6 7Es werden wahrscheinlich unterschiedliche Ergebnisse angezeigt als die unten angezeigten. Es werden jedoch keine Werte
8oder mehr im Ausgabefenster angezeigt, bevor die Ausführung des Codes mit dem Wert7endet.Beachten Sie den Unterschied zwischen den Anweisungen
continueundbreak.Wie Sie in diesem letzten Schritt gesehen haben, überträgt die
continueAnweisung die Ausführung bis zum Ende der aktuellen Iteration. Dieses Verhalten unterscheidet sich von dem Verhalten, das wir mit derbreakAnweisung gesehen haben. DiebreakAnweisung beendet die Iteration (oderswitch) und überträgt die Steuerung an die Anweisung, die auf die beendete Anweisung folgt. Wenn nach der beendeten Anweisung keine weitere Anweisung kommt, wird die Steuerung an das Ende der Datei oder Methode übertragen.
Zusammenfassung
Es gibt einige wichtige Ideen, die Sie von dieser Einheit entfernen sollten:
- Die
do-while-Anweisung durchläuft einen Codeblock mindestens einmal. Die Iteration kann auf Grundlage eines booleschen Ausdrucks fortgesetzt werden. Die Auswertung des booleschen Ausdrucks hängt in der Regel von einem Wert ab, der innerhalb des Codeblocks generiert oder abgerufen wurde. - Die
whileAnweisung wertet zuerst einen booleschen Ausdruck aus und setzt die Iteration durch den Codeblock fort, solange der boolesche Ausdruck alstrueausgewertet wird. - Das
continueSchlüsselwort, um unmittelbar zum booleschen Ausdruck zu springen.