break oder verschachtelte ifs
-
ich seh darin kein problem
was auch gehen wuerde waehre
while(true){ ... if(Abbruchmöglichkeit 1 || Abbruchmöglichkeit 2) break; ... }kommt aber jeweils auf den code an, ich pers find das absolut in ordnung
es wuerde auch gehen
do{ ... }while(!Abbruchmöglichkeit 1 || !Abbruchmöglichkeit 2);ist aber ebenfals code bedingt
-
deine beiden Möglichkeiten gehen in meinem Fall nicht, die Abbruchbedinge sind benutzereingaben (wenn der Benutzer &exit eingibt soll er zur "Hauptkommandozeile" des Programms zurückkehren können. Ergo muss ich die Teile nacheinander abwickeln. (kein or oder else if möglich)
Break zählt also im Gegensatz zu goto nicht zu (allgemen angesehen, bis auf ein paar Ausnahmen) schlechtem Programmierziel sondern wäre hier richtig verwendet, ja?
-
Ja, mach ruhig, wenn das Programm so verständlicher ist.
Oder um Volkard zu Zitieren: "Schreiben Sie langweilige Programme!" Quelle
-
die seite die du da gepostest hast find ich total kaese
schleife solange keiner gewonnen hat mensch zieht wenn gewonnen ausgabe mensch hat gewonnen sonst rechner zieht wenn gewonnen ausgabe rechner hat gewonnenfind ich wirklich sehr verstaendlich!!
die seite liest sich als wuerde Volkard (wer is das ?) gotos gut heissen
-
break und continue sind beides Elemente von Schleifen und haben mit goto erstmal nix gemeinsam.
break sagt einfach nur: Beende diese Schleife.
continue sagt, ok, nächste Runde
Ich würds vergleichen mit dem else einer if-schleife, gehört halt einfach dazu;)
goto hingegen ist ein ganz anderes (und oft diskutiertes) Problem. imho ist goto ein Überbleibsel aus den Anfangstagen von C. In gut 15 Jahren C++ habe ich es noch kein einziges mal gebraucht... Es mag sicher Situationen geben wo ein goto sinnvoll ist...
-
Ok, danke an alle.
Mr Evil schrieb:
die seite die du da gepostest hast find ich total kaese
schleife solange keiner gewonnen hat mensch zieht wenn gewonnen ausgabe mensch hat gewonnen sonst rechner zieht wenn gewonnen ausgabe rechner hat gewonnenfind ich wirklich sehr verstaendlich!!
die seite liest sich als wuerde Volkard (wer is das ?) gotos gut heissenVolkard ist mod in diesem Forum. Ich ahbe auch mit seinem Kurs angefangen und etwas per Email zugemüllt (sry Volkard) Ich bezweifle, dass er ein Verfechter für goto ist. Das wo du da zitierst wird mit ner while schleife und ner if abfrage sehr einfach realisiert. Nix mit goto.
-
Mr Evil schrieb:
wer is das ?
Mr Evil schrieb:
die seite liest sich als wuerde Volkard gotos gut heissen
Darum geht es nicht. Die Zielsetzung ist, möglichst unkompliziert Programme zu schreiben, da diese verständlicher sind und weniger fehleranfällig. Und wenn goto diesem Zweck dient, dann kann man es auch verwenden. Die ganzen "goto ist böse" Rufe sollen einem eigentlich nur klar machen, dass es nicht gebräuchlich ist, da man andere Konstrukte hat, die besser zum Codefluss passen.
-
das Problem mit goto ist auch weniger das goto an sich, sondern eine typische denkweise der Progger die vor allem unter Anfängern sehr verbreitet ist: Wenn der Compiler es compiliert, dann muß es ja richtig sein...
Vieles in C++ ist Scope-Basiert. goto aber kann scopes "übespringen". Folgender Code ist rein syntaktisch daher vollkommen legal (wenn auch total Sinnfrei)
void testg() { for( int i=0; i<10; ++i) { int* x = new int; x_label: delete x; } for( int j=0; j<10; ++j) { goto x_label; } }Und führt natürlich garantiert zu einem Absturz. Bei den wenigen Zeilen sieht man den Fehler natürlich (hoffentlich) sofort. Aber jetzt stellt euch einfach vor das wären 1000 Zeilen oder mehr...
Ich würde übrigends drauf wetten das 2 von 3 Anfängern bei obigem Code dann das delete asukommentieren würden und dann sagen: Bug gefixed, läuft jetzt ohne Abzustürzen... (ok, wenn ich ehrlich bin denke ich 9 von 10, aber mein Therapeut sagt ich solle nicht so zynisch sein...)
-
gegen break und continue spricht nichts, kann man gerne verwenden. im beispiel sieht man ja schon, wie simpel der break-code zu lesen ist und was für ein klammer-gewüst die if-else kette wird. ausserdem spart man eine variable

-
schieb dir doch einfach n dildo in arsch du affe
-
ah ok, dann hab ich die page falsch verstanden {=
#zusammenfass:
goto = boese
break, continue = nicht boeseich wuerd sagen das liegt daran
mit goto kann man von seite 1 im code zu seite 215 zeile 23 springen
mit break beendet man immer die aktuelle schleife
welches da uebersichtlicher ist ist ja wohl klar
-
Mr Evil schrieb:
mit goto kann man von seite 1 im code zu seite 215 zeile 23 springen
Ich bezweifle, dass jemand 215-seitige Funktionen einsetzt. Und wenn, dann macht das goto den Braten auch nicht mehr fett :xmas1: