Goto naredba – razlika između verzija

Uklonjeni sadržaj Dodani sadržaj
Nema sažetka izmjene
Nema sažetka izmjene
Red 1:
'''GoTo''' je [[kontrolna struktura]], odnosno naredba (komanda, engl. ''statement'') koja postoji u mnogim [[programski jezik|programskim jezicima]]. Izvršava jednosmjerni prenos kontrole toka (''programski skok'') do odredjene lokacije u kodu programa. Lokacija se uglavnom identificira imenovanom ''labelom'', ili rednim brojem linije. Stariji programski jezici su uglavnom imali ovu strukturu, dok kod novijih podržkapodrška varira.
 
== Naziv ==
 
Naziv komande dolazi od englezkeengleske složenice ''go to'' sa značenjem ''idi na/do''.
 
Programski jezici koji imaju <code>goto</code>, na različite načine i s različitim kombinacijama velikih i malih slova (''kapitalizacija'') su imenovali ovu naredbu, npr:
Red 43:
</source>
 
Upotreba naredbe <code>goto</code> naročito je bila česta u starijim programskim jezicima sekvencijalnoga karaktera, umjesto pozivanja ''podprogramapotprograma'' (''funkcija'' ili ''procedura''), kako se to inače radi u [[proceduralno programiranje|proceduralnim]] i [[funkcijsko programiranje|funkcijskim]] jezicima. Za razliku od poziva funkcije, koji vraća kontrolu toka programa natrag nakon izvršenja, naredba <code>goto</code> prenosi kontrolu toka samo u jednom smjeru. Zbog toga nije pogodna za [[strukturirano programiranje]] i pisanje pregledna, uredna programskoga koda, što je dovelo do kritika protiv upotrebe naredbe još 60-ih godina 20. stoljeća.<ref>{{Cite journal
| title = Letters to the editor: Go-to statement considered harmful
| url = https://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.pdf
Red 92:
=== Razgranati Goto ===
 
Osim jednostavne naredbe, još u starijim, nestrukturiranim verzijama ''Fortrana'' i ''Basica'' postojala je i složenija kontrolna struktura - '''izračunati goto''' ili '''razgranati goto'''. Za razliku od obične ''goto'' instrukcije, ''razgranati goto'' omogućuje više od jedne destinacije za programski skok, u ovisnosti o vrijednosti kondicionalne varijable ili izraza (ekspresije) unutar razgranate strukture. U Fortranu sintaksa izgleda ovako:
 
<code>'''goto''' (l1, l2, ... ln) <expr></code>
Red 128:
=== GoSub ===
 
<code>GOSUB</code> ili <code>GO SUB</code> je naredba u Basicu za pozivanje '''podprograma'potprograma''. Za razliku od <code>GOTO</code> naredbe u Basicu, koja vrši jednosmjeran transfer kontole toka, <code>GOSUB</code> omogućuje povratak na mjesto pozivanja, nakon izvršenja podprogramapotprograma, pomoću ključne riječi <code>RETURN</code>.
 
<code>'''GOSUB''' <expr> <...> '''RETURN'''</code>
 
Kako je <code>GOSUB ... RETURN</code> konstrukcija u Basicu riješena na posve nestrukturiran način, iza koda glavnoga programa i prije početka pisanja podprogramapotprograma mora se navesti ključna riječ <code>STOP</code>, da bi se osiguralo da program nakon izvršenja glavnoga dijela ne nastavi izvršavanje svih navedenih podprogramapotprograma onim redom kojim su upisani.
 
Primjer:<ref>{{cite book
Red 164:
 
Slično kao razgranati <code>GOTO</code>, i <code>GOSUB</code> ima svoju razgranatu varijantu.
<code>GOSUB</code> instrukcija koja odlučuje o programskom skoku na osnovi evaluacije izraza, ima sledećisljedeći oblik:
 
<code>'''ON''' <expr> '''GOSUB''' <d1, d2, d3, ... dn></code>
Red 304:
</source>
 
== PovijestniVidi dokumentitakođe ==
 
* [http://bioinfo.uib.es/~joemiro/teach/material/escritura/gotoharmfulCol.pdf Edsger W. Dijkstra: Go To Statement Considered Harmful]
* [http://www.cs.sjsu.edu/~mak/CS185C/KnuthStructuredProgrammingGoTo.pdf Donald Knuth: Structured Programming with Go To Statements]
 
== Povezani članci ==
 
* [[Strukturirano programiranje]]
Linija 318 ⟶ 313:
 
{{Reflist}}
 
== Vanjske veze ==
 
* [http://bioinfo.uib.es/~joemiro/teach/material/escritura/gotoharmfulCol.pdf Edsger W. Dijkstra: Go To Statement Considered Harmful]
* [http://www.cs.sjsu.edu/~mak/CS185C/KnuthStructuredProgrammingGoTo.pdf Donald Knuth: Structured Programming with Go To Statements]
 
[[Kategorija:Računarstvo]]