[3 Pamoka] Operatoriai

Šiame forume galima rasti pamokas, patarimus, skriptus ir kitą naudingą informciją.
Post Reply
User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

[3 Pamoka] Operatoriai

Post by aaarnas »

Kad nustatinėti reikšmes, ar atlikinėti aritmetinius veiksmus, mums bus reikalingi operatoriai.

Aritmetiniai operatoriai

=, -, +, /, *
Paprastieji ženklai, kurie atlieka aritmetinius veiksmus. Viskas taip pat, tik ženklas = priskiria kažkokią reikšmę kintamajam.

Code: Select all

kintamasis = (suma+dalmuo)*zodis/veiksmas
Tad parašius tokią eilutę, bus atliktas skaičiavimas. Kas yra skliaustuose ( ), visada bus skaičiuojama pirmiausiai. Tad sudedami žodžiai suma ir dalmuo, jie padauginami iš žodžio zodis ir kas gaunama padalijama iš veiksmas. Tiesiog paprasta matematika.

Šiuos operatorius galima naudoti ir su lygybė. Pvz:

Code: Select all

a += 2
atitinka užrašą

Code: Select all

a = a + 2
Tad galimi ir tokie atvejai:

Code: Select all

a *= 25a /= 5a -= 10+40...
%
Šis ženklas gražina dalybos liekaną. Per visą laiką kiek programavau su pawn, dar neteko šio dalyko naudoti, bet pravartu žinoti, jį tikrai galima panaudoti atliekant kokius nors skaičiavimus. Pvz:

Code: Select all

5%2 // Grąžins 1, nes 4/2 dalijasi be liekanos.
--, ++
Šie operatoriai naudojami pridėti sumai arba atimti
Jie atitinka tai:

Code: Select all

a = 1a = a + 1 // a bus 2a++ // a bus 3++a // a bus 4a-- // a bus 3
Ženklas prieš ar po skirasi tuom, kad jei yra sąlyga, tarkim:

Code: Select all

if(++a>10)
Tai ženklui esant prieš kintamąjį, jo reikšmė bus pakeista dar prieš tikrinant jo reikšmę sąlygoje. Jei ženklas po skaičiumi, tai reikšmė bus pakeista jau patikrinus ar sąlyga teisinga. Tad tarkim:

Code: Select all

a = 10if(++a>10) // Grąžins tiesą, nes 11 > už 10if(a++>10) // Grąžins netiesą, nes 10 nėra > už 10
Sąlyginiai operatoriai

&&
Tai programavimo kalboje atitinka žodį - AND (irgi, taip pat)
Jis naudojamas sąlygose:

Code: Select all

if(radija > 2 && kolonele < 1) 
Ši sąlyga (radija > 2 && kolonele < 1) bus teisinga tik tada, kai ir (radija > 2 ) ir (kolonele < 1) gražins tiesą. Jei vienas iš jų bus netiesa, tai sąlyga bus neteisinga.

||
Viskas panašiai kaip ir su && (and) sąlygą, bet ši atitinka žodį - OR (arba).
Tai reiškia, kad:

Code: Select all

if(radija > 2 || kolonele < 1) 
Jei (radija > 2) arba (kolonele < 1) bus tiesa, tai sąlyga gražins tiesą. Vienas iš jų (bet kuris) gali gražinti netiesą, bet jei bent vienas gražins tiesą - visa sąlyga bus teisinga

Galima daryti ir taip:

Code: Select all

if((radija > 2 && kolonele < 1) || kintamasis)
Jei radija > 2 IR kolonele < 1 ARBA kintamasis. Tai reiškia, kad jei kintamasis yra tiesa, nesvarbu, kas yra su radija ir kolonele, bet sąlyga bus teisinga. Na manau logiką supratote.

!
Šis operatorius reiškia netiesą. Pvz:

Code: Select all

kintamasis = trueif(!kintamasis)
Sąlyga bus neteisinga, nes operatorius ! pavers kintamąjį į false reikšmę. Jei norime naudoti reikšmės nustatyme, galima daryti šitaip:

Code: Select all

zodis = truezodis2 = truezodis != zodis2
zodis bus priskirta reikšmė false, nes zodis 2 turėjo true reikšmę, o su operatoriumi ! mes pakeitėme reikšmę į false.

Code: Select all

kintamasis != 1 // Bus nustatyta reikšmė - 0kintamasis != 0 // Bus nustatyta reikšmė - 1kintamasis = 5if(!!kintamasis) // Bus tiesa, nes ! pakeis reikšmę į 0, o antras ! pakeis į 1.
Taip pat sąlygoje ! dar naudojamas nurodyti nelygybę:

Code: Select all

if(a != b)
Jei a nelygu b

Code: Select all

if(a == b)
Jei a lygu b

Šis gidas priklauso Amxmodx.lt forumui.
Bet koks šios informacijos platinimas be autoriaus sutikimo yra griežtai draudžiamas.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

newb
Pluginų patvirtintojas
Posts: 1047
Joined: 2010 Sep 23 21:43
Location: Wonderland
Contact:

Re: Operatoriai

Post by newb »

Seip nebloga pamoka naujokams ir net man padejo. Visa laika buvo idomu kuo skiriasi i++ ir ++i bet kazkaip nesinorejo ieskot :D O dabar jau zinosiu ^^
Dar maciau kaip raso a = a + 1, tai gal dabar rasys a++ :)

-- 2010 Lap 11 19:41 --

Ir dar, bent jau as dariau tokia klaida, jei norejau patikrint var 15 arba 10

Code: Select all

if(var == 15 || 10)
Taip neteisingai, reikia

Code: Select all

if(var == 15 || var == 10)
Arba dar tokia klaida galima padaryt

Code: Select all

if(cs_get_user_team(id) == CS_TEAM_CT || CS_TEAM_SPECTATOR) 

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: Operatoriai

Post by aaarnas »

Code: Select all

if(var == 15 || 10)
Na taip, čia galima padaryti klaidą, bet iš klaidų mes ir išmokstame :) Beje manau čia ne visi operatoriai, ir jų yra ir daugiau. Neaprašiau tik bitsums, nes jiems atskirą pamoką rašysiu. Daugiau gal galima rasti skaitant PAWN kalbos dokumentaciją. Kartą skaičiau, kai ieškojau stock reikšmės.

Beje pamiršau aprašyti ?, bet apie jį manau padarysiu atskirą sąlygų pamoką.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

Post Reply

Who is online

Users browsing this forum: No registered users and 6 guests