kapcsoló… tok C-ben (C-ben a kapcsolási utasítás) példákkal
Mi az a Switch utasítás C-ben?
Switch utasítás C-ben egy változó értékét teszteli és több esettel hasonlítja össze. Miután megtalálta az esetegyezést, az adott esethez tartozó utasításblokk végrehajtásra kerül.
A kapcsoló blokkjában minden esetnek más a neve/száma, amelyre azonosítóként hivatkozunk. A felhasználó által megadott értéket a rendszer összehasonlítja a kapcsolóblokkon belüli összes esettel, amíg meg nem találja az egyezést.
Ha NEM található esetegyeztetés, akkor az alapértelmezett utasítás végrehajtásra kerül, és a vezérlés kilép a kapcsolóblokkból.
Kis- és nagybetűk szintaxisának váltása
A switch-case megvalósításának általános szintaxisa egy „C” programban a következő:
switch( expression ) { case value-1: Block-1; Break; case value-2: Block-2; Break; case value-n: Block-n; Break; default: Block-1; Break; } Statement-x;
- A kifejezés lehet egész vagy karakteres kifejezés.
- Az 1, 2, n érték olyan esetcímkék, amelyek az egyes esetek egyedi azonosítására szolgálnak. Ne feledje, hogy a kis- és nagybetűs címkék nem lehetnek azonosak, mivel ez problémákat okozhat a program végrehajtása során. Tegyük fel, hogy van két esetünk, amelyeknek ugyanaz a címkéje, mint az „1”. Ezután a program végrehajtása közben az elsőként megjelenő eset kerül végrehajtásra, bár azt szeretné, hogy a program egy második esetet hajtson végre. Ez problémákat okoz a programban, és nem biztosítja a kívánt kimenetet.
- A tokcímkék mindig kettősponttal ( : ) végződnek. Ezen esetek mindegyike blokkhoz kapcsolódik.
- A blokk nem más, mint több utasítás, amelyek egy adott esethez vannak csoportosítva.
- Valahányszor a kapcsoló végrehajtódik, a tesztkifejezés értékét összehasonlítjuk az összes olyan esettel, amelyet a kapcsolón belül definiáltunk. Tegyük fel, hogy a tesztkifejezés 4-es értéket tartalmaz. Ezt az értéket a program összehasonlítja az összes esettel, amíg a négyes címkét nem találja a program. Amint egy esetet talál, az adott esethez tartozó utasításblokk végrehajtásra kerül, és a vezérlés kilép a kapcsolóból.
- A break kulcsszó minden esetben egy adott eset végét jelzi. Ha nem teszünk meg minden esetben a szünetet, akkor annak ellenére, hogy az adott eset végrehajtásra kerül, a C-beli kapcsoló az összes esetet végrehajtja a vég eléréséig. Ennek nem szabad megtörténnie; ezért mindig minden esetben meg kell adnunk a break kulcsszót. A Break leállítja az esetet a végrehajtás után, és a vezérlő kiesik a kapcsolóból.
- Az alapértelmezett eset nem kötelező. Ha a tesztkifejezés értéke nem egyezik a kapcsolón belüli esetek egyikével sem, akkor az alapértelmezett érték kerül végrehajtásra. Ellenkező esetben nem szükséges alapértelmezettet írni a kapcsolóba.
- A váltás végrehajtása után a vezérlés az-x utasításra megy, és a program végrehajtása folytatódik.
Kapcsolási nyilatkozat folyamatábra
Az alábbi diagram bemutatja, hogyan kell kiválasztani a tokot a kapcsolóházban:
Példa a kapcsoló esetére a C-ben
Az alábbi program szemlélteti a kapcsoló használatát:
#include <stdio.h> int main() { int num = 8; switch (num) { case 7: printf("Value is 7"); break; case 8: printf("Value is 8"); break; case 9: printf("Value is 9"); break; default: printf("Out of range"); break; } return 0; }
output:
Value is 8
- Az adott programban megmagyaráztuk inicializált a változó 8-as értékű szám.
- A kapcsoló konstrukciót használjuk a num változóban tárolt érték összehasonlítására és az illesztett esethez tartozó utasításblokk végrehajtására.
- Ebben a programban, mivel a num változóban tárolt érték nyolc, egy kapcsoló végrehajtja azt az esetet, amelynek esetcímkéje 8. Az eset végrehajtása után a vezérlés kiesik a kapcsolóból, és a sikeres eredménnyel a program leáll. az érték kinyomtatása a kimeneti képernyőn.
Próbálja meg megváltoztatni a num változó értékét, és vegye észre a változást a kimenetben.
Például a következő alapértelmezett programot tekintjük:
#include <stdio.h> int main() { int language = 10; switch (language) { case 1: printf("C#\n"); break; case 2: printf("C\n"); break; case 3: printf("C++\n"); break; default: printf("Other programming language\n");}}
output:
Other programming language
Ha C-ben a kapcsolóbetétekkel dolgozik, több esetet egyedi címkékkel csoportosít. Minden esetben be kell vezetnie egy break utasítást, hogy a switch utasítás végén elágasszon.
Az opcionális alapértelmezett eset akkor fut, ha nincs más egyezés.
A következő váltási utasítást vesszük figyelembe:
#include <stdio.h> int main() { int number=5; switch (number) { case 1: case 2: case 3: printf("One, Two, or Three.\n"); break; case 4: case 5: case 6: printf("Four, Five, or Six.\n"); break; default: printf("Greater than Six.\n");}}
output:
Four, Five, or Six.
Beágyazott kapcsoló C-ben
In C, akkor lehet egy belső kapcsolót egy külső kapcsolóba ágyazni. Ezenkívül a belső és a külső kapcsoló esetállandóinak közös értékei lehetnek, és nem ütköznek egymással.
A következő programnak tekintjük a felhasználónak saját azonosítóját beírni, ha az azonosító érvényes, akkor kéri a jelszó megadását, ha a jelszó helyes, akkor a program kiírja a felhasználó nevét, ellenkező esetben a program kiírja a Hibás Jelszó és ha az azonosító nem létezik, a program hibás azonosítót ír ki
#include <stdio.h> int main() { int ID = 500; int password = 000; printf("Plese Enter Your ID:\n "); scanf("%d", & ID); switch (ID) { case 500: printf("Enter your password:\n "); scanf("%d", & password); switch (password) { case 000: printf("Welcome Dear Programmer\n"); break; default: printf("incorrect password"); break; } break; default: printf("incorrect ID"); break; } }
output:
Plese Enter Your ID: 500 Enter your password: 000 Welcome Dear Programmer
- Az adott programban két inicializált változót magyaráztunk el: az azonosítót és a jelszót
- Egy külső kapcsolókonstrukciót használnak az ID változóban megadott érték összehasonlítására. Végrehajtja az egyeztetett esethez tartozó utasításblokkot (ha ID==500).
- Ha a blokk utasítást a párosított esettel hajtják végre, akkor egy belső kapcsoló segítségével összehasonlítja a jelszó változóban megadott értékeket, és végrehajtja az egyeztetett esethez kapcsolódó utasításokat (ha jelszó==000).
- Ellenkező esetben a kapcsoló kis- és nagybetűje az alapértelmezett esetet váltja ki, és kiírja a megfelelő szöveget a program vázlatára vonatkozóan.
Miért van szükségünk Switch tokra?
Egy lehetséges probléma van a ha-más kijelentés ami a program összetettsége növekszik, amikor az alternatív útvonalak száma növekszik. Ha több if-else konstrukciót használ a programban, a program nehezen olvasható és érthetővé válhat. Néha még a fejlesztőt is megzavarhatja, aki maga írta a programot.
A probléma megoldása a switch utasítás.
A switch nyilatkozat szabályai
- A kifejezésnek mindig eredményre kell futnia.
- Az esetcímkéknek állandónak és egyedinek kell lenniük.
- A tokok címkéinek kettősponttal ( : ) kell végződniük.
- A break kulcsszónak minden esetben jelen kell lennie.
- Csak egy alapértelmezett címke lehet.
- Több switch utasítást is egymásba ágyazhatunk.
Összegzésként
- A kapcsoló egy döntéshozó konstrukcióC. "
- Egy kapcsolót olyan programban használnak, ahol több döntés is érintett.
- A kapcsolónak tartalmaznia kell egy végrehajtható tesztkifejezést.
- Minden esetnek tartalmaznia kell egy break kulcsszót.
- Az esetcímkének állandónak és egyedinek kell lennie.
- Az alapértelmezett beállítás nem kötelező.
- Több switch utasítás is beágyazható egymásba.