Schluesselwort 'continue'



  • mach ne bool-variable die dann in der äußeren Schleife continue gibt



  • wo ist das prob mit goto? gehört zum standard. wenn es klar ist, was gemeint ist. das ist dann noch lange kein spageti code. besser als boolsche hilfsvariablen. 🤡



  • Raptor schrieb:

    Im Moment schrecke ich noch vor goto-Statements zurueck, aber wenn es nicht anders geht....

    continue ist auch nur ein goto.

    Am besten du vermeidest solche hässlich verschachtelten Schleifen und gliederst das in einzelne Funktionen.



  • Hi,

    in genau solchen Situation kann ein goto erheblich die Übersichtlichkeit erleichtern und goto ist nicht nie nutzlos, sonst wäre es längst als deprecated eingestuft worden.

    MfG Eisflamme



  • continue ist auch nur ein goto.

    Kann man mit continue also beliebig in der Gegend herumspringen?



  • Bashar schrieb:

    continue ist auch nur ein goto.

    Kann man mit continue also beliebig in der Gegend herumspringen?

    Nein, aber es ist equivalent zu

    while (foo) {
    	goto cont;
    	//...
    cont: 
    }
    

    🤡



  • Bashar schrieb:

    continue ist auch nur ein goto.

    Kann man mit continue also beliebig in der Gegend herumspringen?

    kann man nicht. kann man mit goto auch nicht. man kann nicht in einen block hinter nen konstruktoraufruf hüpfen, man kann nicht in andere funktion rein. continue ist noch ein wenig eingeschränkter, aber an sich auch ein goto (mit festgelegtem ziel).
    insbesondere, weil die puristen unter uns pascallern ja ohne continue und break arbeiten können.
    goto, continue und break lassen sich nicht fein in struktogrammen unterbringen. daraus folgt offensichtlich, daß sie an sich gleich (gleich böse!) sind. (und hier liegt ein vorteil von uml-klassenstrukturdiagrammen. sie erlauben fast keine aussage über die kunste des programmierens, da sie so wenig damit zu schaffen haben.)



  • Shlo schrieb:

    Nein, aber es ist equivalent zu

    while (foo) {
    	goto cont;
    	//...
    cont: 
    }
    

    🤡

    und

    do 
     cmd 
    while(cond);
    

    ist äq zu

    :start
    {
     cmd
    }
    if(cond)
     goto start;
    

    und

    while(cond)
     cmd
    

    ist äq zu

    if(cond)
     do
      cmd
     while(cond)
    //ja, es gibt viele andere möglichkeiten
    

    und auf gleiche weise kriege ich vermutlich leicht else, break, continue, for und switch weg und löse es zu if(cond) goto label und {cmd} auf.

    sind wir nicht alle ein bißchen goto?



  • womit wir wieder beim guten alten spagetticode wären wo jeder dahin springt wo es ihm passt.
    dann können wir eigentlich auch funktionen weglassen weil das sind ja im prinzip auch gotos und dann sind wir programmiertechnisch vor der zeit, wo nikolaus wirth pascal entwickelt hat
    *hach*



  • Selbst im && Operator steckt ein JMP-Befehl. Na und, ihr wißt doch, dass es darauf nicht ankommt, was soll das also?



  • Bashar schrieb:

    continue ist auch nur ein goto.

    Kann man mit continue also beliebig in der Gegend herumspringen?

    Ja nee.. Was ich sagen wollte ist, wenn er nach einem Befehl "continue 2" sucht, kann er genauso gut auch goto nehmen.

    Und so toll goto auch sein kann, ich finde es trotzdem selten gut als Ratschlag. Möchte nicht wissen, wie der Code dann am Ende im Ganzen aussieht. Bei verschachtelten Schleifen, Sprüngen nach oben und nach unten... gibt natürlich immer Ausnahmen.



  • Bashar schrieb:

    Selbst im && Operator steckt ein JMP-Befehl. Na und, ihr wißt doch, dass es darauf nicht ankommt, was soll das also?

    oh, jetzt wo du es sagst...
    natürlich soll man auch && meiden. das macht den code eh nur unleserlich. und ist im übrigen fast ein goto.


Anmelden zum Antworten