hlmod.hu
https://hlmod.hu/

Feltételek, kondíciók
https://hlmod.hu/viewtopic.php?f=55&t=9138
Oldal: 1 / 1

Szerző:  Silent [ 2013.06.25. 09:54 ]
Hozzászólás témája:  Feltételek, kondíciók

A feltételek (conditionals) használatával végrehajthatsz kódrészleteket, bizonyos feltételek mellett.

Az if feltétel

Az egyik legfontosabb feltétel, az úgynevezett "ha...akkor" feltétel(if...then).
Működése azon alapszik, hogy kiértékeli a megadott kifejezést és eldönti, hogy az igaz, vagy hamis (true, false). Ha a kifejezés igaz, végrehajtja az adott kódot, ellenkező esetben továbblép.
Itt egy egyszerű példa az if feltétel szemléltetéséhez.
A kódrészlet ellenőrzi, hogy az "a" változó értéke egyenlő-e 10-zel. Amennyiben igen, beállítja az értékét 15-re.
Kód:
if (a == 10)
{
   a = 15
}

Jogosan kérdezhetitek, hogy mi van akkor, ha nem 10? A fenti esetben semmi nem történik, egyszerűen továbblép, de arra is van megoldás, hogy hogyan lehet ezt mégis kezelni.
Az alábbi példa ellenőrzi, hogy az "a" változó értéke egyenlő-e 10-zel, ha igen beállítja azt 15-re, de ha nem, akkor beállítja 20-ra.
Kód:
if (a == 10)
{
   a = 15
}
else
{
   a = 20
}

Az if feltétel felépítése roppantul egyszerű:

Kód:
if ( kifejezés ) { végrehajtandó kód }


A kifejezés helyére rengeteg operátort használhatsz, mitöbb, minden olyan kifejezést, melynek értéke végül igaz vagy hamis (true, false) értéket vesz fel.
Néhány példa, hogy miket lehet használni.
Kód:
if (a != 10) {} //ha "a" nem egyenlő 10-zel
if (a <  10) {} //ha "a" kisebb mint 10
if (a > 10) {}  //ha "a" nagyobb mint 10
if (a >= 10) {} //ha "a" nagyobb vagy egyenlő mint 10
if (a <= 10) {} //ha "a" kisebb vagy egyenlő mint 10
if (10+10) {}   //igazat fog visszaadni, tehát lefuttatja a kódot, mivel a 20 az igaz érték [i](true)[/i]
if (a && b) {}  //ha "a" és "b" is igaz
if ( ((5*5)/2) > c) {} //ha "c" kisebb mint 12.5
if (true) {}  //minden esetben lefut, nincs kivétel
if (false) {} //semmiképp sem fut le

Bővebb infó az operátorokról és kifejezésekről Metal tutorialjában.
AmxModX Alapozó 05. - Kifejezések, operátorok

Figyelem, a tömböket az if feltétel segítségével nem szabad így összehasonlítani:
Kód:
new tomb1[3]
new tomb2[3]
if (tomb1 == tomb2) {}

Ez helytelen!

Helyette egyesével kell összehasonlítani:
Kód:
if ((tomb1[0] == tomb2[0]) && 
    ( tomb1[1] ==  tomb2[1]) &&
    ( tomb1[2] ==  tomb2[2])) {}

Természetesen ezt egyesével végrehajtani egy nagyobb tömbön, vagy akár többdimenziós tömbön nem egy leányálom, erre majd a későbbiekben más tutorialban kitérünk.

Az if...else feltételt még magasabb szintre lehet emelni az else if[i] használatával.
Itt egy példa az [i]else if
használatára:

Kód:
if (a == 10)
{
   //Lefut, ha "a" egyenlő 10-zel.
}
else if (a < 10)
{
   //Lefut, ha "a" kisebb mint 10.
}
else if (a == 11)
{
   //Lefut, ha "a" egyenlő 11-gyel.
}
else
{
   //Lefut, ha a fentiek egyike sem teljesül, jelen esetben a 11-nél nagyobb érték esetén.
}


Fontos megjegyezni, hogy ha egy ilyen feltételben az egyik ág teljesül, az egész feltételből kilép és a másik ágat már nem fugja lefuttatni.

A switch feltétel

Egy példa a switch feltételre:
Kód:
switch (a)
{
    case 10:
    {
       //Lefut, ha "a" egyenlő 10-zel.
    }
    case 15:
    {
       //Lefut, ha "a" egyenlő 15-tel.
    }
    case 20:
    {
       //Lefut, ha "a" egyenlő 20-al.
    }
    default:
    {
       //Lefut, ha a fentiek egyike sem teljesül, jelen esetben nem 10, nem 15 és nem 20 az "a" értéke.
    }
}


Példa több feltétel megadására:

Kód:
switch (a)
{
    case 1, 2, 3:
    {
       //Lefut, ha "a" értéke 1 vagy 2 vagy 3.
    }
    case 4, 5, 6:
    {
       //Lefut, ha "a" értéke 4 vagy 5 vagy 6.
    }
    case 7, 8, 9:
    {
      //Lefut, ha "a" értéke 7 vagy 8 vagy 9.
    }
    default:
    {
       //Lefut, ha a fentiek egyike sem teljesül tehát nem 1,2,3,4,5,6,7,8,9.
    }
}


A switch segítségével akár intervallumokat is megadhatsz:

Kód:
switch (a)
{
    case 0 .. 50:
    {
       //Lefut, ha  0 <= a <= 50
    }
    case 51 .. 100:
    {
       //Lefut, ha 51 <= a <= 100
    }
 
    case 101 .. 200:
    {
      //Lefut, ha 101 <= a <= 200
    }
    default:
    {
       //Lefut, ha a fentiek egyike sem teljesül...
    }
}


Az if feltételhez hasonlóan, ha az egyik ág teljesül, a többi már nem fog.

Oldal: 1 / 1 Minden időpont UTC+02:00 időzóna szerinti
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/