Egyszerű elágazás: if... else...
Korábban már megtanultuk, hogy a programozás alapját az algoritmizálás - azaz a folyamatok lépésekre bontása, valamint megismerkedtünk a néhány legalapvetőbb utasítással, amelyeket a programunk végre tud hajtani. Vannak azonban helyzetek, amikor szeretnénk a kódunk egy részének a futtatását valamilyen feltételhez kötni.
Ha úgy érzed, hogy elakadtál, és több segítségre van szükséged, keress bizalommal! Kedvező árú magánórák keretében szívesen segítek elsajátítani a programozás alapjait.
Magánóra ajánlatokGondoljunk például egy való életbeli szituációra, például szeretnénk elindulni az egyetemre. Ha egy esős napot veszünk alapul, akkor ehhez ezeket a lépéseket fogjuk végrehajtani:
- Felkelek
- Megreggelizek
- Elteszem a táskámba a laptopomat
- Előveszem az esernyőmet.
- Kinyitom az esernyőmet.
- Elindulok az egyetemre.
Ez az algoritmus tökéletes, minden olyan esetre, amikor esik az eső. De mi a helyzet azokkal a napokkal, amikor ragyogóan süt a nap, és semmi nyoma nincs az esőnek? Ezeken a napokon sem elővenni, sem kinyitni nem szükséges az esernyőnket. Ezeket az utasításokat tehát csak akkor fogjuk végrehajtani, ha egy feltétel teljesül. Nézzük tehát az új algoritmusunkat:
- Felkelek
- Megreggelizek
- Elteszem a táskámba a laptopomat
- Ha az eső esik...
- Előveszem az esernyőmet.
- Kinyitom az esernyőmet.
- Elindulok az egyetemre.
Ehhez hasonló lehetőségünk a programozás során is van, ehhez használhatjuk az if vezérlési szerkezetet. Az if-nek megadhatunk egy logikai feltételt, amelyet a program megvizsgál. Ha a feltétel teljesül, akkor le fog futni az if belsejében található kódrészlet, ha pedig nem, akkor átugorja, és folytatódik a futtatás lentebb. Nézzünk egy példát:
Console.WriteLine("Szia!");
if (20 > 18)
{
Console.WriteLine("20 nagyobb 18-nál");
}
Console.WriteLine("Viszlát!");
[
{ "steps": [0], "variables": [ ], "hint": "A program kiírja a ''Szia!'' üzenetet a konzolra."},
{ "steps": [1], "variables": [ ], "hint": "A program ellenőrzi, hogy igaz-e a ''20 > 18'' kifejezés. Mivel ez a kifejezés igaz, ezért lefut az if-ben található kódrészlet."},
{ "steps": [2], "variables": [ ], "hint": "A program kiírja a ''20 nagyobb 18-nál'' szöveget a konzolra."},
{ "steps": [3], "variables": [ ], "hint": "A program kiírja a ''Viszlát!'' szöveget a konzolra. A programnak vége."}
]
A dolog már-már egészen jól működik, azonban lehetne mégjobb. Térjünk vissza egy kicsit az egyetemre indulás kérdéséhez. Esernyő ugyanis akkor sem árt, hogyha épp süt a nap, hisz sosem tudhatjuk, mi fog történni még az estig. Tehát az ideális az, ha eső esetén elővesszük az ernyőt, egyébként pedig eltesszük a táskánkba. Nézzük:
- Felkelek
- Megreggelizek
- Elteszem a táskámba a laptopomat
- Ha az eső esik...
- Előveszem az esernyőmet.
- Kinyitom az esernyőmet.
- Ellenkező esetben...
- Elteszem az esernyőt a táskámba.
- Elindulok az egyetemre.
Ezt megoldhatnánk két darab if-fel is, ha megvizgsáljuk a feltételt is, és a feltétel ellentétjét is. Tehát HA esik az eső, AKKOR előveszem az ernyőmet, majd HA nem esik az eső, akkor elrakom az ernyőmet. Van azonban erre egy egyszerűbb megoldás is, az if... else... szerkezet használata. A kezdeti if ugyanaz, és ugyanúgy is működik mint korábban, azonban megtoldjuk a végét egy else ággal, ami akkor fog lefutni, ha az if-ben található feltétel NEM teljesül. Nézzünk most egy olyan példát, amiben mindkét ág működése látható (a kód méretének csökkentése érdekében a kapcsos zárójeleket nem raktuk külön sorba - ez a program működésén nem változtat):
int i = 1;
if (i > 1) {
Console.WriteLine("igen");
} else {
Console.WriteLine("nem");
}
i = 2;
if (i > 1) {
Console.WriteLine("igen");
} else {
Console.WriteLine("nem");
}
Console.WriteLine("Vége!");
[
{ "steps": [0], "variables": [{"name":"i","value":"1"}], "hint": "Létrehozunk egy i nevű változót, és az 1 értéket adjuk neki. (a változó értékét efölött a doboz fölött követheted)"},
{ "steps": [1], "variables": [{"name":"i","value":"1"}], "hint": "Elérkeztünk az első if-hez. Az if megvizsgálja a feltételt. i értéke jelenleg 1, és 1 nem nagyobb mint 1, tehát a feltétel nem teljesül. Van azonban else ág, úgyhogy a program erre ugrik."},
{ "steps": [2], "variables": [{"name":"i","value":"1"}], "hint": "A feltétel nem teljesült, belépünk az else ágba."},
{ "steps": [3], "variables": [{"name":"i","value":"1"}], "hint": "A konzolra a ''nem'' üzenet kerül kiírásra."},
{ "steps": [4], "variables": [{"name":"i","value":"2"}], "hint": "Az else ágnak vége, folytatódik a program. Az i értékét 2-re állítjuk."},
{ "steps": [5], "variables": [{"name":"i","value":"2"}], "hint": "Ismét elérkeztünk egy elágazáshoz, megvizsgáljuk a feltételt. Az i értéke 2, 2 pedig több mint 1, tehát a feltétel teljesül, így most az if ág fut le."},
{ "steps": [6], "variables": [{"name":"i","value":"2"}], "hint": "A program az ''igen'' szót írja ki a konzolra."},
{ "steps": [7], "variables": [{"name":"i","value":"2"}], "hint": "Az if ágnak vége, így a program futása folytatódik az if... else... alatt. A program kiírja a konzolra hogy ''Vége!''. A programnak vége."}
]
Próbáld ki magad is! Nézd át a cikkünkhöz tartozó mintakódot - szerkeszd és futtasd közvetlenül a böngésződben, az info9 LineFlame fejlesztőeszközével!
Gyakorló feladatok
Az if... else... természetesen sok más, ennél komplexebb célra is használható, ha megértettük az alapvető működését. Íme néhány példafeladat, amiket megoldhatunk az if... else... vezérlési szerkezetek használatával:
1. Feladat: Kérjünk be három egész számot a felhasználótól, majd döntsük el, hogy ezek lehetnek-e egy háromszög oldalai.
2. Feladat: Kérjünk be három egész számot a felhasználótól, majd döntsük el, hogy ezek egy derékszögű háromszög oldalai-e vagy sem. (feltételezzük, hogy a felhasználó minden esetben az átfogót írja be utolsóként)
3. Feladat: Kérjünk be a felhasználótól két egész számot, majd írjuk ki a konzolra, hogy melyik szám a nagyobb, és mennyivel.
4. Feladat: Kérjünk be a felhasználótól egy jelszót, majd ellenőrizzük le, hogy a beírt jelszó megegyezik-e a "jelszo" szóval. Ha igen, írjuk ki hogy a jelszó helyes, ha nem, akkor írjuk ki, hogy a jelszó helytelen.
5. Feladat: Kérj be egy fagylalt ízt (szövegként) a felhasználótól! Ha a beírt íz citrom, vagy csoki, vagy eper, akkor a program írja ki hogy "Kapható", különben pedig hogy "Nem kapható"
6. Feladat: Kérj be egy 1 és 5 közötti számot a felhasználótól, majd ellenőrizd le, hogy a bekért szám valóban 1 és 5 között van-e. (feltételezheted, hogy a felhasználó tényleg számot írt be)
7. Feladat: Kérd be a felhasználótól egy téglalap két oldalát, majd a téglalap területét. Ellenőrizd le, hogy a felhasználó helyesen számolta-e ki a területet, és ennek megfelelően írd ki a "helyes" vagy a "helytelen" szót.
8. Feladat: Kérj be egy számot a felhasználótól, és add meg a szám abszolútértékét!
Olyan feladatokat, amelyekhez if...else... és ciklusok egyaránt szükségesek, a ciklusok alatt találhatsz.