Селекција помоћу скретнице: switch

Ова структура састоји се од низа наредби и целобројног израза чија вредност одређује прву наредбу у низу одакле почиње извршавање:

skretnica-saDef2

Цео низ наредби разбијен је у поднизове: niz_naredbi_1, niz_naredbi_2, …, niz_naredbi_N. Поједини поднизови могу бити и празни, односно да не садрже ни једну наредбу. То је случај када је потребно за више различитих вредности израза скочити на исту наредбу, односно исти подниз у целокупном низу.

Ако је вредност целобројног израза једнака α извршавање почиње од niza_naredbi_1, ако је једнака β од niza_naredbi_2 … ако је вредност ω од niza_naredbi_N. Уколико вредност израза није једнака ниједној од назначених вредности α, β, … , ω извршавање почиње nizom_naredbi_0, а то место је на слици означено са def (скраћено од default, што значи – подразумевана вредност). Уколико ништа не треба да се ради ако вредност израза није једнака ниједној од вредности α, β, …, ω линија обележена са def се води иза последње наредбе у низу.

skretnica-bezDef2

Запази да, за разлику од наредбе гранања if где је услов који је одређивао која ће се грана извршити логички израз који има само две вредности (true и false), код скретнице у питању је целобројни израз који узима вредности из неког (унапред задатог) скупа целобројних вредности!

У програмском језику C селекција помоћу скретнице изражава се помоћу наредбе switch:

switch (izraz)
{
     case vrednost_1: niz_naredbi_1
     case vrednost_2: niz_naredbi_2
     …
     default: niz_naredbi_0
     …
     case vrednost_N: niz_naredbi_N
}

Целобројни израз се обавезно ставља између заграда (), сви низови наредби се стављају између једног пара заграда {}. Места у низу свих наредби, на која се скаче у зависности од вредности израза обележавају се ознакама case vrednost_i:

Ове вредности су целобројне константе и свака ознака мора да садржи различите вредности. Специјална ознака default: означава место на које се скаче уколико вредност израза није једнака ниједној од вредности у ознакама case.

Пошто поједини низови наредби могу да буду празни, више ознака case могу да стоје једна за другом без наредби међу њима. Тада се, у ствари, за више различитих вредности израза скаче на исту наредбу!

После извршеног скока на основу вредности израза извршавају се СВЕ наредбе до краја наредбе switch.

Пример: Објасни шта се дешава у следећем сегменту програма:

switch(i+j*k)
{
     case 1: printf("unesite 3 cela broja: ");
             scanf("%d%d%d", &i, &j, &k);
     case 7:
     case 3:
     case 5: a=i+1*k;
             b=i-j/k;
     default: c=a*b;
     case 12: printf("Rezultati su: %d%d%d\n", a, b, c);
}
Advertisements

Оставите одговор

Попуните детаље испод или притисните на иконицу да бисте се пријавили:

WordPress.com лого

Коментаришет користећи свој WordPress.com налог. Одјавите се / Промени )

Слика на Твитеру

Коментаришет користећи свој Twitter налог. Одјавите се / Промени )

Фејсбукова фотографија

Коментаришет користећи свој Facebook налог. Одјавите се / Промени )

Google+ photo

Коментаришет користећи свој Google+ налог. Одјавите се / Промени )

Повезивање са %s