MERGI LA
( EN ) "Codul care se bazează pe declarații Goto este, în general, mai greu de înțeles și de întreținut decât codul fără gotos. Deși nu suntem dogmatici în legătură cu această chestiune, se pare că afirmațiile goto ar trebui utilizate rar, chiar dacă este deloc ". | ( IT ) „Codul care folosește instrucțiuni de trecere este, în general, mai dificil de înțeles și de gestionat decât codul fără trecere. Deși nu suntem dogmatici în legătură cu această chestiune, se dovedește că afirmațiile goto ar trebui folosite rar, dacă este deloc. " |
( Brian Kernighan și Dennis Ritchie, Limbajul de programare C ) |
În informatică , GO TO sau GOTO (literalmente „du-te la”) este o instrucțiune de control al fluxului de execuție . Este furnizat în diferite limbaje de programare și vă permite să faceți salturi necondiționate de la un punct la altul din cod . În trecut a fost adesea folosit, totuși utilizarea sa a fost adesea necorespunzătoare ( cod spaghetti ), făcând un algoritm sau o procedură ilizibilă sau dificil de înțeles.
Descriere
Această instrucțiune este prezentă în Fortran , ALGOL , COBOL , SNOBOL , BASIC , Lisp , C , C ++ , Pascal , Perl , PHP (din versiunea 5.3) și multe altele mai puțin cunoscute. În Asamblare și, în general, în limbaje de nivel scăzut , este o instrucțiune fundamentală pentru a controla fluxul de instrucțiuni (și pentru a vă adapta la limbaje de programare care nu o folosesc în mod deliberat).
În ansambluri corespunde unei instrucțiuni de salt și poate fi apelat cu nume diferite: BRA (din „ramură”), JP, JMP sau JUMP cu toate variantele lor condiționate (zero, diferit de zero, carry etc.)
A fost foarte popular în limbile numerelor de linie (învechite), cum ar fi BASIC . Sintaxa a fost:
MERGI LA număr din linia
Alte limbi fără numere de linie, cum ar fi C sau PHP , utilizează etichete care identifică adresa codului la care doriți să accesați.
În limbile de nivel înalt poate fi folosit pentru a ieși rapid de bucle adânc imbricate. În zilele noastre, utilizarea acestei instrucțiuni în astfel de limbaje este considerată, în general, un semn de programare proastă (așa-numitul „ cod spaghetti ”) deoarece încalcă elementele de bază ale programării structurate .
După cum demonstrează teorema Böhm-Jacopini , o codificare atentă poate evita recurgerea la instrucțiunile GOTO, deși este uneori necesar să se introducă variabile suplimentare sau o construcție logică suplimentară. Cu toate acestea, absența GOTO face codul mai ușor de analizat.
Cu toate acestea, în limbile care nu prevăd excepții sau în scrierea sistemelor de operare, salturile necondiționate în cod pot fi o alegere valabilă în cazul revenirii operațiilor sau alocării resurselor alocate prin pași succesivi, atunci când într-unul dintre acești pași se stare de eroare. Codul sursă al kernel-ului Linux este ambalat cu GOTOS, adesea vizând acest scop.
Exemple
Următoarele exemple imprimă toate 10 linii numerotate consecutiv
Limbaj de bază
Exemplu de utilizare a instrucțiunii goto
10 LĂSA the = 1
20 IMPRIMARE the
30 LĂSA the = the + 1
40 DACĂ the < 10 ATUNCI MERGI LA 20
Exemplu de programare structurată fără a merge
10 LĂSA the = 1
20 DO
30 IMPRIMARE the
40 LĂSA the = the + 1
50 BUCLĂ IN TIMP CE the < 10
Limbajul C / C ++
Exemplu de utilizare a instrucțiunii goto
int i = 1 ;
eticheta :
printf ( "linia% d \ n " , i ++ );
if ( i < 10 ) merge la etichetă ;
Exemplu de programare structurată fără a merge
int i = 1 ;
face {
printf ( "linia% d \ n " , i ++ );
} while ( i < 10 );
Curiozitate
În jocul video Star Wars: Knights of the Old Republic II: The Sith Lords există un personaj numit G0-T0 sau Goto, care este un droid cu probleme de programare.
Elemente conexe
- Comefrom O structură de control care își propune să fie cea mai întunecată dintre GOTO [ necesită citare ]
linkuri externe
- Accesați declarația Considerat dăunător (Edsger W. Dijkstra) Text cheie în discuțiile privind programarea structurată și utilizarea GOTO.