Nukreipimo operatoriai Spausdinti
( 9 Votes )

Parašė Aurimas Šimkus   

 Nukreipimo funkcijos yra šios: goto, continue ir break. Visos šios trys funkcijos yra pavadintos nukreipimo, nes jų pagalba galima pakeisti įprastą programos vykdymą. Iš dalies šių funkcijų vykdymas yra panašus į Switch, tačiau jos nėra taip dažnai praktikuojamos. Visas šias funkcijas pabandysime paaiškinti pavyzdžiais.

 

goto

Goto naudojamas, tada kai esant kažkokiai sąlygai, norime programos vykdymą perkelti į kitą kodo dalį. Pateikiame pavyzdį, kuriame atspausdinsime aritmetinę skaičių progresiją:

#include <iostream>
using namespace std;
int main()
{
 int i=1;

 vieta:                 //spausdinsime aritmetine progresija
 {
  cout << i << endl;
  i++;                  //i++ yra ekvivalentu i=i+1
 }

 if (i < 11)            //esant šiai sąlygai...
  goto vieta;          //kodo vykdymas nukreipiamas į 11 eilutę
 return 0;
}

Kaip matote, norint naudoti goto funkciją, visų pirma turime susikurti žymę (vieta_į_kurią_nukreipiama:), į kurią ir bus nukreipiamas programos vykdymas. Tada už goto rašome tos žymės pavadinimą.

Atkreipkite dėmesį į 9 eilutę. Sveikojo skaičiaus tipo kintamąjį vienetu padidinti galima prie to kintamojo prirašius ++. Atitinkamai, norint jį sumažinti vienetu, rašome --, pvz. i--.

Programos vykdymo pavyzdys:

 

break

Break naudojamas norint nutraukti kokią nors vykdomą operaciją, pvz. ciklą:

#include <iostream>
using namespace std;
int main()
{
 int sk;
 for (sk = 1; sk < 10; sk++)
  {
   if (sk == 7)
    break;
  }
 cout << sk << endl;
 return 0;
}

Ciklas for kintamąjį sk turėtų didinti tol, kol pastarasis įgytų reikšmę 10, tačiau cikle esantis sąlyginis sakinys ciklą nutraukia kintamajam sk įgijus reikšmę 7.

Programos vykdymo pavyzdys:

 

continue

Continue taip pat galime pritaikyti ciklo vykdyme, pvz. norint praleisti kai kurių sakinių vykdymą:

#include <iostream>
using namespace std;
int main()
{
 int sk;
 for (sk = 1; sk < 10; sk++)
 {
  if (sk % 2 == 0)
  continue;
  cout << sk << endl;
 }    
 return 0;
}

Ciklas toks pat kaip ir break pavyzdyje. Simbolis % išskiria skaičiaus sk sveikąją dalį jį padalinus iš 2. Taigi, jeigu skaičius yra lyginis (dalinasi iš 2 be liekanos), tai toliau cikle esančios eilutės nėra spausdinamos. Taigi ši programa išspausdina tik nelyginius skaičius iš intervalo [1;10].

Programos vykdymo pavyzdys: