Înțelegerea declarațiilor Switch în programarea C

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

O instrucțiune switch este un mecanism puternic de control al fluxului în programarea C, care vă permite să executați diferite blocuri de cod pe baza valorii unei singure expresii. Oferă o alternativă mai elegantă și mai eficientă la lanțurile lungi de instrucțiuni if-else atunci când trebuie să comparați o variabilă cu mai multe valori posibile.

switch (expression) {
    case constant1:
        // code block 1
        break;
    case constant2:
        // code block 2
        break;
    default:
        // default code block
        break;
}

Execuția unei instrucțiuni switch urmează un model specific:

  1. Expresia dintre paranteze este evaluată o dată
  2. Valoarea este comparată cu fiecare constantă de caz
  3. Dacă se găsește o potrivire, se execută blocul de cod corespunzător
  4. Instrucțiunea break iese din structura switch
  5. Dacă nu se găsește nicio potrivire, se execută cazul implicit (dacă este prezent)
  • Lizibilitate îmbunătățită în comparație cu mai multe declarații if-else
  • Performanță mai bună pentru mai multe condiții
  • Structură de cod mai curată
  • Întreținere mai ușoară
  • Compilare mai eficientă în majoritatea cazurilor

Declarațiile Switch sunt deosebit de utile în mai multe scenarii:

  • Programe bazate pe meniu
  • Mașini de stat
  • Procesarea comenzilor
  • Validarea intrărilor
  • Dezvoltarea jocului (stări de caractere, niveluri de joc)

Să ne uităm la un exemplu practic de program bazat pe meniu:

#include 

int main() {
    int choice;
    
    printf("Select an option:n");
    printf("1. View balancen");
    printf("2. Deposit moneyn");
    printf("3. Withdraw moneyn");
    printf("4. Exitn");
    
    scanf("%d", &choice);
    
    switch(choice) {
        case 1:
            printf("Your balance is $1000n");
            break;
        case 2:
            printf("Enter amount to depositn");
            break;
        case 3:
            printf("Enter amount to withdrawn");
            break;
        case 4:
            printf("Thank you for using our servicen");
            break;
        default:
            printf("Invalid optionn");
    }
    
    return 0;
}

Ieșire de la terminalul meu
  1. Expresia de comutare trebuie să fie evaluată la un tip integral (int, char, short, long)
  2. Etichetele cazului trebuie să fie constante de timp de compilare
  3. Etichetele de caz trebuie să fie unice
  4. Cazul implicit este opțional
  5. Sunt permise mai multe declarații per caz
  1. Includeți întotdeauna un caz implicit
  2. Folosiți în mod consecvent declarațiile de pauză
  3. Grupați cazurile conexe
  4. Păstrați carcasele scurte și concentrate
  5. Folosiți constante sau enumerări semnificative pentru etichetele de caz
  1. Uitând declarațiile de pauză
  2. Folosind etichete de caz neconstante
  3. Încercarea de a utiliza numere în virgulă mobilă
  4. Valori de caz duplicate
  5. Expresii complexe în declarațiile case

Exemplu de bază

#include 

int main() {
    char grade="B";
    
    switch(grade) {
        case 'A':
            printf("Excellent!n");
            break;
        case 'B':
            printf("Good job!n");
            break;
        case 'C':
            printf("Fair resultn");
            break;
        case 'F':
            printf("Try againn");
            break;
        default:
            printf("Invalid graden");
    }
    
    return 0;
}

Exemplu de cazuri multiple

#include 

int main() {
    int day = 2;
    
    switch(day) {
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            printf("Weekdayn");
            break;
        case 6:
        case 7:
            printf("Weekendn");
            break;
        default:
            printf("Invalid dayn");
    }
    
    return 0;
}

Încercați să rezolvați această problemă:

Creați o instrucțiune switch care convertește un număr (1-12) în numele lunii corespunzătoare.

Faceți clic pentru a vedea soluția

Iată soluția:

#include 

int main() {
    int month = 3;
    
    switch(month) {
        case 1: printf("Januaryn"); break;
        case 2: printf("Februaryn"); break;
        case 3: printf("Marchn"); break;
        case 4: printf("Apriln"); break;
        case 5: printf("Mayn"); break;
        case 6: printf("Junen"); break;
        case 7: printf("Julyn"); break;
        case 8: printf("Augustn"); break;
        case 9: printf("Septembern"); break;
        case 10: printf("Octobern"); break;
        case 11: printf("Novembern"); break;
        case 12: printf("Decembern"); break;
        default: printf("Invalid monthn");
    }
    
    return 0;
}
  • Declarațiile Switch oferă o modalitate curată de a gestiona mai multe condiții
  • Folosiți întotdeauna instrucțiunile break, cu excepția cazului în care se intenționează căderea
  • Cazurile trebuie să utilizeze expresii constante
  • Includeți un caz implicit pentru tratarea erorilor
  • Gruparea cazurilor conexe pentru o mai bună organizare
  1. Î: Pot folosi șiruri în instrucțiunile switch? R: Nu, instrucțiunile C switch funcționează numai cu tipuri integrale.

  2. Î: Ce se întâmplă dacă uit o declarație de pauză? R: Codul va „cădea” în cazul următor, executând toate cazurile ulterioare până când se întâlnește o întrerupere.

  3. Î: Pot folosi variabile ca etichete de caz? R: Nu, etichetele cazului trebuie să fie constante de timp de compilare.

  4. Î: Este comutarea mai rapidă decât dacă-altfel? R: În general, da, mai ales când se confruntă cu mai multe condiții.

  5. Î: Pot folosi mai multe cazuri implicite? R: Nu, este permis un singur caz implicit pentru fiecare instrucțiune switch.

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.