Ich habe nie verstanden, warum eine do while -Schleifen benötigt werden. Ich verstehe, was sie tun, nämlich den Code auszuführen, den die while-Schleife enthält, ohne vorher zu prüfen, ob die Bedingung wahr ist.
Aber ist nicht der folgende Code:
%Vor%Das gleiche wie:
%Vor%Vielleicht bin ich sehr blöd und verpasse etwas Offensichtliches, aber ich sehe den Vorteil nicht, zu tun, während über meinem obigen Beispiel funktioniert.
Ihr Beispielcode ist falsch:
%Vor%Dies wäre die tatsächliche Form:
%Vor%Es ist richtig, dass es den inneren Codeblock vor dem Überprüfen der Bedingung ausführt, aber es muss den inneren Codeblock nicht so duplizieren, wie Sie ihn haben. Das Do / While-Konstrukt ist (wie Sie bereits gesagt haben) eine Möglichkeit, um sicherzustellen, dass ein Codecode mindestens einmal anstelle von 0 oder mehr Mal ausgeführt wird (abhängig von der Bedingung).
Wie Sie sehen, mussten Sie im zweiten Beispiel die selbe Zeile wiederholen. Wenn Sie beibehalten, möchten Sie wahrscheinlich, dass diese beiden Zeilen identisch sind, aber Sie haben sich wiederholt .
Stellen Sie sich nun vor, dass es sich um einen großen Block und nicht um eine Linie handelt, die nicht nur unnötigen visuellen Raum erfordert, sondern auch schwieriger zu pflegen und anziehen Inkonsistenzen .
tun, während wird mindestens einmal ausgeführt werden - lassen Sie es tun, während ... while as while erfordert die Bedingung getroffen, um überhaupt zu starten ..
%Vor% Der Unterschied ist am wichtigsten, wenn mehr als eine Codezeile mindestens einmal ausgeführt werden muss. Das Simulieren einer do-Schleife mit einer while-Schleife würde zu einer wesentlichen Code-Duplizierung führen, die immer schlecht ist. Zugegeben, eine bessere Lösung besteht darin, diesen Code in eine Methode umzuformen und dann einfach denselben Methodenaufruf vor und in der Schleife zu haben, aber viele Leute mögen selbst die doppelte Vervielfältigung nicht und mit dem Schlüsselwort do
wird eindeutig erklärt: "Dies ist ein Fuß Kontrollschleife ".
Also, grundsätzlich, Lesbarkeit und grundlegende SE-Prinzipien.
Was Sie vermissen ist, dass Ihre Verwendung von do...while
über 100% FALSCH ist!
Eine do...while
-Schleife in Java zum Beispiel sieht ungefähr so aus:
Sehen Sie, dass dort kein zweiter Block fehlt? Sehen Sie, wie die while
die Anweisung vollständig beendet? Was nun passiert, ist, dass der Code im {...}
-Paar zwischen do
und while
ausgeführt wird, dann someBooleanCondition
wird getestet und wenn es wahr ist, wird der Code Block erhalten erneut ausgeführt. Und wieder. Und wieder. Bis someBooleanCondition
wird falsch getestet.
Und vielleicht werden Sie an diesem Punkt verstehen, warum wir beide Formen von Schleifen haben. Der obige Code könnte übersetzt werden zu:
%Vor%Dieser Code erfordert jedoch, dass Sie denselben (potenziell großen und komplizierten) Code zweimal eingeben und die Tür für weitere Fehler geöffnet lassen. Daher ist eine Bottom-Test-Schleife anstelle einer Top-Test-Schleife erforderlich.
Zuerst ist Ihre do..while
Syntax falsch. Es ist so:
Dies ist nützlich, wenn Sie den Schleifenkörper mindestens einmal ausführen möchten, ohne seine Bedingung für die Dauerhaftigkeit zu bewerten. Nehmen wir beispielsweise an, Sie möchten eine Schleife schreiben, in der Sie den Benutzer zur Eingabe auffordern und abhängig von der Eingabe einen Code ausführen. Sie möchten dies mindestens einmal ausführen lassen und dann den Benutzer fragen, ob er fortfahren möchte. In solchen Fällen führt do..while
loop zu einem geringeren und saubereren Code als eine while
loop.
Obwohl
%Vor%könnte als
geschrieben werden %Vor%ersteres ist verständlicher.
Tags und Links language-agnostic while-loop do-while