Dead_Rabbit Skrevet 21. mai 2004 Forfatter Del Skrevet 21. mai 2004 Det var også fordi jeg syns det var å sløse litt, det er jo ikke noen grunn til å fortsette å gå gjennom to tabeller hvis jeg allerede har funnet det jeg lette etter, og det ikke var noen flere koordinater med samme navn. Men det kan jo være greit(som Myubi sa) å ta med evt. andre koordinater som har navn. Lenke til kommentar
☀ ❄ Skrevet 21. mai 2004 Del Skrevet 21. mai 2004 Det beste ville kanskje være å bruke en std::map, og ikke tillate flere koordinater med samme navn. Men programmet kjører raskt nok som det gjør, så det er ikke noe stort problem, i alle fall ikke i et så lite og greit program. Lenke til kommentar
Manfred Skrevet 23. mai 2004 Del Skrevet 23. mai 2004 Legg inn en label etter den ytre loopen du, og bruk goto. Blir stygt å hoppe til et vilkårlig sted i koden, men for å bare komme ut av en nestet loop er vel goto en del klarere enn å endre variabler eller whatever.. Er jo som regel bedre å ordne koden slik at man slipper bruke goto, men i noen tilfeller er det beste løsning. jeg kan ennå ikke si at jeg har kommet til et punkt der jeg har funnet ut "hmm... her er nok goto beste alternativ"... å si dette til en programvareutvikler er som å banne i kirken... Lenke til kommentar
søppel Skrevet 23. mai 2004 Del Skrevet 23. mai 2004 (endret) Hm, Hvis det er meningen at den -ikke- skal søke videre når den har funnet et treff er det jo greit å sette i og k til 100 (og coord_found til true i samme slengen) som en nevnte ovenfor her? (Mulig jeg har misforstått og det -er- meningen at du vil søke videre etter flere treff? Det kommer ikke helt klart frem i trådstarters siste post synes jeg ..) Endret 23. mai 2004 av søppel Lenke til kommentar
Dead_Rabbit Skrevet 23. mai 2004 Forfatter Del Skrevet 23. mai 2004 Jeg hadde egentlig ikke tengt noe på det der, men syns det er bedre at den finner alle isteden for den første og beste. Lenke til kommentar
Frank2004 Skrevet 23. mai 2004 Del Skrevet 23. mai 2004 (endret) Hm,Hvis det er meningen at den -ikke- skal søke videre når den har funnet et treff er det jo greit å sette i og k til 100 (og coord_found til true i samme slengen) som en nevnte ovenfor her? Men blir ikke "goto endOfLoop" veldig mye klarere enn å skrive "i=100; break;"? Kan selvsagt gjøre det dønn umulig å forstå programflyten om man misbruker goto, men akkurat for å bryte seg ut av nestede loops er det som sagt ofte beste alternativ. Ekte programvareutviklere er ikke redd for å bruke et 'fy-ord' hvis det gjør koden lettere å lese. Endret 23. mai 2004 av Frank2004 Lenke til kommentar
søppel Skrevet 23. mai 2004 Del Skrevet 23. mai 2004 (endret) Tja -- nei, goto er vel egentlig ikke så ille akkurat i disse tilfellene. Fannt en artikkel: http://www.geocities.com/siddharthuppal/InfamousGoto.htm Edit: Det første ex. i artikkelen kunne vel vært løst enkelt med en do while? (jeg har ikke lest så nøye over) Endret 23. mai 2004 av søppel Lenke til kommentar
Feynman Skrevet 23. mai 2004 Del Skrevet 23. mai 2004 Kort om 'goto'-funksjonen Funksjonen goto vi finner i C++ er der av samme grunn som i C, dvs. det er egentlig ikke noe grunn til å ha den. I C-boken til Kernighan og Ritchie Står det at all kode kan skrives uten goto, og de ikk har brukt funksjonen i eksemplene som er gitt i boken. Det er vanskeligere å forstå koden som bruker goto en kode som ikke bruker det. Det er allikevel enkelte situasjoner det kan være nyttig. F.eks. hvis en funksjon har flere if-tester og resultatet er at en standard feilbehandling skal gjennomføres kan det være en god løsning. Spesielt hvis testene ligger inni mange funksjonsblokker ved flere steder kan det være bedre med en 'goto error,' enn å krongle seg ut. Ref: K&R: The C Programming Language I C++ har vi noe som heter exceptions som er et langt bedre alternativ til 'goto error', men det er _litt_ mer komplisert å lære. Lenke til kommentar
søppel Skrevet 23. mai 2004 Del Skrevet 23. mai 2004 Ble litt nysjerrig, og sjekket hvor mange forekomster av "goto" det er i kildekoden til Linux (versjon 2.6.6): # find . -name '*.c' -o -name '*.h' -depth | xargs grep 'goto' | nl 1 ./drivers/s390/net/qeth.c: goto out; 2 ./drivers/s390/net/qeth.c: goto out; 3 ./drivers/s390/net/qeth.c: goto out; 4 ./drivers/s390/net/qeth.c: goto out; 5 ./drivers/s390/net/qeth.c: goto out; 6 ./drivers/s390/net/qeth.c: goto out; 7 ./drivers/s390/net/qeth.c: goto out; ..........O.S.V.......... 26729 ./crypto/sha512.c: goto out; 26730 ./crypto/cipher.c: goto out; 26731 ./crypto/api.c: goto out; 26732 ./crypto/api.c: goto out_put; 26733 ./crypto/api.c: goto out_free_tfm; 26734 ./crypto/api.c: goto out_free_tfm; 26735 ./crypto/api.c: goto out; 26736 ./crypto/api.c: goto out; 26737 ./crypto/api.c: goto out; Det er med andre ord ca. 25 000 forekomster av 'goto' i koden. Tror ikke jeg ville anbefallt å bruke goto vanligvis uansett. Dette er jo rimelig lav-nivå. Lenke til kommentar
Manfred Skrevet 24. mai 2004 Del Skrevet 24. mai 2004 jeg mener det er ikke før i ekstreme tilfeller man behøver goto... så og si all kode kan skrives uten, og BØR skrives uten... Lenke til kommentar
A_N_K Skrevet 24. mai 2004 Del Skrevet 24. mai 2004 Goto er svært nyttig for feilhåndtering i C, men automatisk destruksjon og exceptions gjør goto relativt meningsløst for dette formålet i C++. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå