weiterspringen zum Ende es Schleifen durchgangs?
-
for(x=1;x<5;x++) { tab; if(x==Karte1.x && y==Karte1.y) { printf("%c",memory[Karte1.x][Karte1.y]); } else if(x==Karte2.x && y==Karte2.y) { printf("%c",memory[Karte2.x][Karte2.y]); } else { for(z=0;z<16;z++) { if(x==Gezogen[z].x && y==Gezogen[z].y) { printf("%c",deleted); break; } } } printf("%c",flipside); }
das ist eine schleife die ich in einem meiner programme brauch. ist unrelevant was sie macht, nur wie man sehen kann wurde quasi "else" schon einmal verwendet wodurch ich das letzte
printf("%c",flipside);
in keine else schleife stecken kann, obwohls quasi genau "else" erfüllen soll.
Meine frage ist, gibt es einen Befehl der quasi Das ende des schleifen durchgangs einleiten würde? (würde quasi gut als else ersatz fungieren)
dass man bei folgendem beispiel
for(x=0;x<13;x++) { if(x==4) stop; y++; }
wenn x=4 ist halt dieser befehl (habs einfach mal stop genannt) in kraft tritt und automatisch die schleife neubeginnt (also quasi den aktuellen durchlauf beendet und somit den durchlauf "x=5" beginnt)ö
weiss da jemand ne lösung?
-
Der Befehl heißt
continue
-
ach continue geht dafür auch? dachte das ginge nur bei switch..
danke ^^
-
ysparrow schrieb:
ach continue geht dafür auch? dachte das ginge nur bei switch..
Bei
switch
geht dochbreak
als Abbruch eines Falles? Oder seit wann kann man dacontinue
benutzen?
-
afaik macht break doch den switch zuende und continue lässt die nächste option mit überprüfen, oder? kp bin eh mehr fan von if else xD
-
YamiSparrow schrieb:
afaik macht break doch den switch zuende und continue lässt die nächste option mit überprüfen, oder? kp bin eh mehr fan von if else xD
continue springt zum schleifenkopf
break springt hinter die schleife
-
Hallo ysparrow,
natürlich kann man mit continue eine Schleife beenden. Aber das ist alles andere als schöne Programmierung! Auch ein break in einem if ist nicht besonders toll...
Wenn Du Code produzieren willst, den man einfach versteht würde ich Deine Beispiele in etwa so schreiben:char gezogenFlag; for(x=1;x<5;x++) { tab; // was auch immer das ist... if(x==Karte1.x && y==Karte1.y) { printf("%c",memory[Karte1.x][Karte1.y]); } else if(x==Karte2.x && y==Karte2.y) { printf("%c",memory[Karte2.x][Karte2.y]); } else { for(z=0, gezogenFlag = 0;z<16 && gezogenFlag == 0;z++) { if(x==Gezogen[z].x && y==Gezogen[z].y) { printf("%c",deleted); gezogenFlag = 1; } } if (gezogenFlag == 0) { // for schleife wurde durchlaufen, ohne dass x und y gefunden wurden printf("%c", flipside); } } }
char flag; for(x=0, flag = 0;x<13 && flag == 0;x++) { if(x==4) { flag = 1; } else { y++; } }
Schaut zwar vielleicht auf den ersten Blick umständlicher aus, aber wenigstens übersieht man nicht so schnell ein continue oder break...
-
Die flow-control schlüsselwörter wurden uns nicht ohne grund von unserem schöpfer gegeben!
Diese machen es viel leichter ersichtlich, dass die schleife abgebrochen wird anstatt irgendwelche flags zu benutzten, die später meisten in einem hä enden und auch noch die geschwindigkeit durch die höhere anzahl an überprüfungen verringenr.
-
Ampfing schrieb:
natürlich kann man mit continue eine Schleife beenden. Aber das ist alles andere als schöne Programmierung! Auch ein break in einem if ist nicht besonders toll...
mit continue kann man den nächsten schleifendurchlauf starten. und der rest ist auch ausgemachter blödsinn^^
-
goto
-
man kanns auch übertreiben mit dem "strukturierten programmierung"
genauso: sag niemals - NIE GOTO
goto wäre zwar schwachsinnig aber es macht in manchen situationen durchaus sinn.
-
Ampfing schrieb:
Hallo ysparrow,
natürlich kann man mit continue eine Schleife beenden. Aber das ist alles andere als schöne Programmierung! Auch ein break in einem if ist nicht besonders toll...
Wenn Du Code produzieren willst, den man einfach versteht würde ich Deine Beispiele in etwa so schreiben:
[...]
Schaut zwar vielleicht auf den ersten Blick umständlicher aus, aber wenigstens übersieht man nicht so schnell ein continue oder break...Das sieht nicht nur umständlicher aus, sondern ist es auch. Wieso sollte man Flags setzen, wenn es mit einfachen
continue
undbreak
-Anweisungen auch geht? Und was das übersehen anbelangt, da hätte ich bei Flags eher Zweifel, ob man immer überblickt, wann welches Flag gesetzt ist und wo was abgefragt wird. Aber du darfst es natürlich gerne kompliziert machen.Stelfer schrieb:
goto wäre zwar schwachsinnig aber es macht in manchen situationen durchaus sinn.
Zum Beispiel, wenn man aus tief verschachtelten Schleifen heraus springen will. Dennoch würde ich grundsätzlich eher auf
goto
verzichten. Es führt schneller zu Problemen, als man denkt.Stelfer schrieb:
YamiSparrow schrieb:
afaik macht break doch den switch zuende und continue lässt die nächste option mit überprüfen, oder? kp bin eh mehr fan von if else xD
continue springt zum schleifenkopf
break springt hinter die schleifeEs ging um
continue
undbreak
inswitch
-Blöcken, nicht in Schleifen. Undcontinue
kann man in diesem Falle nicht anwenden.
-
Nexus schrieb:
Ampfing schrieb:
Hallo ysparrow,
natürlich kann man mit continue eine Schleife beenden. Aber das ist alles andere als schöne Programmierung! Auch ein break in einem if ist nicht besonders toll...
Wenn Du Code produzieren willst, den man einfach versteht würde ich Deine Beispiele in etwa so schreiben:
[...]
Schaut zwar vielleicht auf den ersten Blick umständlicher aus, aber wenigstens übersieht man nicht so schnell ein continue oder break...Das sieht nicht nur umständlicher aus, sondern ist es auch. Wieso sollte man Flags setzen, wenn es mit einfachen
continue
undbreak
-Anweisungen auch geht? Und was das übersehen anbelangt, da hätte ich bei Flags eher Zweifel, ob man immer überblickt, wann welches Flag gesetzt ist und wo was abgefragt wird. Aber du darfst es natürlich gerne kompliziert machen.Stelfer schrieb:
goto wäre zwar schwachsinnig aber es macht in manchen situationen durchaus sinn.
Zum Beispiel, wenn man aus tief verschachtelten Schleifen heraus springen will. Dennoch würde ich grundsätzlich eher auf
goto
verzichten. Es führt schneller zu Problemen, als man denkt.Stelfer schrieb:
YamiSparrow schrieb:
afaik macht break doch den switch zuende und continue lässt die nächste option mit überprüfen, oder? kp bin eh mehr fan von if else xD
continue springt zum schleifenkopf
break springt hinter die schleifei
m so sorry ;) hast recht Es ging um
continueund
breakin
switch-Blöcken, nicht in Schleifen. Und
continue` kann man in diesem Falle nicht anwenden.