kytkin…kotelo C:ssä (Switch Statement C:ssä) esimerkein

Mikä on Switch Statement C:ssä?

Vaihda lausetta C:ssä testaa muuttujan arvon ja vertaa sitä useisiin tapauksiin. Kun tapausosuma on löydetty, kyseiseen tapaukseen liittyvä lausekelohko suoritetaan.

Jokaisella kytkimen lohkon tapauksella on eri nimi/numero, jota kutsutaan tunnisteeksi. Käyttäjän antamaa arvoa verrataan kaikkiin kytkinlohkon sisällä oleviin tapauksiin, kunnes osuma löytyy.

Jos tapauskohtaa EI löydy, oletuskäsky suoritetaan ja ohjaus poistuu kytkinlohkosta.

Vaihda kirjainkokosyntaksia

Yleinen syntaksi siitä, kuinka kytkintapaus toteutetaan C-ohjelmassa, on seuraava:

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;
  • Lauseke voi olla kokonaislukulauseke tai merkkilauseke.
  • Arvo-1, 2, n ovat tapaustunnisteita, joita käytetään tunnistamaan jokainen tapaus erikseen. Muista, että kirjainkokomerkinnät eivät saa olla samoja, koska se voi aiheuttaa ongelmia ohjelmaa suoritettaessa. Oletetaan, että meillä on kaksi tapausta, joissa on sama nimiö kuin "1". Sitten ohjelmaa suoritettaessa ensimmäisenä esiintyvä tapaus suoritetaan, vaikka haluat ohjelman suorittavan toisen tapauksen. Tämä aiheuttaa ongelmia ohjelmassa eikä tuota haluttua tulosta.
  • Tapaustarrat päättyvät aina kaksoispisteeseen ( : ). Jokainen näistä tapauksista liittyy lohkoon.
  • Lohko on vain useita lausekkeita, jotka on ryhmitelty tiettyä tapausta varten.
  • Aina kun kytkin suoritetaan, testilausekkeen arvoa verrataan kaikkiin tapauksiin, jotka olemme määrittäneet kytkimen sisällä. Oletetaan, että testilauseke sisältää arvon 4. Tätä arvoa verrataan kaikkiin tapauksiin, kunnes ohjelmasta löytyy nimike neljä. Heti kun tapaus löytyy, kyseiseen tapaukseen liittyvä lausekelohko suoritetaan ja ohjaus poistuu kytkimestä.
  • Taukoavainsana kussakin tapauksessa osoittaa tietyn tapauksen päättymisen. Jos emme laita taukoa jokaiseen tapaukseen, niin vaikka tietty tapaus suoritetaan, C:n kytkin jatkaa kaikkien tapausten suorittamista, kunnes loppu saavutetaan. Näin ei pitäisi tapahtua; siksi meidän on aina laitettava break-avainsana jokaisessa tapauksessa. Break lopettaa tapauksen, kun se on suoritettu, ja ohjaus putoaa kytkimestä.
  • Oletustapaus on valinnainen. Aina kun testilausekkeen arvo ei täsmää minkään kytkimen sisällä olevan tapauksen kanssa, oletusarvo suoritetaan. Muuten kytkimeen ei tarvitse kirjoittaa oletusarvoa.
  • Kun kytkin on suoritettu, ohjaus siirtyy käskyyn-x ja ohjelman suoritus jatkuu.

Vaihtolauseen vuokaavio

Seuraava kaavio havainnollistaa, kuinka kotelo valitaan kytkinkotelossa:

Vaihtolauseen vuokaavio
Kuinka Switch toimii

Esimerkki kytkinkotelosta C:ssä

Seuraava ohjelma havainnollistaa kytkimen käyttöä:

#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;
    }

lähtö:

Value is 8

Esimerkki kytkinkotelosta C:ssä

  1. Annetussa ohjelmassa on selitetty alustettu a muuttuja numero arvolla 8.
  2. Kytkinrakennetta käytetään vertaamaan muuttujaan num tallennettua arvoa ja suorittamaan sovitettuun tapaukseen liittyvä lausekelohko.
  3. Koska tässä ohjelmassa muuttujaan num tallennettu arvo on kahdeksan, kytkin suorittaa tapauksen, jonka case-nimi on 8. Tapauksen suorittamisen jälkeen ohjaus putoaa kytkimestä ja ohjelma lopetetaan onnistuneella tuloksella arvon tulostaminen tulostusnäytölle.

