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:

Kapcsolási nyilatkozat folyamatábra
Hogyan működik a kapcsoló

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

Példa a kapcsoló esetére a C-ben

  1. Az adott programban megmagyaráztuk inicializált a változó 8-as értékű szám.
  2. 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.
  3. 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

Beágyazott kapcsoló C-ben

  1. Az adott programban két inicializált változót magyaráztunk el: az azonosítót és a jelszót
  2. 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).
  3. 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).
  4. 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.