INSTRUCŢIUNEA GOTO
Este o instructiune de salt neconditionat cu formatul:
goto eticheta ;
Controlul executiei programului este transferat la instructiunea eticheta cu eticheta indicata în instructiunea goto. Atât instructiunea goto, cât si eticheta trebuie sa se g& 414e44e #259;seasca în aceeasi functie.
Instructiunea goto este controversata pentru orice limbaj de programare si utilizarea ei în exces face ca programul rezultat sa poata fi urmarit, modificat si eventual corectat cu destula greutate, deoarece programul nu mai poate fi parcurs sectional de sus în jos. Faptul ca limbajul C este structurat ne permite sa evitam folosirea obositoare a instructiunii goto utilizând instructiunile break, continue si return sau alegând tehnici de programare structurate.
Totusi, sunt câteva situatii când o instructiune goto si-ar gasi utilitatea, de exemplu la iesirea fortata dintr-o bucla incluse în alte bucle, caz în care instructiunea break ne permitea iesirea numai din bucla cea mai inferioara. În acest caz, un goto este indicat deoarece evita repetari inutile ale corpului buclei. Dar, cu putin efort din partea programatorului, se poate renunta si la acest goto, dupa cum puteti vedea în exemplul de mai jos:
Exemplul 3.12.1.
Se cauta valoarea x printre elementele matricii a m n prin cautarea secventionala pe linii:
. . . . . . . . . . . . . . .
for (i = 0; i < m; i + +)
for (j = 0; j < n; j + +)
if (a i j = = x)
goto succes;
/ * insucces */
succes:
/* cautare cu succes x = a i j */
si iata aceeasi secventa de program fara instructiunea goto si fara repetari inutile ale corpului buclei:
for (i = 0, succes = 0; i < m & & succes = = 0; i + +)
for (j = 0; j < n & & succes = = 0; j + +)
if (a i j = = x)
succes = 1;
if (succes)
. . . . . . . . . . . .
/* cautare cu succes x = a i -1 j - 1 */
. . . . . . . . . . . .
else
. . . . . . . . . . . .
/* insucces */
Observati ca fara a folosi variabila suplimentara succes la testul din cadrul instructiunii for s-ar fi executat repetari inutile ale corpului buclei chiar dupa gasirea valorii x prin elementele matricii.
Ţinând totusi cont de dezavantajele utilizarii instructiunii goto, recomandam sa se evite pe cât posibil folosirea acesteia.
Toate exemplele din aceasta lucrare sunt fara instructiunea goto.
|