Goto naredba – razlika između verzija
Uklonjeni sadržaj Dodani sadržaj
Nema sažetka izmjene oznaka: vraćena izmjena |
m Poništena izmjena 40950150 korisnika 5.43.78.148 (razgovor) oznake: poništenje vraćena izmjena mobilno uređivanje mobilno veb-uređivanje napredna mobilna izmjena |
||
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.
| url = http://bioinfo.uib.es/~joemiro/teach/material/escritura/gotoharmfulCol.pdf
| title = Go To Statement Considered Harmful
| author = Edsger W. Dijkstra
}}</ref><ref>{{cite web
| url = http://www.cs.sjsu.edu/~mak/CS185C/KnuthStructuredProgrammingGoTo.pdf
| title = Structured Programming with Go To Statements
| author = Donald Knuth
}}</ref>
== Naziv ==
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:
Linija 43 ⟶ 49:
</source>
Upotreba naredbe <code>goto</code> naročito je bila česta u starijim programskim jezicima sekvencijalnoga karaktera, umjesto pozivanja ''
| title = Letters to the editor: Go-to statement considered harmful
| url = https://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.pdf
Linija 64 ⟶ 70:
== Primjeri ==
===
<source lang="
{$id: ALGMD-20100530}
unit Harmful;
interface(*********************************************************************)
function ProdOfInts(Op1, Op2: LongInt): LongInt;
function PowerOfInt(Base: LongInt; Exp: LongInt): LongInt;
implementation(****************************************************************)
var
Result: LongInt;
function ProdOfInts(Op1, Op2: LongInt): LongInt;
label
0, 1;
begin
0:
Result := 0;
1:
Result := Result + Op1;
Op2 := Op2 - 1;
if Op2 <> 0 then
goto 1
else if Op2 = 0 then
ProdOfInts := Result;
end;
function PowerOfInt(Base: LongInt; Exp: LongInt): LongInt;
begin
Result := 1;
while Exp <> 0 do
begin
Exp := Exp - 1;
Result := ProdOfInts(Base, Result);
end;
PowerOfInt := Result;
end;
begin(********************************************************************)end.
</source>
=== Windows CMD ===
<source lang="dos" highlight="9, 15, 20">
@echo off
setlocal
set project=Harmful
set options=-Sg -WN -Xs -XX
call :main
endlocal
goto :eof
:main
fpc %project%.pp %options%
if exist %project%.pp* (
goto :eof
) else (
)
goto :eof
:error
echo
echo Compilation error.
pause
:eof
</source>
Linija 92 ⟶ 154:
=== 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>
Linija 128 ⟶ 190:
=== GoSub ===
<code>GOSUB</code> ili <code>GO SUB</code> je naredba u Basicu za pozivanje ''
<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
Primjer:<ref>{{cite book
Linija 164 ⟶ 226:
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
<code>'''ON''' <expr> '''GOSUB''' <d1, d2, d3, ... dn></code>
Linija 221 ⟶ 283:
/* do positive elements */
</source>
== Izvori ==
{{Reflist}}
[[Kategorija:Računarstvo]]
[[Kategorija:Programiranje]]
[[Kategorija:Programske paradigme]]
|