C programozás III. lecke: Feltételes elágazások és logikai problémák



A programok működése ritkán lineáris. Ahhoz, hogy a szoftver képes legyen reagálni a bemenő adatok változásaira, logikai feltételek mentén elágazásokat kell létrehoznunk.

1. Az if-else feltételes szerkezet

A logikai döntések alapja az `if` utasítás. A zárójelbe írt feltételnek logikai igaz (True) vagy hamis (False) értéket kell visszaadnia. Ha a feltétel teljesül, a kapcsos zárójelek közé zárt kódblokk végrehajtódik. Ha nem teljesül, a program továbblép, vagy az `else` ágban megadott alternatív utasítást futtatja.

Ha kettőnél több esetet kell kezelni, az `else if` segítségével újabb konkrét feltételeket fűzhetünk a láncba:

if (a > b) {
    printf("Az elso szam nagyobb.");
}
else if (a == b) {
    printf("A ket szam egyenlo.");
}
else {
    printf("A masodik szam nagyobb.");
}


2. Blokkhatárok: A kapcsos zárójelek szerepe

Míg a Pythonban a behúzás határozza meg a struktúrát, a C nyelvben a kapcsos zárójelek { } jelölik ki, hogy egy-egy feltétel teljesülése esetén mely sorok tartoznak össze. Ha egy ághoz csak egyetlen sornyi utasítás tartozik, a zárójelek elhagyhatóak, de a kód olvashatósága és a későbbi hibák elkerülése érdekében javasolt a következetes használatuk.

3. Logikai buktatók a feltételek láncolásakor

Gyakori strukturális hiba, amikor az elágazások sorrendje vagy logikája nem fedi le a teljes tartományt. Ha az `if` és `else if` ágakat rosszul fűzzük össze, előfordulhat, hogy a program olyan ágra fut rá, amely hamis eredményt ad (például egyenlőséget jelez akkor is, ha az egyik szám valójában nagyobb). A feltételek tesztelésekor mindig ellenőrizni kell a határértékeket (pozitív, negatív és nulla bemeneteket egyaránt).