Чӣ хеле ки шумо пай бурдед, оператори while аввал шартро месанҷад ва фақат дар ҳолати TRUE будани қимати он ба иҷрои ягон оператор шурӯъ мекунад. Агар ҳангоми ворид шудан ба сикли while қимати шарт FALSE бошад, while ҳеҷ корро иҷро намекунад. Оператори do-while аввал ягон корро иҷро мекунад, баъд ба санҷидани шарт мегузарад. Сохтори ин оператор чунин аст:

do
оператор;
while(condition);

Дар рафти кори барнома, ҳангоми навбат ба do-while расидан:

1) барнома ба иҷрои қисми оператор оғоз мекунад. Қисми оператор - тани сикл низ номида мешавад (body);
2) баъд барнома ба санҷидани қисми condition мегузарад. Дар қисми condition ягон ифодаи мантиқӣ меистад;
3) ҳангоми FALSE будани қимати қисми condition иҷрои оператори do-while қатъ мегардад ва барнома ба иҷрои қисми баъди оператори do-while шурӯъ мекунад. Ҳангоми TRUE будани қимати қисми condition барнома боз ба пункти 1) мегузарад.

Тасвири сохтори идоракунандаи do-while:

Дар хотир нигоҳ доред, ки дар оператори do-while баъди калимаи махсуси while аломати нуқтавергул (;) меистад.

Яъне дар оператори do-while тани сикл ақалан як маротиба автоматӣ иҷро карда мешавад, ки ин хусусияти фарқкунандаи ин оператор мебошад. Мисол:

//namuna12.cpp
using namespace std;
#include <iostream>
int main() {
char t;
float x,y;
do {
cout<<"Adadi yakum: ";
cin>>x;
cout<<"Adadi duyum: ";
cin>>y;
cout<<x<<"+"<<y<<"="<<x+y;
cout<<x<<"-"<<y<<"="<<x-y;
cout<<x<<"*"<<y<<"="<<x*y;
cout<<x<<"/"<<y<<"="<<x/y;
cout<<"Boz hisob kardan mekhohed?(y - ha, n - ne) ";
cin>>t;
} while(t=='y');
cout<<"Rahmat baroi istifodai hisobkunaki mo."<<endl;
return 0;
}

Як мисоли дигар:

#include <iostream>
using namespace std;

int main() {
double order; //order's amount
double discount;
double total;
int percent;
char c;

do {
cout<<"Enter Order Amount, please: ";
cin>>order;

if(order<500) {
percent = 0;
}
else if(order < 1000) {
percent = 2;
}
else if(order < 1500) {
percent = 4;
}
else {
percent = 5;
}

discount = order/100*percent;
total = order - discount;

cout<<"Order: "<<order<<endl;
cout<<"Discount Percent: "<<percent<<endl;
cout<<"Discount Amount: "<<discount<<endl;
cout<<"Total: "<<total<<endl;

cout<<"Continue?(y - yes, n - no) ";
cin>>c;
} while(c=='y' || c=='Y');

system("pause");
return 0;
}

САВОЛХО БАРОИ МУСТАҲКАМКУНӢ
1. Оператори сиклии do-while аз while чӣ фарқ дорад?
2. Оператори сиклии do-while аз for чӣ фарқ дорад?
3. Мисолеро дар тартиб диҳед, ки дар он сохтори идоракунандаи do-while бо амали мантиқии NOT истифода шуда бошад.
4. Нуқтавергул (;) барои чӣ лозим аст?