A feltételek (conditionals) használatával végrehajthatsz kódrészleteket, bizonyos feltételek mellett.Az if feltételAz 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átorokFigyelem, 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ételEgy 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.