Сохтори идоракунандаи switch-case

Дар холати бисёркарата истифода шудани оператори if-else, иваз намудани он бо оператори switch-case кулайтар аст. Сохтори умумии ин оператор чунин аст:

switch(тагйирёбанда ё ифода) {
case варианти1:
оператори1;
break;
case варианти2:
оператори2;
break;
..................
case вариантиn:
операториn;
break;
default:
оператор;
}

Вакти расидани навбати коркард ба оператори switch-case кимати тагйирёбанда ё ифода муайян карда мешавад ва агар он ба варианти1 баробар бошад, кисми баъди дунукта (:) буда, яъне оператори1 ичро карда мешавад. Калимаи махсуси break барои аз switch-case баромадан ва гузаштан ба ичрои оператори минбаъда зарур аст. Агар кимати тагйирёбанда ё ифода ба варианти1 баробар набошад, он бо варианти2 мукоиса карда мешавад, агар он ба варианти2 баробар бошад, кисми баъди дунукта (:) буда, яъне оператори2 ичро карда мешавад. Калимаи махсуси break барои аз switch-case баромадан ва гузаштан ба ичрои оператори минбаъда зарур аст. Яъне break аз ичрои кисми бокимондаи оператори switch-case эмин медорад. Дар холати кимати тагйирёбанда ё ифода ба ягонтои вариантхо баробар набуданаш, кисми баъди default ичро карда мешавад.

Тасвири сохтори идоракунандаи switch:
(интихоби мачмуи)

Хамчун мисол хисобкунаки дар namuna12.cpp сохтаамонро дигаргун мекунем:

//namuna15.cpp
using namespace std;
#include <iostream>
#include <math>
int main() {
double x,y,z;
char t,amal;
do {
cout<<"Adadi yakum: ";
cin>>x;
cout<<"Adadi duyum: ";
cin>>y;
cout<<"Amal(+,-,*,/,^,%): ";
cin>>amal;
switch(amal) {
case '+':
z=x+y;
break;
case '-':
z=x-y;
break;
case '*':
z=x*y;
break;
case '/':
if(y!=0)
z=x/y;
else
cout<<"Taksim ba nul ma'no nadorad!"<<endl;
break;
case '^':
z=pow(x,y);
break;
case '%':
z=x/100*y;
break;
}
if(y!=0 || amal!='/')
cout<<x<<amal<<y<<"="<<z<<endl;
cout<<"Boz hisob kardan mekhohed?(y-ha,n-ne) ";
cin>>t;
}while(t=='y');
return 0;
}

Дар ин мисол дар кисми case '/' пеш аз амали таксимро ичро кардан, ба нул баробар будани таксимшаванда санчида мешавад. Агар таксимшаванда 0 бошад, азбаски таксим ба 0 маъно надорад, амали таксим ичро намешавад. Дар кисми case '^' барои x-ро ба дарачаи y бардоштан функсияи pow() аз файли сарлавхавии -и компилятори Microsoft Visual C++ истифода шудааст, агар компилятори шумо дар ин кисми код аз хатоги хабар дихед, хусусиятхои компилятори худро омухта, ивази функсияи pow()-ро ёбед.

САВОЛХО БАРОИ МУСТАХКАМКУНИ
1. Фарки байни операторхои if-else ва switch-case дар чист?
2. Оператори break кадом вазифаро ичро мекунад?
3. Калимаи махсуси double барои чи лозим аст?
4. Калимахои инглисии if, else, switch, case, for, while, do ва break-ро ба точики тарчума кунед.

Дополнительная информация