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.
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.
Ja, leicht.
while (cond) S;
for(;cond;) S;
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
Was ich an dieser Antwort mag, ist, dass es gleichzeitig zeigt, dass es möglich ist und warum es sinnlos ist, es zu tun. –
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.
Die while
Schleife und die klassische for
Schleife ist austauschbar:
for (initializer; loop-test; counting-expression) {
…
}
initializer
while (loop-test) {
…
counting-expression
}
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.
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.
Kommt ganz auf die Programmiersprache an. Eine echte For-Schleife kann nicht. – jpfollenius
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? –
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