C++ fra bunden - Del 5

Tags:    c++
Skrevet af Bruger #2853 @ 28.01.2003
Velkommen til 5. del af min C++ fra bunden. I denne del vil du lære hvordan du kan bruge switch. Switch er en lidt mere advanceret form for if/else omend den også er lidt "underlig".

Switch



Switch's syntax er en lille smule underlig. Den bruges til at tjekke om et udtryk er rigtigt på mange forskellige, lidt ala det vi gjorde med if og else.

Et lille eksempel:

Fold kodeboks ind/udKode 


Linie 11: switch (x)
Her beder vi switch om at bruge variablen x til at tjekke tilfælde med.

Linie 13: case 1:
I tilfælde af at x er 1 vil den udføre de kommandoer som står imellem case 1: og break; i vores tilfælde "cout << "x er ";"

Linie 15: break;
Som tidligere skrevet er det her vores tifælde slutter, og efter dette vil der ikke blive udført flere kommandoer i tilfælde af at x er 1.

Linie 19: default:
Default bruges hvis ingen af de andre tilfælde er rigtige, i vores tilfælde hvis x er højere end 2. Læg mærke til at default ikke slutter med en break;

Når ovenstående program er compiled, spørger det først brugeren om et tal mellem et og ti. Cin gemmer så tallet i variablen x som er en integer. Derefter tjekker switch om x er 1 eller 2, hvis den ikke er det, vil den udskrive sin default tekst som lyde: x er hoejere end 2.

Hvis vi skulle lave samme program med if og else ville det se sådan ud:

Fold kodeboks ind/udKode 


Ovenstående eksempel virker på fuldstændig samme måde når det er compiled. Her er blot brugt if og else istedet for switch.

Hvis man gerne vil have switch til at skrive samme besked for en hel række tilfælde kan det gøres på følgende måde:

Fold kodeboks ind/udKode 


Læg mærke til at de forskellige case's (tilfælde) står lige under hinanden, indtil der skal udføres en fælles række af kommandoer for disse tilfælde.

Havde vi gjort dette med if og else ville det se sådan ud:

Fold kodeboks ind/udKode 


Læg mærke til at jeg her med if kan bruge (x <= 3), som betyder x er mindre end eller ligemed 3. I switch kan man ikke gøre sådan, da man skal bruge konstante værdier. Altså ikke noget med case (1 <= 3): eller lignende.

Det var det, du har nu lært hvordan du kan bruge switch, som i visse tifælde er nemmere at bruge end if/else, men i andre vil være total håbløst.

Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (18)

User
Bruger #3162 @ 31.01.03 12:41
Rigtig godt bliv ved med det...
User
Bruger #2959 @ 28.01.03 20:28
Virkelig god artikel, du skriver først at switch er noget underligt. Hvad er underligt ved det. Jeg syntes at der er genialt!! Det samme som din artikel. Jeg har virkelig lært noget af din artikel!!! Men der kunne godt stå lidt mere på hver artikel!! Men ellers syntes jeg at din artikel er virkelig god!! Kommer der en del 6?
Det håber jeg ihvertfald!!
User
Bruger #2990 @ 16.02.03 20:03
God artikkel serie. Den kan både bruges til begyndere, og andre som gerne vil i gang med C / C++

Serien må gerne udbygges med nogle flere eksempler, fx api kald, database adgang, monske en simpel chat client, og gerne et eksempel på hvordan man kan få et program til at kører som en service (win 2000)
User
Bruger #2113 @ 05.03.03 02:23
Super artikel!!! Jeg håber der kommer flere. Jeg vil give Micer ret. Jeg kunne også tænke mig nogle lidt mere "brugbare" eksempler... Men jeg har virkelig lært meget!! Super!!
User
Bruger #3204 @ 24.03.03 21:06
Jeg syntes at det er en super måde at det er skrevet på. Så kan selv sådan en som nig forstå det. Men jeg glæder mig til de næste, for vores undervisning er nået længere. Og vores lære er en padde til at forklare. Gerne noget med struct og strings.
User
Bruger #1748 @ 16.05.03 14:44
Rigtig god artikel(er) du har skrevet. Om jeg har lært noget af det, uhmm ja self. Geniale artikler. håber at du skriver flere, med at oprette funktioner og sådan.. noget der vist hedder void eller sådan noget ;)
User
Bruger #3116 @ 16.06.03 18:34
Burde den ikke have heddet "C fra bunden"? Skifter man alle cout/cin ud med printf/scanf er der da ikke saa meget c++ tilbage. Bortset fra det er da et en helt fin artikel-serie ...
User
Bruger #4536 @ 07.12.03 13:07
Fed artikel... Havde lidt problemer med If... Men det her var lige hvad jeg manglede...
Brugte det også engang i vb, men troede ikke det også funkede i c++...
User
Bruger #4874 @ 12.02.04 13:29
Udmærkede artikler! Om end de jo unægteligt ser ud til at være en fortyndet version/oversættelse af dem man finder på http://cplus.about.com/cs/ctutorial1/ ...
User
Bruger #5301 @ 21.02.04 04:19
Holder med Allan, da jeg så en stump kode fra artiken 4 der IKKE var blevet oversat.
User
Bruger #5301 @ 21.02.04 04:20
Vil så lige tilføje at det er iorden, hvis du havde lavet en kildeangivelse, og fortalt at du bare har oversat...
User
Bruger #5910 @ 12.06.04 22:19
Bare GOD nææ SUPER bliv enelig hved
User
Bruger #5956 @ 18.07.04 20:56
Nice artikel, Endelig en dejlig en fra din side..
User
Bruger #7812 @ 30.06.05 12:09
Jeg er enig i med at det er nogle nice artikler, nu har jeg læst dem alle, og hvad så nu.

Vilken toturial skal jeg så starte på som vil svare til det nivau jeg er på nu, hvad har i andre gjordt?
User
Bruger #8933 @ 28.01.06 15:44
Hej!

Jeg syntes det er en rigtig god artikel, især som folk som mig der er helt nye i c++..! de er rigtig godt skrevet..
User
Bruger #5620 @ 11.07.06 10:10
I din if sætning burde du jo nok have &&x>0 ellers siger den at 0 og alle negative tal er 1,2 eller 3 hvis du ville vise hvad din switch ville returnere.

Og det der med du ikke kan gøre sådan i en switch er heller ikke helt sandt du kan nemlig godt gøre det sådan her:
Fold kodeboks ind/udKode 

folk gør det bare ikke da det ikke giver mening at bruge en switch til at emulere en if sætning.


PS: ved godt dit program siger mellem 1 og 10, men man skal nu altid stadigvæk teste for om brugeren var idiot og skrev noget ikke tiltænkt.
User
Bruger #10756 @ 28.10.06 14:03
Kan Case ikke bruges hvis man bruger en "Char" variabel fremfor en "Int"?

Fold kodeboks ind/udKode 


Jeg får en fejl når jeg forsøger at kompile overstående, ved den første case
User
Bruger #13205 @ 04.02.08 21:03
Kenneth.

Jeg tror ikke du kan bruge bogstaver til en switch. Du skal i stedet bruge tal eller konvertere bogstaverne til tal.

Sådan her kunne det se ud:
Fold kodeboks ind/udKode 
Du skal være logget ind for at skrive en kommentar.
t