2 Do-while sikli Bu chiqish-nazorat sikli hisoblanadi, yani sikl operatorlari bajarilgandan keyin siklning oxirida holat tekshiriladi. Bu shuni anglatadiki do-while sikli har doim kamida bir marta amalga oshiriladi.
Do-while operatorining sintaksisi quyidagicha bo`ladi:
do // bu erda nuqtali vergul bo`lmaydi
{
Sikl tanasi59 } while(condition); // bu erda nuqtali vergul
Siklda faqatgina bitta operator bo`lgan holatda qavslar talab qilinmaydi. Qavslar odatda while operatori bilan adashtirishni oldini olish uchun foydalaniladi.
Menyu kamida bir marta ko`rsatilganda ehtimol do-while siklining eng ko`p tarqalgan foydalanish usuli menyudagi funsiya tanlanishi. Keyin foydalanuvchining tanloviga bog`liq holda menyu takrorlanadi yoki to`xtatiladi.
Do-while siklini 9.3-rasmda berilgan grafikdan foydalangan holda ko`rsatish mumkin:
9.3-rasm.Do-while siklining ishlashi
Do-while siklidan foydalanayotganda quyidagi jihatlarni yodda saqlash kerak:
(i) U kamida bir marta bajariladi.
(ii) U holat to`g`ri bo`lib qolguncha bajariladi (yoki holat raqamlarda baholansa nol bo`lmasa) va holat qachonki yolg`on bo`lganda nazorat sikldan chiqib ketadi (yoki agar holat raqamlarda baholanganda nol bo`lsa).
(iii) Sikl tanasining ichida uni cheksiz bajarilishini oldini olish maqsadida holatni to`xtatuvchi sikl bo`lishi kerak.
Keling armstrong soni uchun raqamlarni tekshiruvchi misolni ko`rib chiqamiz. Agar son uni tashkil qiluvchi raqamlar kublarining yig`indisiga teng bo`lsa, u armstrong soni deb ataladi.
Misol uchun; 1, 153, 370, 371, 407 va hokazo.
Bu erda 153 = 13 + 53 + 33 va boshqalar ham shunday.
Quyidagi dastur do-while siklining ishlatilishini izohlab beradi:60 2-dastur //Check a number for Armstrong
//illustrating use of do-while loop
#include< iostream.h >
#include void main( )
{
int num,n,sum,r;
clrscr( );
cout<<"Enter the numberN<cin >> num;
n = num;
sum = 0;
do
{
r=n%10; //obtain the remainder
sum + = (r*r*r);
n /=10;
)while(n);
cout << endl;
if(sum = = num)
cout<< num<<" is an armstrong number";
else
cout<< num<<" is an armstrong number";
getch( ); //freeze the monitor
}
Output Enter the number
153
153 is an armstrong number
Enter the number
5 5
55 is not an armstrong number
Yuqoridagi dasturda birinchi navbatda raqam o`zgaruvchi num da o`qiladi va keyin soxta o`zgaruvchi n beriladi. Do-while sikli n dagi qiymatning alohida raqamlari kublarining yig`indisini qo`shadi. n nol bo`lganda sikl to`xtaydi. Sum ning qiymati num ning qiymati bilan taqqoslanadi, agar ular teng bo`lsa num raqam armstrong soni bo`ladi, aks holda armstrong soni emas.
Quyidagi dastur do-while siklidan foydalanib birinchi n ta natural sonlarni va ularning yig`indisini chop qiladi:61