Switch-sætning
switch-sætningen er også en af de kontrolstrukturer, der forenkler beslutningstagning i dine programmer. Den giver en effektiv måde at evaluere et udtryk og udføre forskellige kodeblokke baseret på værdien af dette udtryk. Dette er især nyttigt, når der er et stort antal forgreningsbetingelser.
Den er primært designet til at arbejde med numeriske værdier, såsom heltal (int) og tegn (char).
switch.h
12345678910111213141516switch (expression) { case value1: // Code to execute when expression matches value1 break; case value2: // Code to execute when expression matches value2 break; // More cases can be added as needed // Code to execute when expression matches valueN default: // Code to execute when none of the case labels match the expression }
-
Udtrykket evalueres én gang, og programmet springer til det relevante
casebaseret på værdien af udtrykket; -
Hver
caserepræsenterer en specifik værdi eller et sæt af værdier, som udtrykket kan matche; -
break-sætningen bruges til at afslutte switch-blokken efter koden for et bestemt case er blevet udført; -
defaulter valgfri og bruges, når ingen af de angivne cases matcher udtrykket. Den fungerer som en standardmulighed.
Antag, at du ejer en restaurant og ønsker at tilbyde en menu baseret på numeriske koder. Her er den kodebaserede repræsentation af menupunkterne.
main.cpp
1234567891011121314151617181920212223242526#include <iostream> int main() { // try to change the value int menu_number = 1; switch (menu_number) { case 1: std::cout << "Pizza" << std::endl; break; case 2: std::cout << "Burger with fries" << std::endl; break; case 3: std::cout << "Pasta with meatballs" << std::endl; break; default: std::cout << "We don`t have this in our menu" << std::endl; break; } }
Ja, dette kan opnås med en simpel if-sætning, og det ville se sådan ud:
main.cpp
123456789101112131415161718192021222324#include <iostream> int main() { // try to change the value int menu_number = 1; if (menu_number == 1) { std::cout << "Pizza" << std::endl; } else if (menu_number == 2) { std::cout << "Burger with fries" << std::endl; } else if (menu_number == 3) { std::cout << "Pasta with meatballs" << std::endl; } else { std::cout << "We don`t have this in our menu" << std::endl; } }
Det vil fungere på samme måde og som forventet, men det er generelt bedre at anvende en switch-sætning, da den giver en tydeligere, mere læsbar, og, vigtigst af alt, nemmere at vedligeholde og skalerbar metode til at håndtere denne type kontrolflow.
Hvis man udelader break-nøgleordet i en switch-sætning, kan det føre til uventet programadfærd, da koden vil fortsætte med at udføre efterfølgende cases. Dog kan man med vilje undlade break for at håndtere flere cases inden for samme kodeblok. Denne tilgang, kendt som fall-through, gør det muligt at behandle relaterede cases samlet.
main.cpp
12345678910111213141516171819202122#include <iostream> int main() { // change the number and look how it affect the output int number = 3; switch (number) { case 1: std::cout << '1' << std::endl; case 2: std::cout << '2' << std::endl; case 3: std::cout << '3' << std::endl; case 4: std::cout << '4' << std::endl; case 5: std::cout << '5' << std::endl; break; } }
Swipe to start coding
Du udvikler et ugentligt planlægningssystem, der returnerer navnet på dagen baseret på dens nummer (1 for Monday, 2 for Tuesday osv.).
- Inde i funktionen
getDayName, brug enswitch-sætning pådayNumber:- For hvert case fra
1til7, tildel det tilsvarende dagsnavn ("Monday","Tuesday", ...,"Sunday") til variablendayName. - Brug
break-sætningen efter hvert case for at undgå gennemløb. - Brug et
default-case til at tildele"Invalid day", hvis input ikke er mellem 1 og 7.
- For hvert case fra
- Returnér værdien af
dayNamefra funktionen.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Can you give an example of a switch statement in code?
What happens if I forget to include a break statement in a switch case?
Can you explain more about the fall-through behavior in switch statements?
Awesome!
Completion rate improved to 7.69
Switch-sætning
Stryg for at vise menuen
switch-sætningen er også en af de kontrolstrukturer, der forenkler beslutningstagning i dine programmer. Den giver en effektiv måde at evaluere et udtryk og udføre forskellige kodeblokke baseret på værdien af dette udtryk. Dette er især nyttigt, når der er et stort antal forgreningsbetingelser.
Den er primært designet til at arbejde med numeriske værdier, såsom heltal (int) og tegn (char).
switch.h
12345678910111213141516switch (expression) { case value1: // Code to execute when expression matches value1 break; case value2: // Code to execute when expression matches value2 break; // More cases can be added as needed // Code to execute when expression matches valueN default: // Code to execute when none of the case labels match the expression }
-
Udtrykket evalueres én gang, og programmet springer til det relevante
casebaseret på værdien af udtrykket; -
Hver
caserepræsenterer en specifik værdi eller et sæt af værdier, som udtrykket kan matche; -
break-sætningen bruges til at afslutte switch-blokken efter koden for et bestemt case er blevet udført; -
defaulter valgfri og bruges, når ingen af de angivne cases matcher udtrykket. Den fungerer som en standardmulighed.
Antag, at du ejer en restaurant og ønsker at tilbyde en menu baseret på numeriske koder. Her er den kodebaserede repræsentation af menupunkterne.
main.cpp
1234567891011121314151617181920212223242526#include <iostream> int main() { // try to change the value int menu_number = 1; switch (menu_number) { case 1: std::cout << "Pizza" << std::endl; break; case 2: std::cout << "Burger with fries" << std::endl; break; case 3: std::cout << "Pasta with meatballs" << std::endl; break; default: std::cout << "We don`t have this in our menu" << std::endl; break; } }
Ja, dette kan opnås med en simpel if-sætning, og det ville se sådan ud:
main.cpp
123456789101112131415161718192021222324#include <iostream> int main() { // try to change the value int menu_number = 1; if (menu_number == 1) { std::cout << "Pizza" << std::endl; } else if (menu_number == 2) { std::cout << "Burger with fries" << std::endl; } else if (menu_number == 3) { std::cout << "Pasta with meatballs" << std::endl; } else { std::cout << "We don`t have this in our menu" << std::endl; } }
Det vil fungere på samme måde og som forventet, men det er generelt bedre at anvende en switch-sætning, da den giver en tydeligere, mere læsbar, og, vigtigst af alt, nemmere at vedligeholde og skalerbar metode til at håndtere denne type kontrolflow.
Hvis man udelader break-nøgleordet i en switch-sætning, kan det føre til uventet programadfærd, da koden vil fortsætte med at udføre efterfølgende cases. Dog kan man med vilje undlade break for at håndtere flere cases inden for samme kodeblok. Denne tilgang, kendt som fall-through, gør det muligt at behandle relaterede cases samlet.
main.cpp
12345678910111213141516171819202122#include <iostream> int main() { // change the number and look how it affect the output int number = 3; switch (number) { case 1: std::cout << '1' << std::endl; case 2: std::cout << '2' << std::endl; case 3: std::cout << '3' << std::endl; case 4: std::cout << '4' << std::endl; case 5: std::cout << '5' << std::endl; break; } }
Swipe to start coding
Du udvikler et ugentligt planlægningssystem, der returnerer navnet på dagen baseret på dens nummer (1 for Monday, 2 for Tuesday osv.).
- Inde i funktionen
getDayName, brug enswitch-sætning pådayNumber:- For hvert case fra
1til7, tildel det tilsvarende dagsnavn ("Monday","Tuesday", ...,"Sunday") til variablendayName. - Brug
break-sætningen efter hvert case for at undgå gennemløb. - Brug et
default-case til at tildele"Invalid day", hvis input ikke er mellem 1 og 7.
- For hvert case fra
- Returnér værdien af
dayNamefra funktionen.
Løsning
Tak for dine kommentarer!
single