Yritä muuttaa muuttujan num arvoa ja huomaa muutos lähdössä.

Tarkastellaan esimerkiksi seuraavaa oletusarvoista ohjelmaa:

#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");}}

lähtö:

Other programming language

Kun työskentelet kytkinkotelon kanssa C:ssä, ryhmittelet useita tapauksia yksilöllisillä nimiöillä. Sinun on esitettävä break-lause kussakin tapauksessa haarautuaksesi switch-käskyn lopussa.

Valinnainen oletustapaus suoritetaan, kun muita osumia ei tehdä.

Otamme huomioon seuraavan vaihtolausekkeen:

#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");}}

lähtö:

Four, Five, or Six.

Sisäkkäinen kytkin C:ssä

In C, meillä voi olla sisäinen kytkin upotettuna ulompaan kytkimeen. Myös sisäisen ja ulkoisen kytkimen tapausvakioilla voi olla yhteisiä arvoja ja ilman ristiriitoja.

Käsittelemme seuraavan ohjelman jonka käyttäjä kirjoittaa oman tunnuksensa, jos tunnus on kelvollinen se pyytää häntä syöttämään salasanansa, jos salasana on oikein ohjelma tulostaa käyttäjän nimen, muuten ohjelma tulostaa Väärin Salasana ja jos tunnusta ei ole olemassa, ohjelma tulostaa Väärän tunnuksen

#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;
        }
}

lähtö:

Plese Enter Your ID:
 500
Enter your password:
 000
Welcome Dear Programmer

Sisäkkäinen kytkin C:ssä

  1. Annetussa ohjelmassa on selitetty alustettu kaksi muuttujaa: ID ja salasana
  2. Ulkoista kytkinrakennetta käytetään muuttujan ID:n arvon vertailuun. Se suorittaa sovitettuun tapaukseen liittyvän lausekkeen lohkon (kun ID==500).
  3. Jos lohkokäsky suoritetaan täsmäytetyllä kirjainkoolla, sisemmän kytkimen avulla verrataan muuttujan salasanaan syötettyjä arvoja ja suoritetaan vastaavaan tapaukseen linkitetyt lauseet (kun salasana==000).
  4. Muussa tapauksessa kytkentätapa laukaisee oletustapauksen ja tulostaa ohjelman ääriviivaa koskevan tekstin.

Miksi tarvitsemme Switch-kotelon?

Siinä on yksi mahdollinen ongelma jos-muuten lausunto eli ohjelman monimutkaisuus kasvaa aina kun vaihtoehtoisten polkujen määrä kasvaa. Jos käytät ohjelmassa useita if-else -rakenteita, ohjelman lukeminen ja ymmärtäminen voi olla vaikeaa. Joskus se voi jopa hämmentää kehittäjää, joka itse kirjoitti ohjelman.

Ratkaisu tähän ongelmaan on kytkinlause.

Vaihtolausekkeen säännöt

  • Lauseke on aina suoritettava tulokseen.
  • Tapaustunnisteiden on oltava vakioita ja yksilöllisiä.
  • Koteloiden tarrojen tulee päättyä kaksoispisteeseen ( : ).
  • Taukoavainsana on oltava jokaisessa tapauksessa.
  • Oletustunnisteita voi olla vain yksi.
  • Voimme upottaa useita kytkinlauseita.

Yhteenveto

  • Kytkin on päätöksentekorakenneC. "
  • Kytkintä käytetään ohjelmassa, jossa on useita päätöksiä.
  • Kytkimen tulee sisältää suoritettava testilauseke.
  • Jokaiseen tapaukseen on sisällyttävä break-avainsana.
  • Tapaustunnisteen on oltava vakio ja yksilöllinen.
  • Oletusasetus on valinnainen.
  • Useita kytkinlauseita voidaan upottaa toisiinsa.