Goto naredba – razlika između verzija

Dodano 17 bajtova ,  prije 3 godine
m
Poništena izmjena 40929439 korisnika 5.43.78.148 (razgovor)
Nema sažetka izmjene
m (Poništena izmjena 40929439 korisnika 5.43.78.148 (razgovor))
oznaka: poništenje
'''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 engleskeenglezke 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:
</source>
 
Upotreba naredbe <code>goto</code> naročito je bila česta u starijim programskim jezicima sekvencijalnoga karaktera, umjesto pozivanja ''potprogramapodprograma'' (''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
=== 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>
=== GoSub ===
 
<code>GOSUB</code> ili <code>GO SUB</code> je naredba u Basicu za pozivanje ''potprograma'podprograma'''. 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 potprogramapodprograma, 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 potprogramapodprograma 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 potprogramapodprograma onim redom kojim su upisani.
 
Primjer:<ref>{{cite book
 
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 sljedećisledeći oblik:
 
<code>'''ON''' <expr> '''GOSUB''' <d1, d2, d3, ... dn></code>
</source>
 
== VidiPovijestni takođedokumenti ==
 
* [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]]
 
{{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]]
676

izmjena