Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Switch-lause | Johdanto Ehtoihin
C++-Ehtolauseet

bookSwitch-lause

switch-lause kuuluu myös ohjausrakenteisiin, jotka yksinkertaistavat päätöksentekoa ohjelmissasi. Se tarjoaa tehokkaan tavan arvioida lauseke ja suorittaa eri koodilohkoja lausekkeen arvon perusteella. Tämä on erityisen hyödyllistä, kun käsitellään suurta määrää haarautuvia ehtoja.

Se on ensisijaisesti suunniteltu toimimaan numeeristen arvojen, kuten kokonaislukujen (int) ja merkkien (char), kanssa.

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 }
  • Lauseke arvioidaan kerran, ja ohjelma hyppää sopivaan case-kohtaan lausekkeen arvon perusteella;

  • Jokainen case edustaa tiettyä arvoa tai arvojoukkoa, johon lauseke voi vastata;

  • break-lausetta käytetään poistumaan switch-lohkosta sen jälkeen, kun tietyn tapauksen koodi on suoritettu;

  • default on valinnainen ja sitä käytetään, kun mikään määritellyistä tapauksista ei vastaa lauseketta. Se toimii yleisvaihtoehtona.

Oletetaan, että omistat ravintolan ja haluat tarjota valikon numeeristen koodien perusteella. Tässä on koodiesitys valikkokohteista.

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

Kyllä, tämän voi toteuttaa yksinkertaisella if-lauseella, ja se näyttäisi suunnilleen tältä:

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

Se toimii samalla tavalla ja odotetusti, mutta yleensä on parempi käyttää switch-lausetta, koska se tarjoaa selkeämmän, luettavamman ja ennen kaikkea helpommin ylläpidettävän sekä laajennettavan tavan hallita tämänkaltaista ohjausvirtaa.

break-avainsanan pois jättäminen switch-lauseessa voi johtaa odottamattomaan ohjelmakäyttäytymiseen, sillä koodi jatkaa suorittamista seuraaviin tapauksiin. Kuitenkin, tarkoituksellinen break-avainsanan pois jättäminen voidaan käyttää hallitsemaan useita tapauksia saman koodilohkon sisällä. Tätä lähestymistapaa kutsutaan nimellä fall-through, ja sen avulla voidaan käsitellä toisiinsa liittyviä tapauksia yhdessä.

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; } }
Tehtävä

Swipe to start coding

Rakennat viikkosuunnittelujärjestelmää, joka palauttaa päivän nimen sen numeron perusteella (1 tarkoittaa maanantaita, 2 tiistaita jne.).

  1. Käytä getDayName-funktion sisällä switch-lausetta muuttujalle dayNumber:
    • Käsittele tapaukset 17 ja aseta vastaava päivän nimi ("Monday", "Tuesday", ..., "Sunday") muuttujaan dayName.
    • Käytä break-lausetta jokaisen tapauksen jälkeen estääksesi läpiviennin.
    • Käytä default-tapausta asettaaksesi arvoksi "Invalid day", jos syöte ei ole välillä 1–7.
  2. Palauta funktion lopuksi muuttujan dayName arvo.

Ratkaisu

solution.cpp

solution.cpp

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 6
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Suggested prompts:

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?

close

Awesome!

Completion rate improved to 7.69

bookSwitch-lause

Pyyhkäise näyttääksesi valikon

switch-lause kuuluu myös ohjausrakenteisiin, jotka yksinkertaistavat päätöksentekoa ohjelmissasi. Se tarjoaa tehokkaan tavan arvioida lauseke ja suorittaa eri koodilohkoja lausekkeen arvon perusteella. Tämä on erityisen hyödyllistä, kun käsitellään suurta määrää haarautuvia ehtoja.

Se on ensisijaisesti suunniteltu toimimaan numeeristen arvojen, kuten kokonaislukujen (int) ja merkkien (char), kanssa.

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 }
  • Lauseke arvioidaan kerran, ja ohjelma hyppää sopivaan case-kohtaan lausekkeen arvon perusteella;

  • Jokainen case edustaa tiettyä arvoa tai arvojoukkoa, johon lauseke voi vastata;

  • break-lausetta käytetään poistumaan switch-lohkosta sen jälkeen, kun tietyn tapauksen koodi on suoritettu;

  • default on valinnainen ja sitä käytetään, kun mikään määritellyistä tapauksista ei vastaa lauseketta. Se toimii yleisvaihtoehtona.

Oletetaan, että omistat ravintolan ja haluat tarjota valikon numeeristen koodien perusteella. Tässä on koodiesitys valikkokohteista.

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

Kyllä, tämän voi toteuttaa yksinkertaisella if-lauseella, ja se näyttäisi suunnilleen tältä:

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

Se toimii samalla tavalla ja odotetusti, mutta yleensä on parempi käyttää switch-lausetta, koska se tarjoaa selkeämmän, luettavamman ja ennen kaikkea helpommin ylläpidettävän sekä laajennettavan tavan hallita tämänkaltaista ohjausvirtaa.

break-avainsanan pois jättäminen switch-lauseessa voi johtaa odottamattomaan ohjelmakäyttäytymiseen, sillä koodi jatkaa suorittamista seuraaviin tapauksiin. Kuitenkin, tarkoituksellinen break-avainsanan pois jättäminen voidaan käyttää hallitsemaan useita tapauksia saman koodilohkon sisällä. Tätä lähestymistapaa kutsutaan nimellä fall-through, ja sen avulla voidaan käsitellä toisiinsa liittyviä tapauksia yhdessä.

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; } }
Tehtävä

Swipe to start coding

Rakennat viikkosuunnittelujärjestelmää, joka palauttaa päivän nimen sen numeron perusteella (1 tarkoittaa maanantaita, 2 tiistaita jne.).

  1. Käytä getDayName-funktion sisällä switch-lausetta muuttujalle dayNumber:
    • Käsittele tapaukset 17 ja aseta vastaava päivän nimi ("Monday", "Tuesday", ..., "Sunday") muuttujaan dayName.
    • Käytä break-lausetta jokaisen tapauksen jälkeen estääksesi läpiviennin.
    • Käytä default-tapausta asettaaksesi arvoksi "Invalid day", jos syöte ei ole välillä 1–7.
  2. Palauta funktion lopuksi muuttujan dayName arvo.

Ratkaisu

solution.cpp

solution.cpp

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 6
single

single

some-alt