Оператор switch - многовариантен избор

оператор switch - параметър естествено число
оператор switch - параметър символ
вложен оператор switch

Приложение на оператор switch - при необходимост от разклоняване на изчислителния процес, при многовариантен избор. Описание: оператор switch изисква за параметър целочислена променлива от тип int, или символен от тип char. Този параметър играе роля на селектор и указва конкретния оператор case, който трябва да се изпълни, избор на конкретен вариант. В задължителните фигурни скоби се изброяват всички разглеждани случаи - както при съставен оператор. На отделен ред в следния порядък са записани: оператор case, число, знак :, описание какво трябва да изпълни програмата, оператор break. Чрез оператор switch е възможно алгоритъмът да се разклони в множество посока. Близък до действието на този оператор е оператор if - и двата се използват за промяна на последователността на изчислителния процес, при разклонени алгоритми. Особеното при него, е че са допустими само две възможности за избор с една конструкция if ...else.

Съвпадението на параметъра в switch с числото в case води до изпълнение на съответния случай. Действието на оператор break се състои в преустановяване търсенето на друга възможност - така се постига ускоряване работата на програмата. Като последен ред в тялото на оператор switch е препоръчително да се ползва оператор default. Този последен ред ще се изпълни само, ако няма съответствие между въведената стойност в switch и описаните стойности за case.

Начало на страницата

оператор switch - параметър естествено число

Трагедията на Есхил "Едип цар" се базира на една от старогръцките легенди, която гласяла приблизително следното: В планината едно чудовище (сфинкс) причаквал пътниците и им задавал следната гатанка: "Кое е онова животно, което сутрин ходи на 4 крака, по обяд на 2 крака, а вечер на 3 крака." Единствен Едип успял да разгадае загадката.

   Следващата програма съдържа пример илюстриращ switch - по въведено естествено число от интервала [2..4] за параметър се извежда съответната възраст.
#include <iostream>
using namespace std;

int main ()
{ int N;
  cout<<"Da se systawi programa, chrez koqto se wywevda cqlo chislo N\n";
  cout<<"ot interwala [2..4]. Programata da izwevda kakwa e wyzrastta\n";
  cout<<"na chowek syobrazno ywywedenoto chislo.\n";
  cout<<"Da se izwevda syobshenie za greshka, ako chisloto e izwyn interwala.\n";
  cout<<"Primer: 3 Izhod: Zrqla wyzrast.\n";
  
  cout<<"Wywedete cqlo chislo [2..4]: ";cin>>N;
  switch (N) 
  {  //operator switch - sluvebna duma 
  //operator break - sluvebna duma - za da ne prowerqwa ostanalite sluchai
  //operator case - sluvebna duma - izbroima stojnost cqlo chislo / char
    case 2: cout<<"Detska wyzrast.\n"; break;
    case 3: cout<<"Zrqla wyzrast.\n"; break;
    case 4: cout<<"Starost - neradost.\n"; break;
   //kliuchowa duma default - ako ne e izpylneno nito edno ot uslowiqta
    default: cout<<"Wywedenoto chislo da e w granicite [2..4].\n";
} 
system("pause");
  return 0; 
} //kraj na programa operator switch 

Начало на страницата


оператор switch - параметър от тип char

Променливата, предавана като параметър за оператор switch може да бъде и от символен тип. Във всеки отделен оператор case се изписва конкретния знак, но заграден с апостроф. Следващият пример за оператор switch извежда един от годишните сезони по въведена начална буква за параметър:

#include <iostream>
using namespace std;

void sezoni( char s)
{
  switch (s) 
     {  //operator switch - sluvebna duma 
  //operator break - sluvebna duma - za da ne prowerqwa ostanalite sluchai
  //operator case - sluvebna duma - izbroima stojnost cqlo chislo / char
    case 'p': cout<<"Prolet - spring\n"; break;
    case 'l': cout<<"Lqto - summer\n"; break;
    case 'e': cout<<"Esen - autumn\n"; break;
    case 'z': cout<<"Zima - winter\n"; break;      
   //operator default - sluvebna duma - ako ne e izpylneno nito edno ot uslowiqta
       default: cout<<"Wywedenata bukvwa da edna ot slednite: e,l,p,z.\n";
  } //operator switch   
 } // mnogowarianten izbor - switch   

int main ()
{ char s;
   cout<<"Da se systawi programa, chrez koqto se wywevda malka bukwa\n";
   cout<<"ot interwala [e,l,p,z]. Programata da izwevda syotwetniq sezon.\n";
   cout<<"Da se izwevda syobshenie za greshka, ako bukwata e izwyn interwala.\n";
   cout<<"Primer: l Izhod: Lqto\n";
   cout<<"Wywedete bukva za sezon [e,l,p,z]: ";cin>>s;
   sezoni( s);
system("pause");
return 0; 
} //kraj na programa operator switch

Начало на страницата


вложен оператор switch

Даден оператор switch може да съдържа в тялото си друг вложен оператор switch. Няма програмни ограничения за брой вложени оператора switch, но това може да доведе до по-трудно откриване на алгоритмична грешка.


Следващата примерна програма съдържа пример за два вложени един в друг оператора switch:
#include <iostream>
using namespace std;

int main ()
{ int pol, sem;
cout<<"Da se systawi prgrama, koqto da izwevda podhodqsho syobshenie\n";
cout<<"syobshenie za pol i semejno polovenie chrez operator switch \n";
cout<<"Wywmoven izbor za pol: 0 - myv; 1 - vena\n";
cout<<"Wywmoven izbor za semejno polovenie: 0 - neomyvena; 1 - omyvena\n";
cout<<"Wywedete pol [0..1]: ";cin>>pol; 
 pol%=2;
 if (pol) { cout<<"Semejno polovenie: ";cin>>sem;}
 switch (pol)
  { case 0: cout<<"Gospodin \n"; break;
    case 1:
      { switch (sem) //wloven operator switch
       { case 0: cout<<"Gospovica \n";break;
         case 1: cout<<"Gospova \n";break;        
       } // kraj switch (sem)
       }
  }// kraj switch (pol)    
  system("pause");
  return 0;
}// kraj programa operator switch

Обяснени и решени задачи с подобни алгоритми, функции и служебни думи са разгледани в страницата с електронни уроци по информатика - програмиране.
Илюстриране работата на характерни алгоритми можете да намерите в предоставените електронни помагала съдържащи решени задачи, примери.

Начало на страницата

 
Размер на шрифта
Increase Font Size Option 3 Reset Font Size Option 3 Decrease Font Size Option 3
Bulgarian Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish
Търсене в сайта: