Single line statements

Započeo Vasic, Maj 14, 2022, 18:48:14 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Single line statements - goto, break, continue, return


goto - goto je u suštini skok, ide na oznaku bez pitanja (tj. nema uslova da bude istinit)
[pawn]goto my_label;

// Ovaj odeljak će biti preskočen

my_label: // Oznake se završavaju dvotačkom i nalaze se na sopstvenoj liniji

// Ovaj odeljak će biti obrađen normalno
[/pawn]

Primer goto naredbe u ulozi petlje:
[pawn]new
   a = 9;

loop_start:
if (a < 10)
{
   // Kod unutar petlje
   a++;
   goto loop_start;
}
// Kod nakon petlje
[/pawn]

Upotreba goto naredbe je široko obeshrabrena zbog njenog uticaja na tok programa.



break - break naredba "zaustavlja" petlju, završavajući je prerano.
[pawn]for (new a = 0; a < 10; a++)
{
   if (a == 5) break;
}[/pawn]

Ova petlja će se izvršiti 6 puta, ali će kod nakon prekida biti izvršen samo 5 puta.



continue - continue u osnovi preskače iteraciju petlje.
[pawn]for (new a = 0; a < 3; a++)
{
   if (a == 1) continue;
   printf("a = %d", a);
}[/pawn]

Ovo će dati output:
a = 0, a = 2

Naredba continue u osnovi skače na zagradu za zatvaranje petlje, kao što je već napomenuto gore. Morate biti oprezni kada koristite continue sa nekim petljama:
[pawn]new
   a = 0;
while (a < 3)
{
   if (a == 1) continue;
   printf("a = %d", a);
   a++;
}[/pawn]

Ovo izgleda veoma slično prvom primeru, ali ovog puta continue će preskočiti a++; liniju, tako da će se petlja zaglaviti u beskonačnoj petlji jer će a uvek biti 1.



return - return zaustavlja funkciju i vraća se na tačku u kodu koja je pozvala funkciju na prvom mestu.
[pawn]main()
{
   print("1");
   MyFunction(1);
   print("3");
}

MyFunction(num)
{
   if (num == 1)
   {
      return;
   }
   print("2");
}[/pawn]

Ovo će dati output:
1 3
Zato što print("2"); linija nikada neće biti dostignuta.
Takođe možete da koristite return da biste vratili vrednost:
[pawn]main()
{
   print("1");
   if (MyFunction(1) == 27)
   {
      print("3");
   }
}

MyFunction(num)
{
   if (num == 1)
   {
      return 27;
   }
   print("2");
   return 0;
}[/pawn]

Taj kod će dati isti output kao gore, ali imajte na umu da je dodatni return dodat na kraj funkcije. Kraj funkcije ima impliciran return, međutim ovaj return nema vrednost, ne možete vratiti vrednost i "ne vratiti" vrednost iz iste funkcije, tako da moramo eksplicitno da vratimo vrednost.

Simbol koji vraćate može biti broj, promenljiva ili čak druga funkcija. U tom slučaju će druga funkcija biti pozvana, ona će vratiti vrednost i ta vrednost će biti povraćena iz prve funkcije.

Takođe možete da sačuvate povratne vrednosti za kasniju upotrebu:
[pawn]main()
{
   print("1");
   new
      ret = MyFunction(1);
   if (ret == 27)
   {
      print("3");
   }
}

MyFunction(num)
{
   if (num == 1)
   {
      return 27;
   }
   print("2");
   return 0;
}[/pawn]



Hvala Vam što ste odvojili vreme da pročitate tutorijal.

Moguće su greške, ne zamerite. Ukoliko uočite nešto što je nepravilno, napišite u komentaru.
Ukoliko Vam treba dodatna pomoć oko ove oblasti, napišite u komentaru ove teme (ne privatne poruke).
Sve ovo možete da pronađete online, ili na alternativnim samp-wiki stranicama, ali evo i ovde za one lenje osobe.
• Website: www.vasic.dev
Web Development & Cyber Security

Ovo se zove tutorijal  8)
I'm everything what I dream about.

Offline Forever