Uslovi: operatori, if, else, else if

Započeo Vasic, Mart 12, 2022, 21:00:49 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Uslovi - operatori, if, else, else if


Tabela operatora sa primerima



Operator         Značenje  Primer
==Levo je jednako desnom   if (levo == desno)
!=Levo nije jednako desnom   if (levo != desno)
>Levo je vece od desnog   if (levo > desno)
>=Levo je vece ili jedanko desnom   if (levo >= desno)
<Levo je manje od desnog   if (levo < desno)
&&Levo i desno (striktno)   if (levo && desno)
||Levo ili desno (bilo koje)   if (levo || desno)
!not   if (!varijabla)
!nor   if (!(levo || desno))
!nand   if (!(levo && desno))
!xor, eor - samo jedno je tačno   if (!(levo && desno) && (levo || desno))
!nxor, neor - obe tačne ili nijedna   if ((levo && desno) || !(levo || desno))



Sada kada znamo šta koji operator radi, možemo da počnemo sa uslovima (if, else, else if).
Naredba if proverava da li je nešto tačno i pokreće deo koda ako jeste.

[pawn]new a = 5;
if (a == 5)
{
   print("a ima vrednost 5.");
}[/pawn]

Kod u zagradama posle "if" se naziva uslovom, postoji niz različitih stvari koje možete testirati (pogledajte tabelu operatora).
U gornjem primeru i "a" i 5 su simboli, funkcije takođe mogu biti simboli:


[pawn]if (NekaFunkcija() == 5)
{
   print("NekaFunkcija je jednaka 5.");
}[/pawn]

Ovo će testirati povratnu vrednost NekaFunkcija (pogledajte dole) u odnosu na 5.
Takođe možete kombinovati provere da biste proverili više stvari:

[pawn]new a = 5, b = 3;
if (a == 5 && b != 3)
{
   print("Ovo neće biti ispisano u konzoli.");
}[/pawn]

Ovaj primer proverava da li je "a" jednako 5 i "b" nije jednako (!=) 3, međutim "b" je 3 tako da provera ne uspeva.

[pawn]new a = 5, b = 3;
if (a == 5 || b != 3)
{
   print("Ovo će biti ispisano u konzoli.");
}[/pawn]

Dok ovaj primer proverava da li je "a" jednako 5 ILI "b" nije jednako 3. "b" je jednako 3 pa taj deo ne uspeva. Međutim, "a" je 5 tako da je taj deo tačan, koristimo || (ili) dakle samo jedan deo mora da bude tačan (ako su oba tačna, uslov je i dalje tačan, ovo se malo razlikuje od lingvističkog značenja "ili" koje znači samo jedno ili drugo), tako da je taj uslov tačan.




else - u osnovi radi nešto ako "if" to ne uspe:

[pawn]new a = 5;
if (a == 3) // netačno
{
   print("Ovo neće biti ispisano u konzoli.");
}
else
{
   print("Ovo će biti ispisano u konzoli jer je provera iznad neuspešna.");
}[/pawn]




else if - je provera koja se javlja ako prva "if" provera ne uspe da proveri nešto drugo:

[pawn]new a = 5;
if (a == 1)
{
   print("Biće ispisano u konzoli ako je "a" 1.");
}
else if (a == 5)
{
   print("Biće ispisano u konzoli ako je "a" 5.");
}
else
{
   print("Biće ispisano u konzoli svakako, nebitno koju vrednost "a" ima.");
}[/pawn]

Možete imati else if provera koliko želite, ali ne možete imati vise od jedne "if" naredbe i više od jedne "else" naredbe:

[pawn]new a = 4;
if (a == 1) // Samo jedna "if" naredba!
{
   // Netačno
}
else if (a == 2)
{
   // Netačno
}
else if (a == 3)
{
   // Netačno
}
else if (a == 4)
{
   // Tačno
}
else
{
   // Netačno
}[/pawn]

else if provere će samo proveravati početnu vrednost kakva je i bila. Dakle, ovo NE MOŽETE da uradite:

[pawn]new a = 5;
if (a == 5)
{
   // Biće pozvana
   a = 4;
}
else if (a == 4)
{
   // Neće biti pozvana jer prva provera nije bila neuspešna, iako je "a" sada 4.
}[/pawn]

Da biste ovo zaobišli, u ovom slučaju samo else if prebacite u if.




Jedan prost primer:
[pawn]// Recimo da u modu postoji sistem organizacija:
if(GetFactionType(playerid) == FACTION_POLICE) // Postavljamo uslov
{
    // Ako je igrač član policije, izvršiće se sledeći kod:
    GivePlayerMoney(playerid, 1000);
    SendClientMessage(playerid, -1, "Dobili ste $1000 jer ste član policije.");
}
else if(GetFactionType(playerid) == FACTION_GANG)
{
    // ...ili ako je igrač član bande, izvršiće se sledeći kod, itd...
    GivePlayerMoney(playerid, 200);
    SendClientMessage(playerid, -1, "Dobili ste $200 jer ste član bande.");
}
else if(GetFactionType(playerid) == FACTION_PARAMEDIC)
{
    GivePlayerMoney(playerid, 1200);
    SendClientMessage(playerid, -1, "Dobili ste $1200 jer ste doktor.");         
}
else // Ako igrac nije clan nijedne od 3 navedene organizacije, onda:
{
   GivePlayerMoney(playerid, 500);
   SendClientMessage(playerid, -1, "Dobili ste $500 jer ste član neke organizacije/civil.");   
}[/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


Vasicu, koju drogu si uzeo pa pravis sve ovo  :D
HTML / CSS / Javascript / Inspect : Entry Masterclass.
ReactJS / Tailwind CSS / PWA / Axios / SCSS / Redux, ViteJS : Entry Masterclass.
C / C++ / C# / C-objective - kroz Pawn Lang : Entry Masterclass
Grupisano Pravljenje Objekata : Filterscript.


Sta je to web development?
To je nesto ono kao, kako bih to rekao, izgubis volju za zivotom i zelis da se ubijes, ali to je okej.
Onda jednostavno shvatis da si bio glup i resis problem, das sam sebi lajk,
skuvas NES 3u1 i pripremis se za sledeci projekat.

Citat: neshallon poslato Mart 12, 2022, 21:23:26 POSLE PODNE
Vasicu, koju drogu si uzeo pa pravis sve ovo  :D
Hahah, pa, vratio sam se na samp pre mozda mesec dana zbog situacije sa Fusion Gamingom, i rekoh da postavim po koji tutorijal ovde, jer kad sam usao na forum i video sta sve traze, bilo me je sramota u njihovo ime
• Website: www.vasic.dev
Web Development & Cyber Security

Mislim da nema potrebe da im se objasnjava XOR i slicno, to su binarni operatori i malo naprednije stvari (sta vise, koliko znam ne postoji naredba za XOR, samo binarno XOR koje je ^ ).
Sve u svemu odlicno, ako ovo nekome nije jasno neka batali programiranje i vraca se facebooku...