lørdag 10. september 2011 Polyglot
Min lille serie om løkker og iterering fortsetter, og i dag tar vi en nærmere titt på løkker basert på det utskjelte og fryktede taboo-ordet GOTO.
Føler man seg skikkelig vill og gal, eller befinner seg i et mindre sofistikert språk, eller i assembly, så kan man lage løkker ved hjelp av goto-instruksjonen (eller en variant av denne kommandoen). Når man kompilerer eller tolker for- og while-løkker i høyerenivåspråk blir de også redusert til goto-lignende-strukturer. Man kan se på goto som en grunnleggende instruksjon man kan bruke til å lage mere avanserte løkke-abstraksjoner.
Her en en goto-løkke i C# som skriver ut tallene 1 til og med 5 (ja, man har goto i C#, men den brukes ytterst sjelden):
int i = 1; goto Test; LoopStart: Console.WriteLine(i); i++; Test: if (i <= 5) goto LoopStart;
Eventuelt kan den samme løkken skrives slik:
int i = 1; Test: if (i > 5) goto LoopEnd; Console.WriteLine(i); i++; goto Test; LoopEnd: ;
Som du forhåpentligvis ser er for og while mye mere elegant – goto uttrykker ikke utviklerens intensjoner på samme måte.