Warum eine "do while" -Schleife verwenden? [geschlossen]

7

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.

    
Stanni 09.06.2010, 06:14
quelle

9 Antworten

14

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).

    
inkedmn 09.06.2010, 06:20
quelle
16
  • 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 .

bakkal 09.06.2010 06:22
quelle
6

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%     
Dan Heberden 09.06.2010 06:16
quelle
2

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.

    
Kilian Foth 09.06.2010 06:20
quelle
2

Was ist mit:

%Vor%




Natürlich schreibst du das nicht:

%Vor%



Und Sie werden dann gezwungen sein, eine do-while-Schleife zu verwenden
Gott segne es!

Bearbeiten:
Oder Sie verwenden Prozeduren ..

    
Betamoo 09.06.2010 07:39
quelle
1

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:

%Vor%

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.

    
JUST MY correct OPINION 09.06.2010 06:21
quelle
1

Zuerst ist Ihre do..while Syntax falsch. Es ist so:

%Vor%

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.

    
Naveen 09.06.2010 06:21
quelle
0

Es ist eine bessere Art, Code zu schreiben:

%Vor%

Kann mit do-while als:

geschrieben werden %Vor%

Es gibt bessere Beispiele für "do-while", aber ich konnte mich zu diesem Zeitpunkt nicht erinnern.

    
A9S6 09.06.2010 06:22
quelle
0

Obwohl

%Vor%

könnte als

geschrieben werden %Vor%

ersteres ist verständlicher.

    
August Karlstrom 24.07.2012 15:07
quelle