Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Switch-sats | Introduktion till Villkorssatser
Quizzes & Challenges
Quizzes
Challenges
/
C++ Villkorssatser

bookSwitch-sats

switch-satsen är också en av kontrollstrukturerna som förenklar beslutsfattande i dina program. Den erbjuder ett effektivt sätt att utvärdera ett uttryck och utföra olika kodblock baserat på värdet av det uttrycket. Detta är särskilt användbart när du hanterar ett stort antal förgreningar.

Den är främst utformad för att arbeta med numeriska värden, såsom heltal (int) och tecken (char).

switch.h

switch.h

copy
12345678910111213141516
switch (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 }
  • Uttrycket utvärderas en gång, och programmet hoppar till rätt case baserat på värdet av uttrycket;

  • Varje case representerar ett specifikt värde eller en uppsättning värden som uttrycket kan motsvara;

  • break-satsen används för att lämna switch-blocket efter att koden för ett visst case har körts;

  • default är valfritt och används när inget av de angivna case matchar uttrycket. Det fungerar som ett fångstalternativ.

Anta att du äger en restaurang och vill tillhandahålla en meny baserat på numeriska koder. Här är kodrepresentationen av menyalternativen.

main.cpp

main.cpp

copy
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, detta kan uppnås med ett enkelt if-uttryck, och det skulle se ut ungefär så här:

main.cpp

main.cpp

copy
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 fungerar på samma sätt och som förväntat, men det är generellt bättre att använda ett switch-uttryck eftersom det erbjuder ett tydligare, mer lättläst och, viktigast av allt, lättare att underhålla och skalbart sätt att hantera denna typ av styrflöde.

Att utelämna nyckelordet break i ett switch-uttryck kan leda till oväntat programbeteende, eftersom koden fortsätter att exekvera i efterföljande case. Dock kan man medvetet utelämna break för att hantera flera case inom samma kodblock. Denna metod, känd som fall-through, gör det möjligt att hantera relaterade case tillsammans.

main.cpp

main.cpp

copy
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; } }
Uppgift

Swipe to start coding

Du bygger ett veckoplaneringssystem som returnerar namnet på dagen baserat på dess nummer (1 för måndag, 2 för tisdag, osv.).

  1. Inuti funktionen getDayName, använd ett switch-uttryckdayNumber:
    • För varje fall från 1 till 7, tilldela motsvarande dagsnamn ("Monday", "Tuesday", ..., "Sunday") till variabeln dayName.
    • Använd break-satsen efter varje fall för att undvika fall-through.
    • Använd ett default-fall för att tilldela "Invalid day" om inmatningen inte är mellan 1 och 7.
  2. Returnera värdet av dayName från funktionen.

Lösning

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 6
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

close

Awesome!

Completion rate improved to 7.69

bookSwitch-sats

Svep för att visa menyn

switch-satsen är också en av kontrollstrukturerna som förenklar beslutsfattande i dina program. Den erbjuder ett effektivt sätt att utvärdera ett uttryck och utföra olika kodblock baserat på värdet av det uttrycket. Detta är särskilt användbart när du hanterar ett stort antal förgreningar.

Den är främst utformad för att arbeta med numeriska värden, såsom heltal (int) och tecken (char).

switch.h

switch.h

copy
12345678910111213141516
switch (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 }
  • Uttrycket utvärderas en gång, och programmet hoppar till rätt case baserat på värdet av uttrycket;

  • Varje case representerar ett specifikt värde eller en uppsättning värden som uttrycket kan motsvara;

  • break-satsen används för att lämna switch-blocket efter att koden för ett visst case har körts;

  • default är valfritt och används när inget av de angivna case matchar uttrycket. Det fungerar som ett fångstalternativ.

Anta att du äger en restaurang och vill tillhandahålla en meny baserat på numeriska koder. Här är kodrepresentationen av menyalternativen.

main.cpp

main.cpp

copy
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, detta kan uppnås med ett enkelt if-uttryck, och det skulle se ut ungefär så här:

main.cpp

main.cpp

copy
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 fungerar på samma sätt och som förväntat, men det är generellt bättre att använda ett switch-uttryck eftersom det erbjuder ett tydligare, mer lättläst och, viktigast av allt, lättare att underhålla och skalbart sätt att hantera denna typ av styrflöde.

Att utelämna nyckelordet break i ett switch-uttryck kan leda till oväntat programbeteende, eftersom koden fortsätter att exekvera i efterföljande case. Dock kan man medvetet utelämna break för att hantera flera case inom samma kodblock. Denna metod, känd som fall-through, gör det möjligt att hantera relaterade case tillsammans.

main.cpp

main.cpp

copy
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; } }
Uppgift

Swipe to start coding

Du bygger ett veckoplaneringssystem som returnerar namnet på dagen baserat på dess nummer (1 för måndag, 2 för tisdag, osv.).

  1. Inuti funktionen getDayName, använd ett switch-uttryckdayNumber:
    • För varje fall från 1 till 7, tilldela motsvarande dagsnamn ("Monday", "Tuesday", ..., "Sunday") till variabeln dayName.
    • Använd break-satsen efter varje fall för att undvika fall-through.
    • Använd ett default-fall för att tilldela "Invalid day" om inmatningen inte är mellan 1 och 7.
  2. Returnera värdet av dayName från funktionen.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 6
single

single

some-alt