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.

  • 🔤 Ha állítás: Egy if utasítás csak akkor futtatja le a blokkját, ha a feltétel nullától eltérő igaz érték, míg a nulla hamis értéket jelent.
  • 🔀 Ha-különben: Az if-else konstrukció egy hamis ágat ad hozzá, egy blokkot futtatva, amikor a feltétel igaz, és egy másikat, amikor hamis.
  • 🇧🇷 Relációs operátorok: Hat operátor (<, <=, >, >=, ==, !=) építi fel azokat a logikai kifejezéseket, amelyeket minden feltétel tesztel.
  • 🪜 Különben-ha létra: Egy beágyazott else-if létra felülről lefelé ellenőrzi a kifejezéseket, és az első igazi ágat, vagy egy alapértelmezett else-t futtatja.
  • Ternáris operátor: A ?: feltételes kifejezés egy kompakt if-else függvényt ír, amely egyetlen sorban két érték egyikét adja vissza.
  • 🤖 AI segítség: A GitHub Copilot vázlatokat készít és felülvizsgálja az if-else logikát, megjelöli a hiányzó zárójeleket, és tisztább feltételeket javasol.

C Feltételes utasítás: HA, HA HA HA ÉS BEGYÚJTOTT HA HA

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:

  1. Ha nyilatkozat
  2. 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.

Ha utasítás folyamatábrája C-ben

  1. A fenti programban két változót inicializáltunk num1, num2 értékkel 1, illetve 2 értékkel.
  2. 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.
  3. Í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

C If-Else utasítás folyamatábrája

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

If-Else utasítás példa kimenet C-ben

  1. 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.
  2. Itt adtunk meg egy num<10 feltételt, mert össze kell hasonlítanunk az értékünket 10-el.
  3. 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.
  4. 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.

Beágyazott If-else utasítás C-ben

  1. Először deklaráltunk egy num változót, amelynek értéke 1. Ezután if-else konstrukciót használtunk.
  2. 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.
  3. 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.
  4. 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

Beágyazott Else-if létra C-ben

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.

  1. Jelekkel inicializáltunk egy változót. Az else-if létraszerkezetben különféle feltételeket biztosítottunk.
  2. 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.
  3. Ha az első vizsgálati feltétel hamisnak bizonyul, akkor azt összehasonlítják a második feltétellel.
  4. 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.

GYIK

Az if-else függvény bármilyen logikai kifejezést tesztel, beleértve a tartományokat és a relációs ellenőrzéseket is. kapcsoló…tok egy változót hasonlít össze fix konstans értékekkel, és sok esetben gyorsabb ugrótáblává fordul.

A lógó else probléma az a kétértelműség, hogy egy else melyikhez tartozik, ha `if` utasítások zárójelek nélkül vannak beágyazva. C-ben egy else mindig a legközelebbi nem párosítható `if` utasítással párosul. A kapcsos zárójelek hozzáadása megszünteti a zavart.

Igen. A logikai operátorok feltételeket illesztenek össze: az && mindkét oldal igaznak kell lennie, az || legalább az egyik oldalnak igaznak kell lennie, a ! pedig megfordítja az eredményt. Például, ha a (életkor > 18 && állampolgár) két feltételt tesztel együtt egy if műveletben.

A zárójelek használata opcionális, ha a törzs egyetlen utasítás, így a C csak a következő sort futtatja. Két vagy több utasítás esetén a zárójelek szükségesek a csoportosításukhoz. A zárójelek használata mindig biztonságos szokás, amely megakadályozza a logikai hibákat.

A rövidzárlat kiértékelése leáll, amint az eredmény ismertté válik. && esetén a hamis bal oldal kihagyja a jobb oldalt. || esetén a valódi bal oldal kihagyja a jobb oldalt. Ez elkerüli a felesleges munkát és a nem biztonságos műveleteket.

Igen. Egy különben-ha létra kiértékelése felülről lefelé halad, és az első igaz feltételnél megáll. Ha az általános feltételeket a szűkek elé helyezzük, az elrejtheti a szűk eseteket, ezért a teszteket a legspecifikusabbtól a legáltalánosabbig kell rendezni.

Igen. A mesterséges intelligencia által fejlesztett kódolási asszisztensek feltételes blokkokat készítenek egy megjegyzésből, hosszú if-else láncokat alakítanak át letisztultabb struktúrákká, és jelzik a valószínűsíthető hibákat, például az = karakter használatát az == helyett. Mindig teszteljék a generált logikát, mielőtt megbíznak benne.

GitHub másodpilóta automatikusan kiegészíti az „ha”, „else-ha” és beágyazott feltételeket a megjegyzéseidből vagy a környező kódból. Relációs és logikai kifejezéseket javasol, és képes a hiányzó zárójeleket is hozzáadni, bár érdemes minden javaslatot átnézned.

Foglald össze ezt a bejegyzést a következőképpen: