Remove ads
Från Wikipedia, den fria encyklopedin
Goto är en programflödesstyrande sats i vissa imperativa programspråk, bland annat Basic, C, Pascal och C#. Satsen talar om att programexekveringen ovillkorligen ska hoppa till och fortsätta vid en angiven plats, som vanligen identifieras med en etikett (engelska: label) eller ett radnummer, beroende på programspråk. I maskinkod/assembler motsvaras goto av hoppinstruktioner som till exempel jump och branch.
Namnet goto kommer av engelska go to, ’gå till’.
Ett exempel i Basic med radnumrering:
10 PRINT "Programmet startar här."
20 GOTO 40
30 PRINT "Denna rad hoppas över."
40 PRINT "Programmet fortsätter här."
En goto-sats kan kombineras med en if-sats för att göra hoppet villkorat:
20 IF I = 99 THEN GOTO 40
I kombination med if-satser kan goto användas för att återskapa andra typer av villkorssatser som återfinns i strukturerad programmering. Detta följer av att villkorssatser i maskinkod är implementerade som jämförelser och villkorade hopp.
Goto-satsens plats i högnivåspråk har fått utstå kritik. En åsikt är att den leder till svårläslig kod, som är svår att förändra och uppdatera, och att den leder till spagettikod. Under 1960- och 1970-talen kom många[vilka?] som arbetade inom datavetenskap fram till att program bör använda en strukturerad flödeskontroll med slingor och if-satser.
En kritik av goto framfördes 1968 i ett brev av Edsger Dijkstra, med titeln Go To Statement Considered Harmful [1]. I detta brev argumenterar Dijkstra för att man bör ta bort den okontrollerade användandet av GOTO-satser i högnivåspråk då de försvårade arbetet med att analysera och verifiera programmets korrekthet. En annan synvinkel presenteras i Donald Knuths Structured Programming with go to Statements[2] där flera vanliga programmeringsuppgifter analyserades. Det visade sig att i ett antal av dem var goto den optimala språkkonstruktionen att använda.
Goto kan i vissa fall fungera som den bästa lösningen på ett problem ifall det saknas nödvändiga programkonstruktioner för att det annars ska kunna lösas i ett visst programspråk. Till exempel saknar C stöd för korutiner; sådana kan implementeras med hjälp av goto.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.