Hallo und herzlich willkommen. In diesem Vortrag möchte ich über die while- und while-Schleifen sprechen.
Wir haben über die for-Schleife gesprochen, mit der Sie im Wesentlichen Code wiederholen können.
Es gibt andere Konstrukte in c, die while und do while genannt werden und dasselbe
mit nur anderer Syntax tun.
Die while-Schleife Die while-Schleife ist also ein Mechanismus zum Wiederholen einer Reihe
von Anweisungen und ermöglicht die Fortsetzung der Ausführung, solange ein angegebener logischer Ausdruck als wahr ausgewertet wird.
Also mehr davon hier. Genau wie wenn Anweisungen bestimmten Code
ausführen, während Anweisungen bestimmten Code basierend auf einer Booleschen Auswertung mehrmals ausführen.
Alles, was Sie in der for-Schleife tun können, können Sie in der while-Schleife
tun, es ist nur eine andere Syntax.
So sieht die while-Schleife aus.
Auf einer sehr hohen Ebene, wenn wir Pseudocode betrachten, während
diese Bedingung wahr ist, machen Sie dies weiter.
Um es auf ein Beispiel für eine Weltwelt zu beziehen.
Grundsätzlich, während Sie hungrig sind, essen Sie Sandwiches, so etwas.
Sie werden also den Code wiederholen. Du wirst weiterhin viele Sandwiches essen, während du hungrig bist.
Die allgemeine Syntax für die while-Schleife lautet wie folgt.
Dies zeigt Ihnen die Syntax für eine Anweisung
im Body, sodass Sie keine Klammern oder geschweiften Klammern angeben müssen.
Ich neige dazu, die Begriffe geschweifte Klammern und
Klammern in derselben Terminologie zu verwenden.
So sieht die Syntax aus, wenn Sie eine Anweisung gegenüber mehreren Anweisungen haben.
Mehrere Anweisungen, Sie müssen diese Klammern haben, einzelne Anweisungen,
die Sie nicht haben, sie sind optional. Sie können sie nicht haben oder Sie müssen sie nicht haben.
Der Ausdruck steht in Klammern, genau wie die
for-Schleife und die if-Anweisung. Der Ausdruck hier unterscheidet sich von
der for-Schleife darin, dass es sich um eine einzelne Exit-Bedingung handelt.
Es ist nur der Ausdruck. Sie initialisieren die Regelungsvariable nicht.
Sie ändern die Regelungsvariable zwischen den Klammern nicht.
Es ist nur der Ausdruck, nur die Ausgangsbedingung.
Die Bedingung für die Fortsetzung der while-Schleife wird zu Beginn getestet.
Das ist also die Spitze der Schleife.
Das bedeutet also, dass es sich um eine Vortestschleife handelt. Und das bedeutet,
dass es 0-mal oder mehrfach im Körper ausgeführt werden kann.
Und wieder wird dies relevant sein, weil die do while-Schleife etwas anderes macht.
Wenn der Ausdruck mit false beginnt, wird keine
der Schleifenanweisungen im Body ausgeführt.
Deshalb ist es der Top-Test.
Wenn Sie also die erste Frage mit Nein beantworten, habe ich
keinen Hunger, dann werden Sie nie Sandwiches essen. Sie werden direkt mit dem Kaffee
oder der nächsten Codezeile fortfahren. Sie werden den Körper der Schleife nicht betreten.
Wenn die Schleifenbedingung als wahr beginnt, muss
der Schleifenkörper einen Mechanismus zum Ändern dieser Bedingung enthalten,
wenn die Schleife enden soll. Andernfalls haben Sie eine Endlosschleife.
Bei der for-Schleife, bei der Sie die Regelungsvariable der Schleife in einer einzelnen Anweisung ändern, ist dies in
der while-Schleife dasselbe, außer dass Sie dies im Body tun müssen.
Die while-Schleife wird
irgendwo die Regelvariable des Regelkreises initialisieren und
dann im Hauptteil des Codes ändern.
Wie ich bereits erwähnt habe, kann die while-Schleife alles tun, was eine for-Schleife tut. Es ist nur eine andere Syntax.
Und wieder ist die for-Schleife mehr kürzer. Sie können alles in einer Zeile
ausführen, während Sie in der while-Schleife diese drei Aufgaben in separaten Zeilen ausführen müssen.
In diesem Beispiel
ist int count also gleich 0. Dies ist die Regelungsvariable. Dies liegt außerhalb der while-Schleifenanweisung.
Wenn Sie eine for-Anweisung verwenden, wird diese wie vor dem ersten Semikolon in die for-Schleife eingefügt.
Hier wird die Regelungsvariable initialisiert.
Dann haben Sie das while-Schlüsselwort und in den Klammern den booleschen Ausdruck.
Dies wäre gleichbedeutend mit der for-Schleife, der zweiten Anweisung
direkt vor dem zweiten Semikolon.
Das ist es also, was Sie auf wahr oder falsch prüfen. Und wenn es wahr oder falsch ist, geben Sie den Körper der Schleife ein.
Wenn die Anzahl kleiner als 5 ist, drucken Sie die Anzahl aus.
Die nächste Codezeile danach ist sehr
wichtig, die Plus-Plus-Anzahl, da dadurch die Regelungsvariable geändert wird.
Sie müssen dies plus plus count tun, oder Sie werden die Schleife nie verlassen, da die
Bedingung oben besagt, ob die Anzahl kleiner als 5 ist. Wenn die Anzahl immer gleich 1 ist, haben
Sie eine Endlosschleife.
Das Plus Plus zählt also sehr, sehr wichtig.
Plus plus count Remember ist ein Inkrementierungsoperator.
Es heißt nur, dass Anzahl gleich Anzahl plus 1 ist.
Diese Schleife wird 5 Mal ausgeführt.
Es wird mit einer Zählung von 1, einer
Zählung von 2, einer Zählung von 3, einer Zählung von 4 und einer Zählung von 5 ausgeführt.
Sobald count gleich 6 ist, springt es aus der Schleife
und beendet keine weiteren Anweisungen im Body.
Auch hier sollten Sie in Bezug auf die for-Schleife denken.
Es ist nur die Regelkreisvariable und die Änderung der Regelkreisvariablen
ist nicht in der Deklaration des eigentlichen Regelkreises enthalten.
Es ist nicht alles in einer Zeile wie in der for-Schleife.
Hier ist ein weiteres Beispiel, in dem die Logik gesteuert wird, um die Schleife zu beenden.
In diesem ersten Beispiel hier, das ich gezeigt habe, ist dies ein Zählerregelkreis.
Es wird immer die gleiche Anzahl von Malen ausgeführt, was 5 ist.
Im nächsten Beispiel ist dies ein Beispiel, bei dem die Schleife 100-mal
oder 0-mal ausgeführt werden kann.
Die Bedingung, die wir hier in unserem while-Schlüssel auswerten, bei der num nicht gleich negativ
1 ist, hängt davon ab, was der Benutzer eingibt, da num
das ist, was der Benutzer eingibt.
Diese Schleife kann also 0 Mal ausgeführt werden, sie kann 100 Mal ausgeführt werden.
Es hängt alles von der Eingabe über die Tastatur ab.
Und dies wird als Sentinel-Regelkreis bezeichnet. Es ist nicht gegengesteuert.
Es basiert auf Logik und Variablen, die sich ändern können.
Während also num nicht gleich negativ 1 ist, wird num den Wert
gespeichert, den wir auf der Tastatur eingeben.
Wenn der Benutzer niemals eine negative 1 in die Tastatur eingibt, wird diese Schleife niemals beendet.
Also die gleiche Art von Syntax hier mit unserer Weile.
Unsere Regelungsvariable hier ist num. Wir initialisieren die 0 oben und
lesen dann das Ändern ein, um zu sehen, ob wir die Schleife basierend auf den Eingaben
des Benutzers über die Tastatur betreten werden.
Dann überprüfen wir es in der Klammer für das while-Schlüsselwort tatsächlich,
um festzustellen, ob es eine negative 1 ist.
Und dann müssen die Klammern im Hauptteil der while-Schleife mit den Klammern
nicht vorhanden sein, da es eine einzige Anweisung gibt, aber ich mag es, sie dort einzufügen.
Dann lesen wir auch die nächste Eingabe und speichern in num.
Wenn der Benutzer für diese nächste Eingabe eine negative 1 eingibt, springt er aus der Schleife.
Wenn dies nicht der Fall ist, wird die Ausführung fortgesetzt und sie werden aufgefordert, Informationen einzugeben.
Eine do while-Schleife unterscheidet sich ein wenig von
der for-Schleife in der while-Schleife, da sie als Post-Test-Schleife betrachtet wird.
In der while-Schleife wird der Body ausgeführt, solange die Bedingung erfüllt ist.
In der do while-Schleife, in der der Body zum ersten Mal bedingungslos ausgeführt wird,
bedeutet die do while-Schleife, da sich der Test
unten befindet, dass Sie die Schleife immer mindestens einmal ausführen.
Du wirst den Körper immer mindestens einmal ausführen,
es könnte mehr sein, aber es ist immer eins, es ist nie 0.
Weil die Bedingung zum Testen des Ausgangs unten ist.
Dies wird als Post-Test-Schleife bezeichnet. Es wird auch als Exit-Regelkreis bezeichnet.
Sie würden also die do a while-Schleife verwenden, wenn die Schleife mindestens
einmal eingegeben werden soll.
Normalerweise müssen Sie keine do while-Schleife verwenden, da Sie
in einer for-Schleife immer noch dasselbe tun können, wenn Sie möchten. Sie würden
den Code einfach außerhalb der Schleife platzieren.
Die do while-Schleife ist also nicht wirklich notwendig, aber es gibt Fälle, in denen Sie sie möglicherweise verwenden möchten.
Nach der ersten Ausführung wird der
Body nur ausgeführt, solange die Bedingung erfüllt ist. Nach der ersten Iteration der Schleife verhält
sie sich dann wie normale Schleifen. Es wird herausspringen, wenn die Bedingung falsch ist.
So sieht es also aus. Das do befindet sich oben und
der Test für die Bedingung befindet sich unten mit dem Schlüsselwort while.
Do ist also ein
neues Schlüsselwort, und dann werden Sie entweder Klammern oder Nicht-Klammern haben, je nachdem,
ob Sie mehrere Anweisungen im Text haben oder nicht.
Wenn Sie nur eine einzige Anweisung im Text haben, haben Sie keine Klammer. Sie müssen nur oben tun und
dann haben Sie die Weile unten in der Schleife.
Und innerhalb der Weile, in Klammern, haben Sie die Boolesche Bewertung, die die Bedingung
ist, die Sie überprüfen. Da diese Bedingung
jedoch ganz unten steht, wird garantiert, dass Sie die Anweisung immer mindestens einmal ausführen.
Das Beispiel links ist also eine Aussage, das Beispiel
rechts sind mehrere Aussagen. Sie haben also die Klammern, die geschweiften Klammern.
In diesem zweiten Beispiel sagen Sie erneut, dass Sie möglicherweise eine Eingabeaufforderung für das Kennwort haben, die
Benutzereingabe lesen und die Eingabe nicht dem Kennwort entspricht.
Sie werden jedoch immer mindestens einmal zur Eingabe dieses Kennworts aufgefordert.
Also ein anderes Beispiel für eine while-Schleife.
Das erste obere Beispiel hier ist ein Beispiel dafür,
wie die Schleife einmal
oder mehrmals ausgeführt werden kann, jedoch niemals 0.
Es hängt alles davon ab, was der Benutzer eingibt. Es wird immer mindestens einmal ausgeführt, aber dies
liest Eingaben von der Tastatur. Wir sehen die scanf-Funktion.
Und solange der Benutzer nicht 20 eingibt, führt
er diese Schleife aus.
Eine while-Schleife kann auch eine Zählerregelschleife sein, dh sie wird eine bestimmte Anzahl von Malen ausgeführt.
In diesem Fall wird es in diesem Beispiel viermal ausgeführt.
Wir haben eine int-Zahl von 4. Und dann haben wir oben zu tun,
und dann
haben wir die Klammern, weil wir mehrere Aussagen im Körper haben.
Und wir erhöhen diese Regelungsvariable im Körper, Zahl plus Plus.
Und dann ist die Bedingung für die Überprüfung immer noch unten. Sie werden dies also viermal ausführen.
Und Sie werden feststellen, dass das while-Schlüsselwort nicht in derselben Zeile wie die rechte geschweifte Klammer stehen muss.
Normalerweise ist es zwar so, muss es aber nicht sein.
Und das Schlüsselwort while unten endet ebenfalls in einem Semikolon. Das sollten Sie auch beachten.
Wir haben also alles über diese Schleifen gelernt. die for-Schleife, die while und do while.
Welche Schleifen sollten Sie verwenden?
Nun, als erstes müssen Sie sich entscheiden, welche Schleife Sie verwenden möchten, wenn Sie möchten, dass es
sich um einen Pre-Test oder Post-Test handelt. Möchten Sie, dass es mindestens einmal ausgeführt wird, oder möchten
Sie nicht, dass es mindestens einmal ausgeführt wird? Wenn Sie möchten, dass es mindestens
einmal ausgeführt wird, verwenden Sie do do while. Wenn dies keine Bedingung ist,
können Sie das for oder das while oder das do while verwenden.
Wenn Sie sich also zum größten Teil für eine Schleife entscheiden, handelt
es sich immer um eine Pre-Test-Schleife. Sie sollten sich von der do while-Schleife fernhalten.
In den meisten Fällen ist dies nur eine bessere Option. Es ist viel einfacher zu lesen.
Es ist viel besser zu schauen, bevor Sie tatsächlich eine Schleife machen.
Beginnen Sie einfach nicht mit dem Looping, es ist besser, diesen Zustand oben zu überprüfen.
Aus Gründen der Lesbarkeit ist die Schleife viel intuitiver, wenn sie sich im Test befindet.
Lassen Sie diese Schleife also zu Beginn überprüfen, verwenden Sie eine für oder eine Weile.
In vielen Fällen ist es wichtig, dass die Schleife vollständig übersprungen wird, wenn der Test zunächst nicht erfüllt wird.
Auch hier sollte der Test ganz oben stehen, da dies der Fall ist. Sie sollten nicht immer mindestens einmal ausführen.
Zum größten Teil möchten Sie möglicherweise immer nicht ausführen.
Sie sollten also eine Weile eine verwenden.
Nun kommt die Frage auf, welche ich für eine Weile verwenden soll.
Es ist wirklich eine Frage der persönlichen Präferenz. Es spielt keine Rolle, denn wie
ich zu Beginn dieser Vorlesung sagte, alles, was Sie in einer Weile tun können, können Sie in einer für tun.
Wenn Ihnen die for-Schleife einfach besser gefällt, ist die for-Schleife manchmal etwas
schneller, da alle Änderungen an der Schleifensteuerung sowie die Initialisierung und die
Ausgangsbedingung in einer Zeile stehen können.
Aber es liegt wirklich an dir.
Normalerweise verwende ich die for-Schleife für gegengesteuerte Schleifen.
Aber auch hier können Sie dasselbe verwenden. Wenn Sie tatsächlich eine for-Schleife verwenden möchten
und sie wie eine Weile aussehen lassen möchten, haben Sie
nur nicht den ersten und den dritten
Ausdruck, sondern nur den einzelnen. Das Semikolon für Semikolontests ist also dasselbe wie beim Test.
Dies zeigt Ihnen nur, dass die for in the while dasselbe tun können. Ändern Sie einfach
die Syntax ein wenig.
Wenn Sie tatsächlich eine while-Schleife verwenden möchten, diese sich jedoch wie eine
for-Schleife verhalten soll, müssen Sie ihr die Initialisierung voranstellen und Aktualisierungsanweisungen in den Hauptteil aufnehmen.
Was Sie also tun würden, ist so etwas, und Sie tun dies normalerweise immer für eine Weile.
Dies entspricht jedoch einer for-Schleife. Die Initialisierung erfolgt
außerhalb des Regelkreises der Regelgröße.
Die Testbedingung befindet sich in Klammern,
und dann aktualisieren Sie diese Regelungsvariable im Hauptteil der while-Schleife.
Und das ist das gleiche wie bei der Aktualisierung des For-Loop-Initialisierungstests und
dann beim Body. Es gibt keinen Unterschied.
Wie ich bereits erwähnt habe, verwende ich die for-Schleife möglicherweise etwas mehr für Zählerregelkreise.
Aber ich werde sowohl das for als auch das while austauschbar verwenden, je nachdem, wie ich mich an diesem Tag fühle.
Eine for-Schleife ist daher möglicherweise etwas geeigneter, wenn Sie eine
Variable in einer Zeile initialisieren und aktualisieren möchten.
Eine while-Schleife ist besser, wenn die Bedingungen anders sind.
Wiederum Zählerregelkreise für, Sentinel-Regelkreise möglicherweise die while-Schleife.
Und hier ist ein Beispiel für eine while-Schleife mit einer Sentinel-Regelschleife und
einer for-Schleife, die wieder dasselbe tut, oder eine for-Schleife für einen Zähler, der gesteuert wird.
Während die Schleife je nach Eingabe des
Benutzers viele Male ausgeführt werden kann, wird die for-Schleife gegengesteuert.
Das ist also die Weile auf der anderen Seite. Hoffentlich ist das klar.
Machen Sie sich mit diesen Schleifen vertraut, da Sie häufig Code wiederholen möchten.
Im Vortrag ein wenig über verschachtelte Schleifen und auch ein wenig
andere Mechanismen, um eine Schleife mit einer Pause zu verlassen
oder fortzufahren. Danke.