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.
|