Lässt sich jede For-Schleife auch durch eine While-Schleife realisieren und umkehren (in der Programmiersprache C)?

... komplette Frage anzeigen

3 Antworten

Ja.

while ([condition]) [code];

Lässt sich umschreiben zu.

for ( ; [condition] ; ) [code];

Umgekehrt.

for ([init]; [condition]; [step]) [code];

Lässt sich umschreiben zu.

[init]; while ([condition]) { [code]; [step]; }

Sollte jeweils äquivalent sein. (Die fett gedruckten Dinge sind Platzhalter für die entsprechenden Zuweisungen, etc.)

"Schön" ist das allerdings nicht.

Theoretisch müsste das gehen... Aber man erspart sich manchmal eine Menge Arbeit wenn man einfach die richtige Schleife nimmt.

Kommentar von NoHumanBeing
04.12.2015, 15:26

"Eine Menge Arbeit" vermutlich nicht, aber man macht es sich selbst (und vor allem anderen) sehr viel einfacher, den Code zu verstehen, wenn man die "richtige" Schleife verwendet.

Es gibt keinen Grund, Code "unleserlicher" zu schreiben, als nötig.

2
for (init; test; incr) {body};

ist äquivalent zu

init; while(test) {body; incr};

(vermutlich setzen praktisch alle Compiler oder sogar ihre Präprozessoren eine for-Schleife entsprechend um)

Da du in einer for-Schleife auch init und incr leer lassen kannst, geht die Umwandlung auch umgekehrt.

Der Vorteil der for-Schleife liegt darin, dass es übersichtlicher ist, die Operationen, die sich auf eine Schleifenvariable beziehen, an einer Stelle zusammengefasst zu haben.

Was möchtest Du wissen?