» »

[c++] goto,jump

[c++] goto,jump

slovencl ::

A obstaja v c-ju funcijo goto oz. jump, kjer program skoči na neko vrstico in se izvaja od tam naprej...najbrž obstaja, kako se imenuje in uporabi?

Spartak ::

V zgornjem delu enkrana v compilerju imaš verjetno meni. V tem meniju bi ti moralo nekje na desni strani pisati Help. Odpri ga in išči pod "goto", lahko pa tudi pod "label". Drugače pa obstajajo tudi ukazi break in switch, vendar nisem v c-ju programiral že kar nekaj časa, tako da ti ne bi vedel povedati kako je z uporabo.
I got my mind made I gotta be that rich mothafucka Set it up so my grandkids don't suffer

Goldee ::

neki
case of pogoj labela
neki
labela
And Now for Something Completely Different...

-two things I like about UK -Monty Python & Pink Floyd-

Zgodovina sprememb…

  • spremenil: Goldee ()

Goldee ::

Mislem, da bi moglo bit nek tacga. Preber si kak intro ;)
And Now for Something Completely Different...

-two things I like about UK -Monty Python & Pink Floyd-

Zgodovina sprememb…

  • spremenil: Goldee ()

slovencl ::

Itak da sem gledal ;( Samo za take izraze kot so label, jump... ti vrže ven tisoč možnosti, pol pa išči

Gundolf ::

Ker je C malo naprednejši od assemblerja naj se načeloma goto stavkov ne bi uporabljalo. To je načelo lepega (preglednega) programiranja. Zakaj? - zato ker se da veliko večino goto stavkov brez posledic v hitrosti izvajanja ter s posledicami v preglednosti programa nadomestiti z if/while/for/switch stavki.

Drugače pa imaš ukaz goto:
zankica:  // najprej določiš 'label' - poimenovanje sledi istim pravilom kot za spremenljivke, imenu sledi dvopicje
 a = a +1;
goto zankica; // goto stavek ki pac skoci na definirani label

rokpok ::

(mi je že Gundolf ukradel odgovor) :D
Rad bi bil pingvin.

Zgodovina sprememb…

  • spremenil: rokpok ()

Tutankhamun ::

obstaja goto.
goto skip;
printf("tole smo preskočili.\n");
skip:
printf("Kak smo:P\n");

Ampak se to ne uporabla ker je grdo, tut nepriporočajo. Svetujem ti da rajš mal spremeniš algoritem, da ti nau treba tega uporablat.
AMD Phenom QUAD 9950 Black Edition, 8GB

slovencl ::

Hvala. Vem da ni pravi način z goto (zato tudi nisem poznal sintakse ;) ) ampak v mojem primeru pa moram uporabit goto (vsaj mislim).

Kolk deleč pa nese ta goto...po celem programu, a samo po določeni funkciji?

Tutankhamun ::

u nevem če lahk skačeš iz funkcij v funkcijo. Ampak če pa lahko, pa vrjem da boš neki za j****. Že v funkciji sami če boš letov v kšne zanke..., bo neki narobe.

Use se da narest brez goto. Če ni skrivnost kaj pa delaš da to rabš. To bi kvečjem uporabu pr kakšnih napakah, da kuj skočš nekam vn.
AMD Phenom QUAD 9950 Black Edition, 8GB

Gundolf ::

Povej česa ne moreš rešiti brez goto pa ti povem kako to rešiš brez goto;) Če seveda ni skrivnost.

Me pa že tvoje naslednje vprašanje (koliko daleč nese goto) rahlo skrbi. Na srečo med funkcijami ne moreš preskakovati, samo znotraj njih.

slovencl ::

Rabim za napake, tako kot je rekel tutankamon. Nakaj naredi, pogleda če je napak, in če je gre ven, sicer nadaljuje.
Najbrž bi se dalo tudi z if satvki...samo je več zafrkavnja

Gundolf ::

Če gre za C++, kot v naslovu teme potem try catch bloki, če je pa za C, kot si omenil, pa if. Je pa še ena možnost, ki sicer ni dosti lepša. Ko imaš v eni funkciji toliko pregledovanja za errorji potem je verjetno funkcija slabo strukturiran in jo lahko razbiješ na več lažje obvladljivih.

Kakorkoli že, če gre za C bom preventivno raje utihnil.

Zgodovina sprememb…

  • spremenil: Gundolf ()

noraguta ::

ja exceptioni so kulska zadeva sam kaj ko so tut precej pocasnejsa zato se goto se kar drzi.
Pust' ot pobyedy k pobyedye vyedyot!

Tutankhamun ::

Eh nč niso exceptioni počasni. Sej ne dela ne vem kakšne hitrostne časovno kritične aplikacije, ali pač.

Sej res da je naslov c++ ampak vprašanje je blo za C.

Ne se držat goto-ja. Raj se navad brez, pa mal spremen kodo.
AMD Phenom QUAD 9950 Black Edition, 8GB

slovencl ::

A v c++ pa ni goto stavka 8-O
A ni razlika med c in c++, da ima c++ vse tisto kar ima c in dodatno še razrede?

Tutankhamun ::

je je sam u C-ju Exceptionov ni
AMD Phenom QUAD 9950 Black Edition, 8GB

tecumseh ::

Odvisno tudi od tega iz cesa bi rad "sel ven" in koliko... Morda lahko uporabis break ali pa return 1... V C++ imas potem se exit () in pa seveda throw in catch...

64202 ::

Sicer v c-ju obstajajo skoki med funkcijami: setjmp/longjmp. Primer knjiznice, ki to uporablja za try/catch-like hendlanje napak je libpng (sem kar malo bulil ko sem prvic videl :D). Ni to najbolj "lep" nacin IMHO, se mi zdi da so taki skoki bolj koristni za implementacijo userspace threadov in podobno - gnu pth.
I am NaN, I am a free man!


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Analiza kode: goto rabimo po pameti

Oddelek: Novice / Znanost in tehnologija
2913839 (10399) one too many
»

Kdaj uporabiti izjeme?

Oddelek: Programiranje
241699 (1580) Gundolf
»

ideja: koda za razne mikrokontrolerje na enem mestu

Oddelek: Elektrotehnika in elektronika
73702 (3179) neoto
»

[C/C++] Variadic Macros

Oddelek: Programiranje
122109 (1934) OwcA
»

C++ & goto funkcija

Oddelek: Programiranje
61583 (1488) webblod

Več podobnih tem