...
switch...case
...
valintarakenne
...
- Switch...case
...
- -rakenteessa
...
- on
...
- testattavana
...
- yksi
...
- lauseke,
...
- jonka
...
- arvon
...
- perusteella
...
- haaraudutaan
...
- johonkin
...
- case
...
- -haaraan.
...
- case-haara
...
- voi
...
- sisältää
...
- useita
...
- lauseita,
...
- jotka
...
- suoritetaan
...
- peräkkäin,
...
- kunnes
...
- törmätään
...
- break
...
- -lauseeseen,
...
- joka
...
- ohjaa
...
- kontrollin
...
- pois
...
- switch
...
- -rakenteesta.
...
Switch-case
...
valintarakenteen
...
muoto:
Code Block |
---|
} switch (lauseke) { case arvo_1 : lauseita; break; case arvo_2 : lauseita; break; case arvo_3 : lauseita; break; ... default : lauseita; break; } {code} * _ |
- Switch...case
...
- -rakenteessa
...
- voi
...
- olla
...
- case
...
- -vaihtoehtoja
...
- 127
...
- kappaletta.
...
- Lisäksi
...
- siinä
...
- voi
...
- olla
...
- default
...
- -osa,
...
- johon
...
- tullaan
...
- ellei
...
- yksikään
...
- case
...
- -vaihtoehdoista
...
- vastaa
...
- lausekkeen
...
- arvoa.
...
- Jos
...
- default
...
- -osa
...
- puuttuu
...
- eikä
...
- mikään
...
- tapausvakio
...
- vastaa
...
- lausekkeen
...
- arvoa,
...
- ohjelman
...
- suoritus
...
- jatkuu
...
- switch
...
- -rakennetta
...
- seuraavasta
...
- lauseesta.
...
- Tapausvakiot
...
- ovat
...
- nimensä
...
- mukaisesti
...
- vakioita.
...
- Niiden
...
- arvot
...
- tulee
...
- näin
...
- ollen
...
- voida
...
- ratkaista
...
- jo
...
- ohjelman
...
- käännösvaiheessa.
...
- Tämä
...
- tarkoittaa,
...
- että
...
- tapausvakioina
...
- ei
...
- voi
...
- olla
...
- muuttujia.
...
- Vakiolausekkeiden
...
- arvojen
...
- on
...
- lisäksi
...
- oltava
...
- kokonaislukutyyppisiä
...
- (char,
...
- int,
...
- long).
...
- break-lauseet,
...
- joihin
...
- yksittäiset
...
- case
...
- -haarat
...
- päättyvät,
...
- eivät
...
- ole
...
- pakollisia.
...
- Mikäli
...
- ohjelmassa
...
- on
...
- haarauduttu
...
- case
...
- -osaan,
...
- jonka
...
- lopusta
...
- puuttuu
...
- break-lause,
...
- ohjelman
...
- kontrolli
...
- "valuu"
...
- seuraavaan
...
- case
...
- -osaan.
...
- Vasta,
...
- kun
...
- törmätään
...
- seuraavaan
...
- break-lauseeseen,
...
- kontrolli
...
- siirtyy
...
- pois
...
- switch
...
- -rakenteesta.
...
- Joissain
...
- tilanteissa
...
- tämä
...
- voi
...
- olla
...
- toivottava
...
- toimintamalli.
...
Esimerkki
...
1
...
Koodinpätkä,
...
jossa
...
suoritetaan
...
yksi
...
tominto
...
useata
...
case
...
-haaraa
...
kohden.
Code Block |
---|
} ... switch (muuttuja1) { case 0 : case 1 : case 2 : case 3 : printf("Muuttuja1:n arvo on välillä 0...3\n"); break; case 5 : case 6 : case 7 : case 8 : printf("Muuttuja1:n arvo on välillä 5...8\n"); break; default : printf("Muuttuja1:n arvo ei ole välillä 0...3 eikä 5...8\n"); break; } ... {code} |
Yllä
...
oleva
...
ohjelmanpätkä
...
toimisi
...
siten,
...
että
...
jos
...
muuttuja1
...
:n
...
arvo
...
olisi
...
0
...
,
...
1
...
,
...
2
...
tai
...
3
...
,
...
niin
...
ohjelma
...
tulostaisi:
No Format |
---|
}Muuttuja1:n arvo on välillä 0...3{noformat} |
tai
...
jos
...
muuttuja1
...
:n
...
arvo
...
olisi
...
5
...
,
...
6
...
,
...
7
...
tai
...
8
...
,
...
niin
...
ohjelma
...
tulostaisi:
No Format |
---|
}Muuttuja1:n arvo on välillä 5...8{noformat} |
tai
...
jos
...
arvo
...
olisi
...
jokin
...
muu
...
kuin
...
yllä
...
määritelty,
...
niin
...
ohjelma
...
tulostaisi:
No Format |
---|
}Muuttuja1:n arvo ei ole välillä 0...3 eikä 5...8 |
Esimerkki 2
Koodi joka tulostaa valikon, ja tottelee käyttäjän antamia käskyjä sen mukaisesti.
Code Block |
---|
{noformat}
h2. Esimerkki 2
Koodi joka tulostaa valikon, ja tottelee käyttäjän antamia käskyjä sen mukaisesti.
{code}
void Valikko(); // tulostaa käyttäjälle ohjeet
void Funktio1();
void Funktio2();
void main()
{
unsigned int Valitsin = 0;
while (1) {
valikko();
Valitsin=getch();
switch (Valitsin) {
case '0' : return;
case '1' : Funktio1(); break;
case '2' : Funktio2(); break;
default : break;
}
}
}
void Funktio1()
{
system("cls"); // tyhjentää ruudun
printf("\n Funktio 1 PAINA JOTAIN");
getch();
}
void Funktio2()
{
system("cls"); // tyhjentää ruudun
printf("\n Funktio 2 PAINA JOTAIN");
getch();
}
void valikko()
{
system("cls"); // tyhjentää ruudun
printf("\n0........Lopetus");
printf("\n1........Funktio 1");
printf("\n2........Funktio 2");
}
|
Switch case rakenne entry do ja exit ehdoilla
Code Block |
---|
{code} Switch case rakenne entry do ja exit ehdoilla {code} switch (lauseke) { case arvo_1 : //entry if (laskuri==0){ //alustus } //do if (laskuri>0){ //toiminnot oltaessa ko. askeleella } laskuri++; if(laskuri>10){ laskuri=10; } //exit if (postimuisiehto==true){ laskuri=0; lauseke=arvo_2; } break; case arvo_2 : //entry if (laskuri==0){ //alustus } //do if (laskuri>0){ //toiminnot oltaessa ko. askeleella } laskuri++; if(laskuri>10){ laskuri=10; } //exit if (postimuisiehto==true){ laskuri=0; lauseke=arvo_3; } break; case arvo_3 : ... break; ... default : lauseita; break; } {code} |