Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

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

Switch-case valintarakenteen muoto:
{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_23;
		}
	break;
    case arvo_3 :
        ...
        break;
        ...
    default :
        lauseita;
        break;
}
{code}