Kann "goto" wieder "in" werden?



  • oder ist es sogut wie tot und wird nie wieder in größere Erscheinung treten? 😕

    cu



  • Nein goto ist tot. Aber seine abarten sind ziemlich in:
    break und continue



  • was habt ihr gegen goto? ich benutzt das immer noch oft!!



  • Original erstellt von <kurt>:
    was habt ihr gegen goto? ich benutzt das immer noch oft!!

    goto http://www.c-plusplus.net/ubb/cgi-bin/ultimatebb.cgi?ubb=search



  • Bringen break und continue nicht Vorteile? Ich meine, ist folgendes falsch?

    // Das hier...
    int x = 0;
    
    for ( int i = 1 ; i < 1000000 ; ++i )
    {
        if ( array [ i ] == 'A' )
        {
            x = i;
            break;
        }
    }
    // ...ist doch eindeutig schneller als das hier (Wenn 'A' z.b. im Array an erster Stelle stehen würde):
    int x = 0;
    
        // -- deswegen, damit man wie oben das _erste_ vorkommen von 'A' im array   
           bekommt
    for ( int i = 1000000 ; i > 0 ; --i )
    {
    
        if ( array [ i ] == 'A' )
        {
            x = i;
        }
    }
    

    Oder gibts für dieses Problem einen Trick?

    MfG SideWinder



  • Da :

    Sicher was schneller, kürzer, ohne break/continue/goto, dafür schwerer zu lesen

    int i = 1;
    for (;i < 1000000, array[i] != 'A' ; ++i) ;
    


  • WIe wärs mit

    int i = 0, x = -1;
    bool Found = false;
    
    while (i < 1000000 && !Found)
    {
      if(array[i] == 'A')
      {
         x = i;
         Found = true;
      }
      i++;
    }
    

    Ist zwar eine Variable mehr, finde ich aber übersichtlicher.
    Ok ich geb zu ich nehme auch lieber die for Schleife 🙄



  • Original erstellt von KPC:
    **WIe wärs mit

    int i = 0, x = -1;
    bool Found = false;
    
    while (i < 1000000 && !Found)
    {
      if(array[i] == 'A')
      {
         x = i;
         Found = true;
      }
      i++;
    }
    

    Ist zwar eine Variable mehr, finde ich aber übersichtlicher.
    Ok ich geb zu ich nehme auch lieber die for Schleife 🙄**

    Laaaangsam :

    1. 3 Überprüfungen (i<10000000, !found, array[i] == 'A')
    2. 3 Variablen


  • Original erstellt von KPC:
    **WIe wärs mit

    int i = 0, x = -1;
    bool Found = false;
    
    while (i < 1000000 && !Found)
    {
      if(array[i] == 'A')
      {
         x = i;
         Found = true;
      }
      i++;
    }
    

    Ist zwar eine Variable mehr, finde ich aber übersichtlicher.
    Ok ich geb zu ich nehme auch lieber die for Schleife 🙄**

    das ist strukturierter pascal-nonsens.

    break ist schon ok, und return ist noch besser.



  • Ich frage mich, ob alle die heute so gegen goto wettern, je den Code gesehen haben, der zu dem 'Anti-goto-Hype' geführt hat[1].
    So wie einige heute gotos verwenden ist das absolut harmlos und führt zu einfachen und lesbaren Programmen.

    [1]: Ich kenne diese Codes nicht. Aber ich kenne procmail ...



  • Original erstellt von Daniel E.:
    **Ich frage mich, ob alle die heute so gegen goto wettern, je den Code gesehen haben, der zu dem 'Anti-goto-Hype' geführt hat[1].
    So wie einige heute gotos verwenden ist das absolut harmlos und führt zu einfachen und lesbaren Programmen.

    [1]: Ich kenne diese Codes nicht. Aber ich kenne procmail ...**

    Für einige \isin erfahrene_programmierer spricht IMHO auch nichts dagegen.



  • Original erstellt von Daniel E.:
    Ich frage mich, ob alle die heute so gegen goto wettern, je den Code gesehen haben, der zu dem 'Anti-goto-Hype' geführt hat[1].

    Gutes Argument... vielleicht sollte man nicht so oft Berichte über Softwareprobleme der 80er lesen, wenn man schon fast 2003 schreibt... 😉



  • GOTO bzw. das Assembler Äquivalent JMP ist in Ordnung, benutze ich oft. 😃 😃



  • Original erstellt von malfunction:
    GOTO bzw. das Assembler Äquivalent JMP ist in Ordnung, benutze ich oft. 😃 😃

    Zitat aus einem C++ Buch :

    Q : "Where should I use goto ?"
    A : "In your worst enemy's code !"



  • Also bei den Trollen? 🙄



  • @malfunction:

    GOTO bzw. das Assembler Äquivalent JMP ist in Ordnung, benutze ich oft.

    In ASM ist das ja normal, aber in C++? gelegentlich ok, aber häufig? Ich glaube du machst da was falsch. Hast du mal Basic programmiert?



  • gelegentlich ok

    😕 😕

    ganz ganz ganz selten ok



  • ich hab auch nichts gegen goto, versuche aber es nur zu benutzen wenn es nicht anders geht (z.b. zeikritische routinen).
    hab die erfahrung gemacht, das die meisten leute die gegen goto wettern nicht erklären können warum sie dagegen sind. die haben es dann meistens nur gehört oder gelesen und verbreiten es weiter um mit "fachwissen" zu glänzen (ähnlich wie das verpönte root-arbeiten unter linux). 😉



  • Original erstellt von tenim:
    ich hab auch nichts gegen goto, versuche aber es nur zu benutzen wenn es nicht anders geht (z.b. zeikritische routinen).
    hab die erfahrung gemacht, das die meisten leute die gegen goto wettern nicht erklären können warum sie dagegen sind. die haben es dann meistens nur gehört oder gelesen und verbreiten es weiter um mit "fachwissen" zu glänzen (ähnlich wie das verpönte root-arbeiten unter linux). 😉

    spagetie code, was soll man da noch viel argumentieren?



  • Original erstellt von Dimah:
    spagetie code, was soll man da noch viel argumentieren?

    Du weißt aber hoffentlich, daß dieser Spaghetti-Code in einer Zeit entstanden ist, als man kaum Möglichkeiten hatte Funktionen mit lokalen Variablen zu erstellen?

    Wenn heute jemand in einer 20 Zeilen langen Funktion mitten in einer Schleife mit return (also einem "goto lastline") rausspringt, so sehe ich da keinen Spaghetti-Code...

    Btw, eine Exception in C++ ist auch nur eine Art goto... übrigens kann man Exception-Handling auf Funktionsebene (für Fehlerhandling) sehr schön durch goto ersetzen.


Anmelden zum Antworten