hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.03.28. 17:29



Jelenlévő felhasználók

Jelenleg 259 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 258 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: Google [Bot] az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 8 hozzászólás ] 
Szerző Üzenet
HozzászólásElküldve: 2012.02.17. 09:47 
Offline
Imperátor
Avatar

Csatlakozott: 2009.04.21. 09:33
Hozzászólások: 3991
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 135 alkalommal
Kifejezések, operátorok

A 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:
  1. // 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.

  2. 0

  3. // A zárójelezések is működnek ebben az esetben, és könnyebb olvashatóságot biztosít

  4. (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átorok
Kód:
  1. // Példák matematikai kifejezésekre.

  2. // Operátorok:

  3. // + mint összeadás

  4. // - mint kivonás

  5. // * mint szorzás

  6. // / mint osztás

  7. // % mint maradékos osztás, ami a maradékot fogja visszaadni (pl 7%3 értéke 1)

  8. (2+3)                       // Eredmény: 5

  9. ((2*7)+3)                   // Eredmény: 17

  10. ((((1+3)/2)*4)-6)           // Eredmény: 2

  11. ((2*10) % 7)                 // Eredmény: 6

  12. // További kifejezésekre példa

  13. (true)                      // Eredmény: true

  14. (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:
  1. new a = 3                   // 'a' változó létrehozva 3-as kezdeti értékkel (a==3)

  2. new b = a + 7               // 'b' változó létrehozva ( a + 7 )-as kezdeti értékkel (b==10)

  3. a = a - 1;                  // 'a' értékét csökkentjük eggyel (a==2)

  4. new c = b * a / 2           // 'c' változó létrehozva ( b * a / 2 ) értékkel (c==10)

Post/pre fixes operátorok
Kód:
  1. a++          // visszaadja (a)-t, majd növeli egyel.

  2. ++a          // növeli (a)t, és utána adja vissza

  3. // Lényegében:

  4. /*

  5. 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.

  6. ++változó › prefixes alak, nincs átmeneti változó, azonnal növeli az értékét, általában ezt használjuk.

  7. */

  8.  

  9. // Hasonló módon működik a -- operátor is

  10. a--

  11. --a

  12. //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.

  13. a = a + 1

  14. // Az ++a ezzel ellentétben direktben növeli az értékét, nem szükséges létrehoznia ideiglenes változót.

  15.  


"Csonkolt" operátorműveletek

Sok 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:
  1. a = a OP y

Néhány operátor esetében használhatunk rövidítéseket, amik így néz ki:
Kód:
  1. a OP= x

Alábbi műveleteknek létezik rövidebb alakja
Kód:
  1. a += 1       // Növeli 'a'-t 1-el

  2. a -= b       // 'a' értékét csökenti 'b' vel

  3. a *= 0       // 'a'-t szorozza 0-val

  4. a /= 2       // 'a'-t ossza 2-vel


Logikai kifejezések és operátorok
Nem 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.  

  2. (1 && 0)                    // Ez false, mivel 0 false vissza (lsd feljebb)

  3. (1 && 2)                    // Mindkét kifejezés true így true lesz a && eredménye

  4. (true && false)             // false

  5. (false && false)            // false

  6. (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. (1 || 0)                    // true, mivel az első kifejezés (1) true

  2. (1 || 2)                    // true

  3. (true || false)             // true

  4. (false || false)            // false

  5. (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:
  1. // Például a 11 és 8 bitenkénti és eredménye 8, mivel:

  2. // 11 (1011) és 8 (1000)

  3. (11 & 8) //Eredménye 8 (1000)

  4. // 4 (00100) és 16 (10000)

  5. (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:
  1. // 9 (1001) és 3 (0011)

  2. (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:
  1. // Példák:

  2. // 2 (00010) elcsúsztatva 3 - mal:

  3. (2 << 3) eredménye: 16 (10000)

  4. // Másik irányba való shiftelés:

  5. // 16 (10000) 3-mal:

  6. (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:
  1. (!true)  // Eredménye: false

  2. (!false) // Eredménye: true

  3. !9 // Eredménye: 6  (9 (1001) => 6 (0110)

  4. // Számok esetében szokás a ~ (bitenkénti komplemens) operátort használni:

  5. (~(9))  // Eredménye: 6


Röviden ennyi lenne.
Várom kérdéseiteket.
Metal

_________________
Kód:
I'm back

Kép

Ők köszönték meg Metal nek ezt a hozzászólást (összesen 2): kiki (2012.09.29. 13:06) • Jerikoo (2014.08.26. 11:25)
  Népszerűség: 4.55%


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2012.02.17. 14:07 
Offline
Developer
Avatar

Csatlakozott: 2011.06.01. 21:11
Hozzászólások: 7962
Megköszönt másnak: 295 alkalommal
Megköszönték neki: 535 alkalommal
Jólett Metal, ezek nagy részével már találkoztam szóval ezzel kapcsolatban nincs kérdésem!

_________________
http://www.easyrankup.eu


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2012.02.17. 19:06 
Offline
Signore Senior
Avatar

Csatlakozott: 2011.09.09. 17:39
Hozzászólások: 4020
Megköszönt másnak: 12 alkalommal
Megköszönték neki: 139 alkalommal
Jöhet a következő :) XD


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2015.12.05. 20:12 
Offline
Signore Senior
Avatar

Csatlakozott: 2011.09.09. 17:39
Hozzászólások: 4020
Megköszönt másnak: 12 alkalommal
Megköszönték neki: 139 alkalommal
Öhm. Hol marad ez az operátor? Vagy ez Pawn-ban nem létezik? :D

Kód:
 condition ? exp1 : exp2 


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2015.12.05. 20:23 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2015.04.10. 19:49
Hozzászólások: 610
Megköszönt másnak: 53 alkalommal
Megköszönték neki: 147 alkalommal
De-de, létezik pawnban is csak ritkán használják.

_________________
Néha itt, de többször nem.


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2015.12.05. 20:32 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2014.09.08. 22:21
Hozzászólások: 3014
Megköszönt másnak: 96 alkalommal
Megköszönték neki: 555 alkalommal
Pedig használják, hát most a sok skin menünél mióta szólt crb mindenki úgy írja a skin után,hogy aktív vagy nem, nem if-el :D

_________________
GitHub - mforce


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2015.12.05. 20:39 
Offline
Nagyúr
Avatar

Csatlakozott: 2014.08.24. 18:28
Hozzászólások: 584
Megköszönt másnak: 122 alkalommal
Megköszönték neki: 120 alkalommal
True, az enyémben is úgy van. :lol:
Bár nekem mforce szólt. :)


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2015.12.10. 18:34 
Offline
Őskövület
Avatar

Csatlakozott: 2012.03.22. 18:22
Hozzászólások: 2978
Megköszönt másnak: 115 alkalommal
Megköszönték neki: 368 alkalommal
Nekem senki nem szólt,és nem is használom.he

_________________
Blasenkampfwagen

https://discord.gg/uBYnNnZP
GTA:PURSUIT MTA


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 8 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole