Skip to content
Tiantan
Articles

Was sind die Unterschiede zwischen einer while-Schleife und einer for-Schleife?

On Februar 17, 2021 by admin

Was sind die Unterschiede zwischen einer while-Schleife und einer for-Schleife? Es scheint mir, dass sie gleich sind.

Kommentare

  • Versuchen Sie, beide für mehrere " fordert " heraus. Sie ' werden schnell feststellen, dass ein Schleifenkonstrukt für eine bestimmte Situation besser geeignet ist als andere Schleifenkonstrukte. Tatsächlich gibt es in einigen Sprachen (wie in Javascript) zwei Arten von while-Schleifen mit eigenen (speziellen) Anwendungsfällen. Tatsächlich können beide / alle drei verwendet werden, um ein Ziel zu erreichen, aber nur einer kann die Aufgabe ohne zu viel semantischen " Overhead " erledigen (erleichtert das Verständnis zB)
  • Sie sind im Grunde gleich. Eine for -Schleife ist nur Syntaxzucker und unterstützt eine Teilmenge von Anwendungsfällen, die while unterstützt. Manchmal wird auf " Syntaxzucker " herabgesehen, aber es sollte wirklich als eine Möglichkeit angesehen werden, saubereren und leichter verständlichen Code zu erstellen .
  • Up-Voted! Keine Frage ist zu albern, wenn Sie lernen.
  • @StevenBurnap: Sie sind im Grunde nicht gleich. Eine Sprache mit nur while-Schleifen und Bedingungen ist Turing-vollständig, eine Sprache mit nur for-Schleifen ist nicht ' t. Eine Sprache mit while-Schleifen kann jede µ -rekursive Funktion berechnen, eine Sprache mit for-Schleifen kann nur primitiv-rekursive Funktionen berechnen. Eine Sprache mit for-Schleifen kann nur Programme ausdrücken, die immer beendet werden, sie kann keine Nichtbeendigung ausdrücken.
  • @J ö rgWMittag Nun, das hängt von der for-Schleife ab ' t es jetzt nicht. Obwohl man argumentieren könnte, dass eine C for -Schleife tatsächlich eine while -Schleife in ausgefallener Kleidung ist.

Antwort

Die Schleife while wird normalerweise verwendet, wenn Sie etwas wiederholen müssen, bis eine bestimmte Bedingung erfüllt ist :

inputInvalid = true; while(inputInvalid) { //ask user for input invalidInput = checkValidInput(); } 

Andererseits wird die Schleife for normalerweise verwendet, wenn Sie eine bestimmte Zahl iterieren müssen von Zeiten:

for(var i = 0; i < 100; i++) { ...//do something for a 100 times. } 

Sie können sie austauschbar verwenden, wenn Sie möchten:

inputInvalid = true; for(;;) { if(!inputInvalid) { break; } //ask user for input invalidInput = checkValidInput(); } 

Oder

inputInvalid = true; for(;inputInvalid;) { //ask user for input invalidInput = checkValidInput(); } 

Und:

var i = 0; while(i < 100) { //do your logic here i++; } 

Kommentare

  • Wie Sie jedoch sehen können, erzeugen diese nicht standardmäßigen Verwendungen weniger eleganten, schwerer zu lesenden Code. Unter der Haube sind die verschiedenen Schleifentypen alle gleich, und versuchen Sie, diejenige zu verwenden, die syntaktisch am besten zu dem passt, was Sie erreichen möchten.
  • Im folgenden Code kann ich auch sagen, etwas zu tun 10 mal. (Es füllt Ihr Argument wie für die Schleife @npinti) var count = 0; while (count < 10) {document.writeln (" schleift weg! ") ;; count ++; }
  • Beachten Sie, dass Sie in C Ihr drittes Beispiel als for(invalidInput = checkValidInput();inputInvalid;invalidInput = checkValidInput()){} umschreiben können. Aber ja, Ihr grundlegender Punkt ist völlig richtig, und eine for -Schleife ist wirklich nur Syntaxzucker. Einige Sprachen verzichten ganz darauf. Die C for -Schleife ist ein seltsames Tier, im Gegensatz zu Sprachen wie Pascal, in denen die iv id = „a49e8ba4e6“ eher eine bastardisierte while ist „>

-Schleife kann nur verwendet werden, um diskrete Ganzzahlen zu durchlaufen.

  • was bedeutet das für (;;)? Ich kann keine Erklärung für for (;;) it finden.
  • @mistichor die C / C ++ for-Schleife benötigt 3 Anweisungen für (;;) ist eine for-Schleife mit 3 leeren Anweisungen, das Semikolon trennt die leeren Anweisungen .
  • Antwort

    Es gibt einen grundlegenden Unterschied zwischen den beiden: mit a for Schleife, Sie müssen vorher wissen, wie oft der Schleifenkörper ausgeführt wird. Dies ist eine große Einschränkung, da es viele Probleme gibt, bei denen Sie das einfach nicht wissen. Manchmal wissen Sie nicht einmal, ob diese Zahl endlich ist !

    Stellen Sie sich zum Beispiel ein Programm vor, das den Benutzer auffordert, eine Reihe von Namen einzugeben. Sagen wir, ein Patientenmanagementsystem für einen Zahnarzt. Wie würden Sie vorher wissen, wie viele Patienten der Zahnarzt aufnehmen wird? Sie können keine for -Schleife dafür schreiben.

    Kommentare

    • Es gibt verschiedene Möglichkeiten, eine for-Schleife vorzeitig zu beenden. Sie müssen also nur wissen, wie oft Sie die Schleife maximal durchlaufen möchten. Wenn Sie ' bereit sind, den bedingten Teil der for-Schleife falsch zu verwenden, können Sie alles tun, was eine while-Schleife könnte.
    • Welche Sprache sprichst du?In Pascal hat Ihr Argument einen gewissen Wert (das Hardcodieren einer großen Zahl als Grenze ist hässlich), aber in C können Sie beliebige Bedingungen mit for verwenden. Kein Unterschied zwischen for(;xxx;) und while(xxx).
    • Abwärtspfeil. Chaos ist genau richtig. initializer; gefolgt von while(condition){ ... increment;} entspricht for(initializer; condition; increment){ ... }.

    Written by admin

    Schreibe einen Kommentar Antworten abbrechen

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

    Neueste Beiträge

    • Mit einem Balun mit einem resonanten Dipol
    • Was ist der Unterschied zwischen “ kann nicht ” und “ kann nicht ”? [duplizieren]
    • Können Sie bei JFK auf Inlandsflügen zwischen den Terminals auf der Luftseite wechseln?
    • “ Sehr geschätzt ” oder “ sehr geschätzt ”
    • Was bedeutet ' abstrakte Ideen '? [geschlossen]

    Archive

    • Februar 2021
    • Januar 2021
    • Dezember 2020
    • November 2020
    • Deutsch
    • Nederlands
    • Svenska
    • Norsk
    • Dansk
    • Español
    • Français
    • Português
    • Italiano
    • Română
    • Polski
    • Čeština
    • Magyar
    • Suomi
    • 日本語
    • 한국어

    Copyright Tiantan 2021 | Theme by Theme in Progress | Proudly powered by WordPress

    Back to top