Kann "goto" wieder "in" werden?
-
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 mitint 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 :
- 3 Überprüfungen (i<10000000, !found, array[i] == 'A')
- 3 Variablen
-
Original erstellt von KPC:
**WIe wärs mitint 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?
-
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.
-
spaghetticode ist nur eine mögliche auswirkung und auch nur wenn man goto exessiv benutzt. ich gehe von einmaliger nutzung im notfall aus.
-
int i = 1; for (;i < 1000000, array[i] != 'A' ; ++i) ;
wann wird sich endlich rumgesprochen haben, wie der 'op,' funktioniert?
hier ist ein && gemeint, sonst wirds wohl irgendwann ne schutzverletzung geben.edit: zum thema: ich hatte noch nie wirklich das beduerfnis, ein goto zu verwenden. koennts mir hoechstens vorstellen, wenn man aus einer inneren schleife raushuepfen will. aber meist tut man eh die suche oder was immer diese beiden schleifen tun in eine extra funktion, und dann tuts auch ein return.
[ Dieser Beitrag wurde am 02.12.2002 um 14:20 Uhr von PeterTheMaster editiert. ]
-
Im Assembler-Code und später Maschinencode werden doch sowieso gotos verwendet, ausserdem lässt sich leicht beweisen, dass man mit gotos dasselbe machen kann wie mit while oder loop-Schleifen.
Es sieht ohne zwar besser aus, kann aber manchmal ohne auch etwas lästig sein !