Feltételes utasítások C-ben: If, Else, Nested If példával
⚡ Okos összefoglaló
A C nyelvben a feltételes utasítások a program folyását úgy szabályozzák, hogy a kódblokkokat csak akkor hajtják végre, ha egy tesztelt feltétel igaznak értékelődik ki, lehetővé téve a döntéshozatalt if, if-else, beágyazott és else-if létrakonstrukciókon keresztül.

Mi az a feltételes állítás C-ben?
A C programozásban a feltételes utasításokat arra használjuk, hogy feltételek alapján hozzunk döntéseket. A feltételes utasítások szekvenciálisan hajtódnak végre, ha nincsenek feltételek az utasítások körül. Ha egy utasításblokkhoz feltételt rendelünk, a végrehajtási folyamat a feltétel által kiértékelt eredmény alapján változhat. Ezt a folyamatot döntéshozatalnak nevezzük a C nyelvben.
Eltérően ciklusok C-ben Az ismétlődő kód, a feltételes utasítások egy útvonalat választanak.
A 'C' programozásban a feltételes utasítások a következő két konstrukció segítségével lehetségesek:
- Ha nyilatkozat
- If-else utasítás
Elágazásnak is nevezik, mivel a program a kiértékelt feltétel eredménye alapján eldönti, hogy melyik utasítást hajtsa végre.
Ha nyilatkozat
Ez az egyik erős feltételes kijelentés. Az If utasítás felelős egy program végrehajtási folyamatának módosításáért. Ha az utasítást mindig feltétellel használjuk. A feltételt először a rendszer értékeli, mielőtt bármilyen utasítást végrehajtana az If törzsében. Az if utasítás szintaxisa a következő:
if (condition)
instruction;
A feltétel igazra vagy hamisra értékelődik. A True mindig nem nulla érték, a false pedig olyan érték, amely nullát tartalmaz. Az utasítások lehetnek egyetlen utasítások vagy egy kódblokk, amelyet kapcsos kapcsos zárójelek { } zárnak.
A következő program bemutatja az if construct használatát a 'C' programozásban:
#include<stdio.h> int main() { int num1=1; int num2=2; if(num1<num2) //test-condition { printf("num1 is smaller than num2"); } return 0; }
output:
num1 is smaller than num2
A fenti program bemutatja az if konstrukció használatát két szám egyenlőségének ellenőrzésére.
- A fenti programban két változót inicializáltunk num1, num2 értékkel 1, illetve 2 értékkel.
- Ezután az if-t tesztkifejezéssel ellenőriztük, hogy melyik szám a legkisebb és melyik a legnagyobb. Relációs kifejezést használtunk az if konstrukcióban. Mivel a num1 értéke kisebb, mint a num2, a feltétel igaz lesz.
- Így kiírja az utasítást az If blokkjába. Ezt követően a vezérlés a mondaton kívülre kerül, és sikeres eredménnyel a program leáll.
Relációs Operatorzok
A C nyelvben hat relációs operátor található, amelyek segítségével logikai kifejezéseket lehet megfogalmazni döntéshozatalhoz és feltételek teszteléséhez, igaz vagy hamis értéket adva vissza:
<– kevesebb, mint<=— kisebb vagy egyenlő, mint>– nagyobb, mint>=— nagyobb vagy egyenlő, mint==— egyenlő!=– nem egyenlő
Figyeljük meg, hogy az egyenlő teszt (==) eltér a hozzárendelési operátortól (=), mert ez az egyik leggyakoribb probléma, amellyel a programozó szembesül, ha összekeveri őket.
Például:
int x = 41; x =x+ 1; if (x == 42) { printf("You succeed!");}
Kimenet:
You succeed
Ne feledje, hogy a nullától eltérő értékre kiértékelő feltétel igaznak minősül.
Például:
int present = 1; if (present) printf("There is someone present in the classroom \n");
output:
There is someone present in the classroom
Az If-Else nyilatkozat
Az if-else utasítás az If kibővített változata. Az if-else általános alakja a következő:
if (test-expression)
{
True block of statements
}
Else
{
False block of statements
}
Statements;
Egy ilyen típusú konstrukcióban, ha a tesztkifejezés értéke igaz, akkor az igaz utasításblokk kerül végrehajtásra. Ha a tesztkifejezés értéke hamis, akkor a hamis utasításblokk kerül végrehajtásra. Mindenesetre a végrehajtás után a vezérlés automatikusan átkerül az If blokkján kívül eső utasításokra.
A következő programok illusztrálják az if-else konstrukció használatát:
Inicializálunk egy változót valamilyen értékkel, és írunk egy programot, amely meghatározza, hogy az érték tíznél kisebb vagy tíznél nagyobb.
Kezdjük.
#include<stdio.h> int main() { int num=19; if(num<10) { printf("The value is less than 10"); } else { printf("The value is greater than 10"); } return 0; }
output:
The value is greater than 10
- Egy 19 értékű változót inicializáltunk. Egy 'C' programmal meg kell állapítanunk, hogy a szám nagyobb vagy kisebb-e 10-nél. Ehhez az if-else konstrukciót használtuk.
- Itt adtunk meg egy num<10 feltételt, mert össze kell hasonlítanunk az értékünket 10-el.
- Mint látható, az első blokk mindig igaz blokk, ami azt jelenti, hogy ha a tesztkifejezés értéke igaz, akkor az első blokk, amely az If, végrehajtásra kerül.
- A második blokk egy else blokk. Ez a blokk tartalmazza azokat az utasításokat, amelyek akkor hajtódnak végre, ha a tesztkifejezés értéke hamis lesz. Programunkban a num értéke nagyobb, mint tíz, így a tesztfeltétel hamis lesz, különben a blokk végrehajtásra kerül. Így a kimenetünk egy else blokkból lesz, amely „Az érték nagyobb, mint 10”. Az if-else után a program sikeres eredménnyel leáll.
A 'C' programozásban több if-else konstrukciót is használhatunk egymáson belül, amelyeket if-else utasítások egymásba ágyazásának nevezünk.
Feltételes kifejezések
Az if-else utasítások kifejezésének egy másik módja a ?: operátor bevezetése. Egy feltételes kifejezésben a ?: operátorhoz csak egy utasítás tartozik, amely az if és az else operátorokhoz kapcsolódik.
Például:
#include <stdio.h> int main() { int y; int x = 2; y = (x >= 6) ? 6 : x;/* This is equivalent to: if (x >= 5) y = 5; else y = x; */ printf("y =%d ",y); return 0;}
output:
y =2
Beágyazott If-else nyilatkozatok
Ha döntési sorozatra van szükség, a beágyazott if-else használatos. A beágyazás azt jelenti, hogy egy if-else konstrukciót használunk egy másikon belül.
Írjunk programot a beágyazott if-else használatának szemléltetésére.
#include<stdio.h> int main() { int num=1; if(num<10) { if(num==1) { printf("The value is:%d\n",num); } else { printf("The value is greater than 1"); } } else { printf("The value is greater than 10"); } return 0; }
output:
The value is:1
A fenti program ellenőrzi, hogy egy szám kisebb vagy nagyobb-e 10-nél, és az eredményt beágyazott if-else konstrukcióval nyomtatja ki.
- Először deklaráltunk egy num változót, amelynek értéke 1. Ezután if-else konstrukciót használtunk.
- A külső if-else függvényben a megadott feltétel azt vizsgálja, hogy egy szám kisebb-e, mint 10. Ha a feltétel igaz, akkor és csak akkor hajtja végre a belső blokkot. Ebben az esetben a feltétel igaz, ezért a belső blokk feldolgozásra kerül.
- A belső blokkban ismét van egy feltétel, amely azt vizsgálja, hogy a változónk tartalmazza-e az 1 értéket vagy sem. Amikor egy feltétel igaz, akkor az If blokkot dolgozza fel, egyébként egy else blokkot. Ebben az esetben a feltétel igaz, ezért az If blokk végrehajtódik, és az érték megjelenik a kimeneti képernyőn.
- A fenti program kinyomtatja egy változó értékét, majd sikeresen kilép.
Próbáld meg módosítani az értékét változó nézd meg, hogyan viselkedik a program.
MEGJEGYZÉS: Beágyazott if-else esetén óvatosnak kell lennünk a behúzással, mivel több if-else konstrukció is részt vesz ebben a folyamatban, így nehézzé válik az egyes konstrukciók kitalálása. A megfelelő behúzás megkönnyíti a program olvasását.
Beágyazott Else-if utasítások
A beágyazott else-if akkor használatos, ha többutas döntésekre van szükség.
Az else-if létrák felépítésének általános szintaxisa a „C” programozásban a következő:
if (test - expression 1) { statement1; } else if (test - expression 2) { Statement2; } else if (test - expression 3) { Statement3; } else if (test - expression n) { Statement n; } else { default; } Statement x;
Ez a fajta struktúra az else-if létra néven ismert. Ez a lánc általában úgy néz ki, mint egy létra, ezért else-if létrának is nevezik. A tesztkifejezések felülről lefelé kiértékelődnek. Amikor egy igaz tesztkifejezést találunk, a hozzá tartozó utasítás végrehajtódik. Amikor mind az n tesztkifejezés hamis lesz, akkor az alapértelmezett else utasítás hajtódik végre.
Lássuk a tényleges működést egy program segítségével.
#include<stdio.h> int main() { int marks=83; if(marks>75){ printf("First class"); } else if(marks>65){ printf("Second class"); } else if(marks>55){ printf("Third class"); } else{ printf("Fourth class"); } return 0; }
output:
First class
A fenti program a tesztben szerzett pontszámok szerint nyomtatja ki az osztályzatot. A fenti programban az else-if létra konstrukciót használtuk.
- Jelekkel inicializáltunk egy változót. Az else-if létraszerkezetben különféle feltételeket biztosítottunk.
- A változójelek értékét a rendszer összehasonlítja az első feltétellel, mivel igaz, hogy a hozzá tartozó állítás ki lesz nyomtatva a kimeneti képernyőn.
- Ha az első vizsgálati feltétel hamisnak bizonyul, akkor azt összehasonlítják a második feltétellel.
- Ez a folyamat addig folytatódik, amíg az összes kifejezés kiértékelésre nem kerül, különben a vezérlés kikerül az else-if létráról, és az alapértelmezett utasítás kerül kinyomtatásra.
Próbálja meg módosítani az értéket, és vegye észre a változást a kimenetben.





