Hallo und herzlich willkommen. In dieser Vorlesung möchte ich über verschachtelte Schleifen und Schleifensteuerung sprechen.
Verschachtelte Schleifen, Schleifen innerhalb von Schleifen, Schleifensteuerung hat mit den Anweisungen
break und continue zu tun.
Also verschachtelte Schleifen.
Es gibt Zeiten, in denen Sie eine Schleife in eine andere Schleife einfügen möchten.
Es macht vollkommen Sinn.
So möchten Sie beispielsweise
die Anzahl der Bewohner in jedem Haus in einer Straße zählen.
Sie würden also eine äußere Schleife haben, in der Sie von Haus zu Haus gehen.
Und dann würden Sie in jedem Haus, in dem Sie sich befinden, die Anzahl der Bewohner zählen.
Ich hoffe, Sie können sich vorstellen oder verstehen, wie dies eine verschachtelte Schleife sein könnte.
Wieder die äußere Schleife, um durch alle Häuser zu gehen.
Und dann würden Sie für jede Iteration der äußeren Schleife jedes Hauses, dem Sie begegnen, in das
Haus gehen und eine Schleife haben, um alle Personen zu zählen.
Das ist also ein kleiner Anwendungsfall, wenn Sie tatsächlich eine
verschachtelte Schleife in c verwenden möchten.
Hier ist ein Beispiel. Es sieht so aus, als ob Sie
denken, es würde eine Schleife innerhalb einer Schleife aussehen, die wirklich nicht zu kompliziert ist.
In diesem Beispiel verwenden wir for-Schleifen für.
Schleifen sind nett, weil wir die Regelungsvariable initialisieren,
unsere Zustandsprüfung und unsere Regelungsvariable für Änderungsschleifen in einer Zeile durchführen können.
Also diese äußere Schleife und bezeichnen sie als äußere innere Schleife.
Die äußere Schleife ist genau das, was sie impliziert. Es ist die Schleife an der Außenseite.
Und Sie können viele, viele verschiedene Verschachtelungsebenen haben. Sie könnten viele innere
Schleifen haben.
In diesem Fall gehen wir durch und es ist
eine gegengesteuerte Schleife, wir beginnen bei eins und wir gehen den ganzen Weg, um zu zählen.
Wir wissen nicht, was hier zählt, es spielt keine Rolle.
Im Hauptteil der for-Schleife sagen wir, dass die Summe gleich 0 ist. Wir initialisieren die Summe für die innere Schleife.
Und dann sehen wir innerhalb der inneren Schleife eine andere for-Schleife für und j ist gleich 1, j
ist kleiner als gleich I und plus plus j. Wir sagen dann Summe plus gleich j.
Wir berechnen die Summe der ganzen Zahlen von 1 bis I.
Was Sie also tatsächlich tun, ist, dass Sie eine Nummer 5 eingeben.
Und für die erste Iteration der Schleife summieren
Sie 1 2 3 4 und 5.
Für die nächste Iteration der
Schleife summieren Sie 2 3 4 5.
Für die dritte Iteration der Schleife summieren Sie 3 4 5 und so weiter.
Daher sind innere Schleifen erforderlich, insbesondere basierend auf dem Anwendungsfall, nur eine Schleife innerhalb
einer Schleife, die perfekt ist.
Du wirst es ziemlich oft sehen.
Scheuen Sie sich nicht davor. Je nachdem, was Sie tun müssen und welches Problem Sie
lösen möchten, wird es häufig verwendet.
Und bis zu diesem Punkt ist es nicht immer eine for-Schleife innerhalb einer for-Schleife, Sie können
eine while-Schleife innerhalb einer for-Schleife haben. Sie könnten eine do while-Schleife innerhalb einer for-Schleife haben,
es spielt keine Rolle.
In diesem Beispiel,
dem gleichen genauen Beispiel, außer jetzt im Hauptteil der for-Schleife, haben wir
eine verschachtelte Schleife, eine innere Schleife, die mit dem Schlüsselwort while aufgerufen wird.
Wir berechnen also immer noch einige ganze Zahlen von 1 bis I.
Wir haben eine uh-Initialisierung außerhalb der while-Schleife.
Wir haben eine Bedingung innerhalb der while-Prüfung
und wir haben unsere Summen innerhalb des Körpers der while-Schleife,
in der wir geändert werden. Dies ist die Regelungsvariable, die wir ändern.
Also ist Summe plus gleich und dann modifizieren wir die Regelungsvariable mit plus plus j.
Wenn wir also plus plus j nicht modifizieren würden, hätten wir eine Endlosschleife für die while-Schleife.
Aber es gibt die gleiche Ausgabe aus, es wird nur eine while-Schleife als verschachtelte Schleife anstelle der for-Schleife verwendet.
Die Verschachtelung unterscheidet sich also nicht wirklich von der Verschachtelung.
Sie haben if-Anweisungen, if-Anweisungen innerhalb von if-Anweisungen und verschachtelte
Schleifenanweisungen innerhalb von Schleifen verschachtelt.
Um vom Konzept der verschachtelten
Schleifen wegzukommen, sprechen wir über die Anweisung continue.
Bis zu diesem Zeitpunkt, an dem wir über Schleifen
gesprochen haben, haben wir die Schleife immer mehrmals ausgeführt, basierend auf der Exit-Bedingung,
dem Booleschen Ausdruck, der als falsch ausgewertet wird.
Es gibt jedoch Situationen, in denen Sie eine Schleife gezielt vorzeitig beenden oder
mit der nächsten Iteration der Schleife fortfahren
möchten, ohne etwas zu tun.
Im letzteren Fall, wenn Sie fortfahren, ohne etwas zu tun,
und im Wesentlichen überspringen, können Sie
die continue-Anweisung verwenden, um dies zu tun.
Die continue-Anweisung im Hauptteil einer Schleife führt also Folgendes aus.
Wenn Sie dies initiieren möchten, müssen Sie zunächst nur das Schlüsselwort continue gefolgt von
einem Semikolon in den Hauptteil der Schleife einfügen.
Aber was es tun wird, ist, dass es diese
Iteration im Grunde überspringen wird. Das Fortfahren unter dem Fortsetzen
wird also nicht ausgeführt, wenn es sich im Körper der Schleife befindet.
Fahren Sie also oft fort, wenn wir aufgrund einer bestimmten Bedingung ganz oben
in der Schleife stehen möchten. Diese wird normalerweise in eine if-Anweisung eingeschlossen.
In diesem Fall möchte ich keinen Code im Hauptteil
der Schleife ausführen. Überspringen Sie einfach diese
eine Iteration und überprüfen Sie das nächste Mal.
Und wieder ist es ein wenig verwirrend, weil Sie eine Iteration überspringen und herumspringen, aber es
ist gültig und es ist eine Möglichkeit, mehrere Überprüfungen durchzuführen.
Obwohl sich Ihre Schleifen-Exit-Bedingung in Ihrem Booleschen Ausdruck befindet, können Sie
eine weitere Überprüfung durchführen.
Und diese Prüfung wird nicht aus der Schleife springen, sondern
eine Iteration überspringen.
Es wird also erneut für den Fall verwendet, dass Sie die Iteration überspringen möchten. Der Vorteil davon ist, dass Sie
continue verwenden können und dadurch viel Verschachtelung vermieden wird.
Es werden auch viele zusätzliche if-Anweisungen in Ihrem Schleifenblock eliminiert.
Dies kann die Lesbarkeit verbessern, wenn die
Anweisungen sehr lang sind oder wenn Sie eine tiefe Verschachtelung haben.
Wenn Sie also feststellen, dass Sie viel verschachteln.
Vielleicht möchten Sie sagen, ob ich stattdessen eine Fortsetzung verwenden kann.
Oder wenn Sie feststellen, dass Sie viele
if-Anweisungen haben, die bestimmte Dinge im Hauptteil der Schleife ausführen, möchten Sie möglicherweise fortfahren.
Verwenden Sie das Fortsetzen nicht, wenn es den Code kompliziert und nicht vereinfacht.
Verwenden Sie die Option "Weiter" nicht, wenn Sie nicht wissen, was Sie tun.
Hier ist ein Beispiel für die Fortsetzung.
In diesem Beispiel erstellen wir eine neue Aufzählung vom Typ Tag
und sagen, dass die gültigen Werte Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag, Sonntag sind.
Und dann haben wir eine for-Schleife, in der wir unsere Aufzählung auf
Montag initialisieren, und wir sagen, solange der
Tag weniger als gleich dem Sonntag ist, ist dies eine
Bedingung zum Beenden, und dann sagen wir plus plus Tag.
Sie können sich die Frage stellen, wie wir eine Aufzählung erhöhen?
Denken Sie daran, dass eine Aufzählung unter der Haube eine ganze Zahl ist.
Sie können also Plus-Plus-Tag für eine Aufzählung sagen, und das erhöht sie nur auf die nächste.
Denken Sie daran, Montag ist gleich 0, Dienstag ist gleich 1, Mittwoch
ist gleich 2, es ist alles in der Reihenfolge der Liste.
Also vollkommen in Ordnung, um Aufzählungen zu erhöhen.
In dieser for-Schleife, wenn es Mittwoch ist, möchten
wir überspringen. Wir wollen nichts tun. Wir wollen nicht drucken.
Also sagen wir weiter. Wenn der Tag gleich Mittwoch ist,
fahren Sie fort. Es wird die Druckzeile überspringen. Es wird wieder an den
Anfang der Schleife zurückkehren und die nächste Iteration ausführen.
Und so wird es dann Donnerstag sein.
Es wird nicht gleich Mittwoch sein, also wird es nicht überspringen.
Es wird gleich runtergehen und ausdrucken, es ist nicht Mittwoch.
Dies ist also ein häufiger Anwendungsfall, ein häufiges Beispiel für die Verwendung von continue, eine sehr einfach zu verwendende Syntax,
nur ein einfaches Schlüsselwort, gefolgt vom Semikolon.
Der andere Fall, in dem Sie möglicherweise etwas Seltsames in der Schleife tun
möchten, ist, wenn Sie vorzeitig beenden möchten.
Normalerweise führt ein Programm nach dem Eingeben des
Körpers in die Schleife alle Anweisungen im Körper der Schleife und
für jede Iteration aus und prüft und springt dann heraus.
Und wir wissen, wie das Fortfahren funktioniert, was ein etwas anderes Überspringen bewirkt.
Es gibt eine andere Anweisung, die die Ausführung aller Anweisungen in der Schleife ändern kann. Sie
wird als Pause bezeichnet.
Und das sollte etwas vertraut sein, da wir das Schlüsselwort break verwenden, wenn wir über die
switch-Anweisung gesprochen haben.
Denken Sie daran, wenn wir unsere Fälle hatten, würden wir auf diese Weise aus den Fällen ausbrechen.
Sie können das Schlüsselwort break auch innerhalb einer Schleife verwenden.
Und was dies tun wird, ist, dass es einfach aus der Schleife springt.
Die break-Anweisung bewirkt also, dass das Programm sofort aus der Schleife austritt, die es ausführt.
Anweisungen in der Schleife werden übersprungen und die Ausführung der Schleife wird beendet.
Sie springen also einfach aus der Schleife.
Sie führen früh aus. Wenn sich die break-Anweisung in verschachtelten Schleifen befindet, wirkt sie sich nur
auf die innerste Schleife aus, die sie enthält. Sie werden nur aus der Schleife springen, in der Sie sich befinden.
Dazu verwenden Sie das Schlüsselwort break gefolgt von einem Semikolon.
Pause wird oft verwendet, um eine Schleife zu verlassen, wenn es zwei verschiedene Gründe gibt, um zu verlassen.
Ich habe bereits erwähnt, dass Sie möglicherweise einen anderen Grund haben, aus dem Sie eine Iteration
überspringen möchten. Wenn es jedoch zwei Gründe gibt, zwei Bedingungen, unter denen Sie aus einer Schleife springen möchten, können
Sie eine Pause verwenden.
Wenn Sie nur eine
Bedingung haben, dann ist es nur die Bedingung, innerhalb der Schleife selbst die innerhalb
der Klammern des while oder vor dem zweiten Semikolon in der for-Schleife.
Wie bereits erwähnt, wird Break auch in switch-Anweisungen verwendet.
Also wollte ich dich nur daran erinnern. Verwechsle sie nicht.
Sie machen jedoch im Wesentlichen die gleichen Dinge. Sie springen aus dem Code heraus.
Das Unterbrechen einer switch-Anweisung springt vollständig aus
dieser switch-Anweisung heraus, das Unterbrechen einer Schleife springt aus dieser Schleife heraus.
Hier ist ein Beispiel. Wir haben eine while-Schleife.
Wir drucken einige ganze Zahlen aus.
Wir lesen in ganzen Zahlen. Wir haben eine verschachtelte while-Schleife.
Innerhalb der verschachtelten while-Schleife überprüfen wir,
was eingegeben wurde. Und wenn es größer als 100
ist, wollen wir aus dieser inneren Schleife herausspringen. So machen wir es.
Dann müssen wir in der äußeren Schleife eine weitere Überprüfung durchführen. Wenn es größer als 100 ist, brechen wir
aus dieser äußeren Schleife aus.
Wenn Sie nicht die zweite Pause hätten, würden Sie niemals aus der zweiten äußeren Schleife herausspringen.
In diesem Fall erinnert mich das an einen Ort, an den man gehen könnte.
Stellen Sie sich vor, Sie hätten 5 Verschachtelungen, 5 Verschachtelungsebenen, while-Schleife innerhalb einer
while-Schleife innerhalb einer while-Schleife innerhalb der while-Schleife innerhalb der while-Schleife.
Wenn Sie nur die Pause verwenden würden, um zu
versuchen, aus Schleifen herauszuspringen, hätten Sie alle diese if-Anweisungen in jeder Schleife, um herauszuspringen.
Anstatt all diese if-Anweisungen zu machen,
könnten Sie es versuchen. Das go to würde mit einem einzigen Befehl aus allen Schleifenstatusschleifen herausspringen.
Das ist also ein Anwendungsfall für einen Besuch. In diesem Fall demonstrieren wir nur
Pausen und stellen sicher, dass Sie verstehen, dass Sie gerade aus
der Schleife ausbrechen, in der Sie sich befinden.
Und in diesem Fall brechen wir aus 2 Schleifen aus.
Dies sind also die 2 Beispiele, die 2 Schlüsselwörter, bei denen Sie den Code dessen, was Sie
erwarten, im Wesentlichen nicht wiederholen können.
Wenn Sie also jemals eine Unterbrechung sehen oder in der Schleife fortfahren, stellen Sie
sicher, dass Sie verstehen, was vor sich geht,
da Sie möglicherweise bestimmten Code nicht ausführen, von dem Sie glauben, dass er ausgeführt wird.
Wiederum normalerweise in einen if-Zustand eingewickelt. Sie können es also
so betrachten, aber Sie möchten auch gute Kommentare abgeben, wenn Sie break verwenden oder fortfahren.
Hoffe das hilft. In der nächsten Vorlesung werden
wir eine Herausforderung stellen, bei der wir diese Schleifen
verwenden können. Sie wird zeigen und Ihnen helfen, alles über while for loop zu lernen und zu
brechen und fortzufahren. Danke.