Kifejezések, operátorokA kifejezések hasonlóan néznek ki, mint a matematikában található kifejezések ezért ahhoz hasonló műveletekkel  a Pawn nyelvben. Nem kell megijedni, nem fogunk belebonyolódni a matematikába, csupán az alapok tisztázása végett mélyedünk el benne. A kifejezések a bennük szereplő operátorokból, azonosítókból és zárójelekből épülnek fel - legtöbb esetben - a matematikai szabályok szerint.
Minden kifejezés -bármilyen összetettek - kiértékelődnek és visszaadnak egy értéket. A kiértékelés folyamán a részkifejezések/literálok kiértékelésnek sorrendjét az operátorok precedenciája és azok esetleges zárójelezés határozzák meg: Először a belső zárójelekben lévő részkifejezések értékelődnek ki, ha azon belül vannak operátorok, akkor precedencia szerint sorrendben. (pl először a szorzás/osztás, majd összeadás/kivonás stb...). A precedenciákról korábbi fejezetben írtam össze egy táblázatot, így azt ide már nem illesztem be.
Kifejezéseket a kódban bárhol s bármikor használhatsz, (akár egy sorban is, igaz az fordítási hibát dob). Legtöbbször az eredményeket meg változókban tároljuk az = operátor segítségével, vagy maga a kifejezést egy függvény paraméterébe ágyazzuk.
Most pár példát írok össze. Ezeknek nagy része nem fordul le, de nem is ez a célom, hogy fordítható kódot mutassak, hanem azt, hogy demonstráljam a kifejezések működést.
Kód:
- // Ez a legegyszerűbb kifejezés. Ezeket - a logika nyelvén - atomi kifejezésnek hívjuk, mivel egyelemű, ezekből épülnek fel az összetett kifejezések. 
- 0 
- // A zárójelezések is működnek ebben az esetben, és könnyebb olvashatóságot biztosít 
- (0) 
Ha egy kifejezés értéke nem nulla vagy nem hamis, akkor nem csak az értékét adja vissza, hanem azt is, hogy "igaz" (true). Ellenkező esetben nullával fog visszatérni, ami hamis (false). (Lényegében: minden nem 0 eredményű kifejezés igaz, míg a 0 értékűek false)
Matematikai kifejezések és operátorokKód:
- // Példák matematikai kifejezésekre. 
- // Operátorok: 
- // + mint összeadás 
- // - mint kivonás 
- // * mint szorzás 
- // / mint osztás 
- // % mint maradékos osztás, ami a maradékot fogja visszaadni (pl 7%3 értéke 1) 
- (2+3)                       // Eredmény: 5 
- ((2*7)+3)                   // Eredmény: 17 
- ((((1+3)/2)*4)-6)           // Eredmény: 2 
- ((2*10) % 7)                 // Eredmény: 6 
- // További kifejezésekre példa 
- (true)                      // Eredmény: true 
- (5.0 + 2.3)                 // Eredmény: 7.3 Float típusú érték. 
A kifejezéseket értékül adhatjuk új, vagy meglévő változóknak
Kód:
- new a = 3                   // 'a' változó létrehozva 3-as kezdeti értékkel (a==3) 
- new b = a + 7               // 'b' változó létrehozva ( a + 7 )-as kezdeti értékkel (b==10) 
- a = a - 1;                  // 'a' értékét csökkentjük eggyel (a==2) 
- new c = b * a / 2           // 'c' változó létrehozva ( b * a / 2 ) értékkel (c==10) 
Post/pre fixes operátorokKód:
- a++          // visszaadja (a)-t, majd növeli egyel. 
- ++a          // növeli (a)t, és utána adja vissza 
- // Lényegében: 
- /* 
- változó++ › posztfixes alak, csak a kifejezés kiértékelése után növeli az értékét, ehhez létrehoz egy átmeneti változót. 
- ++változó › prefixes alak, nincs átmeneti változó, azonnal növeli az értékét, általában ezt használjuk. 
- */ 
-   
- // Hasonló módon működik a -- operátor is 
- a-- 
- --a 
- //mint említettem, az a++ operátor létrehoz egy átmeneti változót, mivel hasonlóan működik, mint az alábbi kód. 
- a = a + 1 
- // Az ++a ezzel ellentétben direktben növeli az értékét, nem szükséges létrehoznia ideiglenes változót. 
-   
"Csonkolt" operátorműveletekSok esetben szükséges egy adott operátor értékének megváltoztatására általában ez alapján tesszük meg:
Kód:
- a = a OP y 
Néhány operátor esetében használhatunk rövidítéseket, amik így néz ki:
Kód:
- a OP= x 
Alábbi műveleteknek létezik rövidebb alakja
Kód:
- a += 1       // Növeli 'a'-t 1-el 
- a -= b       // 'a' értékét csökenti 'b' vel 
- a *= 0       // 'a'-t szorozza 0-val 
- a /= 2       // 'a'-t ossza 2-vel 
Logikai kifejezések és operátorokNem csak matematikai operátorokkal rendelkezik a nyelv, hanem van lehetőség logikai operátorok használatára is.
Az egyik legfontosabb operátor az ÉS operátor (&&). Kétoperandusú művelet, eredménye igaz, ha mindkettő kifejezés értéke igaz, ellenkező esetben hamis.
A továbbiakban az igazat true-val és a hamisat false-szal fogom jelölni
Kód:
-   
- (1 && 0)                    // Ez false, mivel 0 false vissza (lsd feljebb) 
- (1 && 2)                    // Mindkét kifejezés true így true lesz a && eredménye 
- (true && false)             // false 
- (false && false)            // false 
- (true && true)              // true 
A másik fontos operátor a VAGY (||) operátor. Ha valamelyik operandusa true, akkor || értéke true, ellenkező esetben false
Kód:
- (1 || 0)                    // true, mivel az első kifejezés (1) true  
- (1 || 2)                    // true 
- (true || false)             // true 
- (false || false)            // false 
- (true || true)              // true 
Léteznek további (annyira nem használt) operátorok.
Ilyen a bitenkénti ÉS ami két operandus azonos biteit ÉSeli össze az && operátorral, eredménye az újonnan kapott szám.
Kód:
- // Például a 11 és 8 bitenkénti és eredménye 8, mivel: 
- // 11 (1011) és 8 (1000) 
- (11 & 8) //Eredménye 8 (1000) 
- // 4 (00100) és 16 (10000) 
- (16 & 4) eredménye 0 
A következő ilyen operátor a bitenkénti vagy (|)
Az elve hasonló: a két kifejezés azonos btjeit összeVAGYolja (||) és visszaadja az így kapott eredmény
Kód:
- // 9 (1001) és 3 (0011) 
- (9 | 3) eredménye: 11 
Ugyanilyen ritkán használt, de fontos operátor a bitshiftelés (nem tudtam hirtelen jó szót rá 

)
Ezek az << és >> operátorok. Eltolja a biteket az operátornak megfelelő "irányba":
Kód:
- // Példák: 
- // 2 (00010) elcsúsztatva 3 - mal: 
- (2 << 3) eredménye: 16 (10000) 
- // Másik irányba való shiftelés: 
- // 16 (10000) 3-mal: 
- (16 >> 3) eredménye: 2 (00010) 
Utolsóként, egy fontos operátor mutatok b, ez a bitenkénti tagadás.  Ezt használjuk az igazságértékek tagadására is. Számokra használva a számot bitenként tagadja (0-ból 1, 1-ből 0 lesz)
Példák:
Kód:
- (!true)  // Eredménye: false 
- (!false) // Eredménye: true 
- !9 // Eredménye: 6  (9 (1001) => 6 (0110) 
- // Számok esetében szokás a ~ (bitenkénti komplemens) operátort használni: 
- (~(9))  // Eredménye: 6 
Röviden ennyi lenne.
Várom kérdéseiteket.
Metal