2009-10-03 8 views
6

Ich weiß, dass eine while-Schleife alles kann, was eine for-Schleife kann, aber kann eine for-Schleife alles, was eine while-Schleife kann?Beispiel einer While-Schleife, die keine For-Schleife sein kann

Bitte geben Sie ein Beispiel an.

+2

Kommt ganz auf die Programmiersprache an. Eine echte For-Schleife kann nicht. – jpfollenius

+1

Angenommen, eine Sprache mit unbegrenzten ganzen Zahlen und einer "echten for-Schleife", wie Smasher sagt, und jeder, der C missverstanden zitiert - schlimmer, ich denke, dass sie es ernst meinen -, erwäge, die erste Primzahl größer als eine gegebene Zahl n zu berechnen . Ich weiß, wie man es mit While-Loops macht. Kannst du es nur mit for-Schleifen machen? –

+0

Mit dem Ausdruck "real for loop" konstruieren Sie eine Tautologie. Eine "echte for-Schleife" ist eine verkrüppelte while-Schleife und ist daher weniger fähig, aber Sie haben nichts von der Übung gelernt. – dmckee

Antwort

16

Ja, leicht.

while (cond) S; 

for(;cond;) S; 
+2

Ich kann auch hinzufügen, dass dies gilt in C, C++, Java, C# und wahrscheinlich viele andere Sprachen, die stark von C, aber nicht z. Pascal. – Steve314

+1

Was ich an dieser Antwort mag, ist, dass es gleichzeitig zeigt, dass es möglich ist und warum es sinnlos ist, es zu tun. –

0

In C-ähnlichen Sprachen können Sie für Schleifen wie diese erklären:

for(; true;) 
{ 
    if(someCondition) 
     break; 
} 

In Sprachen, in denen for strenger ist, Endlosschleifen ein Fall wäre, erfordert eine while Schleife.

3

Die while Schleife und die klassische for Schleife ist austauschbar:

for (initializer; loop-test; counting-expression) { 
    … 
} 

initializer 
while (loop-test) { 
    … 
    counting-expression 
} 
1

Wenn Sie gebunden und Schritt eine befristete und erlauben keine Änderung der Schleifenvariable in der Körper der Schleife, dann Schleifen zu primitiv entsprechen rekursive Funktionen.

Aus theoretischer Sicht sind diese schwächer als allgemeine while-Schleifen, zum Beispiel kann man die Ackermann-Funktion nicht nur mit solchen for-Schleifen berechnen.

Wenn Sie eine obere Grenze für die Bedingung in einer while-Schleife angeben können, um true zu erhalten, können Sie sie in eine for-Schleife konvertieren. Dies zeigt, dass es im praktischen Sinn keinen Unterschied gibt, da man leicht eine astronomisch hohe Grenze, sagen wir länger, als das Leben des Universums bereitstellen kann.

0

While loop hat nicht so viel Flexibilität wie ein for loop hat und for-Schleifen sind lesbarer als while-Schleifen. Ich würde meinen Standpunkt mit einem Beispiel demonstrieren. Eine for-Schleife haben kann Form wie:

for(int i = 0, j = 0; i <= 10; i++, j++){ 
// Perform your operations here. 
} 

Eine while-Schleife nicht wie die oben für die Schleife und heute sind die meisten modernen Sprachen erlauben auch eine for each loop verwendet werden kann.

Meiner Meinung nach könnte ich voreingenommen sein bitte vergib dafür, man sollte nicht while loop verwenden, solange es möglich ist, den gleichen Code mit for loop zu schreiben.

Verwandte Themen