Switches - switch & case statements

Započeo Vasic
12. Mar. 2022.
2,957
pregleda
4
postova
FunnyGamingDay - FGD
6
OG Legend
12. Mar. 2022.
Switches - switch & case statements


Šta je switch?

Ova naredba se još zove i naredbom višestrukog grananja. Njome proveravamo da li je neki izraz jednak nekoj od više konstantnih celobrojnih vrednosti, i u zavisnosti od toga, izvršavaju se određene akcije. Ovom naredbom možemo da zamenimo višestruko pojavljivanje naredbe if.

"switch" je u osnovi structured if/else if/else sistem (slično kako je "for" petlja zapravo structured "while" petlja - TUTORIJAL ZA PETLJE). Najlakši način da to objasnim je na primeru:
new a = 5;
switch (a) {
case 1: {
// Neće biti pozvan
}
case 2: {
// Neće biti pozvan
}
case 5: {
// Biće pozvan
}
default: {
// Neće biti pozvan
}
}


Ovaj kod iznad će odraditi isto što i ovaj ispod:
new a = 5;
if (a == 1) {
// Neće biti pozvan
}
else if (a == 2) {
// Neće biti pozvan
}
else if (a == 5) {
// Biće pozvan
}
else {
// Neće biti pozvan
}


Ali kako god, jasnije je videti razliku šta se dešava između ova dva koda. (Ispod još jasnije objašnjenje)
Ovde možemo primetiti kako if i switch zapravo rade:
switch (NekaFunkcija())
{
case 1: {}
case 2: {}
case 3: {}
}


To će pozvati NekaFunkcija() samo JEDNOM i uporediti njen rezultat 3 puta.
if (NekaFunkcija() == 1) {}
else if (NekaFunkcija() == 2) {}
else if (NekaFunkcija() == 3) {}


Dok će ovo pozvati NekaFunkcija() čak TRI puta, što je veoma neefikasno.
Za vas koji znate C jezik, "switch" u PAWN jeziku je malo drugačiji, pojedinačni uslovi NISU propadajući i vezani su zagradama, tako da nema potrebe za naredbom break.




"case" - Case statements (delovi "case X:" naredbe "switch") mogu imati i druge opcije osim jednog broja. Možete da uporedite vrednost sa listom brojeva ili čak sa opsegom vrednosti:
case 1, 2, 3, 4:


Ovaj slučaj će se pokrenuti ako je simbol koji se testira 1, 2, 3 ili 4, to je isto kao i:
if (bla == 1 || bla == 2 || bla == 3 || bla == 4)


ali daleko sažetiji. Brojevi u listama ne moraju da budu uzastopni, u stvari, ako jesu, bolje je uraditi:
case 1 .. 4:


Ovaj slučaj će raditi potpuno isto kao gore, ali proverom opsega umesto liste, to je isto kao i:
if (bla >= 1 && bla <= 4)

new a = 4;
switch (a)
{
case 1 .. 3: { }
case 5, 8, 11: { }
case 4: { }
default: { }
}





"default" - Ovo je isto što i else u if naredbama, radi nešto ako sve ostale izjave case statementa ne uspeju.




Random primer:
new rand = random(10);
switch(rand) {
case 0..5: {
SendClientMessage(playerid, -1, "Nasumična vrednost: od 0 do 5.");
}
case 6: {
SendClientMessage(playerid, -1, "Nasumična vrednost je 6.");
}
case 7..9: {
SendClientMessage(playerid, -1, "Nasumična vrednost: 7, 8 ili 9.");
}
default: {
SendClientMessage(playerid, -1, "Nepoznata akcija.");
}
}




Hvala Vam što ste odvojili vreme da pročitate tutorijal.
Nadam se da ste skapirali šta i kako "switch" i "case" statements rade.
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.

Former SA:MP server developer

Skrilew
6
Godfather
12. Mar. 2022.
Ovo treba pinovati
realnaith
5
Crime Lord
6. Apr. 2023.
Bump
whyllon
4
Shot Caller
27. Maj 2023.
bump

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava

© 2026 SmartShark. All rights reserved.

Powered by Momentum|v2026.3.001 Alpha