do operator while ifoda
ko’rinishga ega.
Dastlab sikl qismini tashkil etuvchi oddiy yoki murakkab operator bajariladi, so’ngra ifoda hisoblanadi. Agar u rost (false ga teng bo’lmasa) sikl qismi yana bir marta bajariladi. Sikl ifoda false ga teng yoki sikl tanasida qandaydir boshqaruv operator bajarilganda tugaydi. Ifoda tipi arifmetik yoki unga keltiriladigan bo’lishi lozim.
Misol (dastur tekshirishini tekshiradi).
#include int main (){
char answer;
do{
cout << "\n Купи слоника!" : cin >> answer;
} while (answer ! = 'y' ) ;
return 0;
}
Misol. Dastur X haqiqiy argumentdan kvadrat ildizni Eps berilgan aniqlikda
.
itiratsion formula bo’yicha hisoblaydi. Bularda – ildizga oldingi yaqinlashish (hisoblashlarning boshida ixtiyoriy tanlanadi), yn – keyingi yaqinlashishlar. Yaqinlashishlar bir–biridan absalyut qiymati bo'yicha berilgan aniqlikdagi miqdordan kam farq qilguncha hisoblashlar to'xtatiladi. Absalyut miqdorni hisoblash uchun e'loni sarlovha faylda joylashgan fabs(), standart funksiyadan foydalaniladi.
#inc1ude #include int main(){
double X, Eps; // аргумент и точность
double Yp, Y = 1; // предыдущее и последующее приближение
printf ("Введите аргумент и точность: ") ;
scanf ("%lf%lf" , &X, &Eps);
do {
Yp = Y;
Y = (Yp + X/Yp)/2;
} while (fabs(Y - Yp) >= Eps);
printf ("\n Kopeнь из %lf равен %lf", X,Y) ;
return 0;
}
Parametrli sikl (for)
Parametrli sikl quyidagi didaktikaga ega:
for (initsializatsiya: ifoda: modifikatsiya) operator;
Initsializatsiya siklda ifodalaniladigan miqdorning boshlang'ich qiymatlarini e'lon qilish va berish uchun ishlatiladi.
Bu qisimda vergul bilan ajratilgan bir nechta operatorlarni yozish mumkin (“ketma–ket bajaring” amali bilan), masalan, quyidagicha
for (int i = 0, j = 2: ...
int k, m;
for (k = 1, m = 0: …
Siklning initsializatsiya qismida e'lon qilingan o’zgaruvchilar amal qilish sohasi sikldan iborat. Initsializatsiya siklni bajarishning boshida bir marta bajariladi.
Ifoda siklni bajarish shartini ifodalaydi: agar uni bool tipga keltirishning natijasi true ga teng bo’lsa sikl bajariladi. Parametrli sikl old shartli sikl kabi bajariladi.
Modifikatsiya siklning har bir iteratsiyasidan so’ng bajariladi va siklning parametrini o’zgartirish uchun xizmat qiladi. Modifikatsiya qismida bir nechta operatorni vergul orqali yozish mumkin. Oddiy yoki murakkab operator sikl jismidan iborat. for operatorining ixtiyoriy qismi tashlanishi mumkin (lekin nuqtali vergulni o’z joylarida qoldirish lozim!).
Misol (1 dan 100 gacha bo’lgan sonlar yig'indisini hisoblovchi dastur):
for (int i = 1, s = 0; i <= 100; i++) s += i;
Misol (dastur funksiyaning kiritilgan oraliqdagi qiymatlari jadvalini chop etadi):
#include int main (){
float Xn, Xk, Dx, X;
printf ("Введите диапазон и шаг изменения аргумента: ");
scanf ("%f%f%f", &Хn, &Хк, &Dx);
printf ("| X | Y |\n");
for ( X = Xn; X<=Xk; X += Dx)
printf ("|%5.2f | %5.2f |\n", X, X*X+1);
return 0:
}
Misol (dastur butun musbat sonning barcha bo'luvchilarini topadi):
#include int main (){
int num, half, div;
if (!(num % div))cout <return 0:
cout <<"\n Введите число : "; cin >> num;
for (half = num / 2, div = 2; div <=half; div++)
}
Oxirgi ikkita misol old shartli sikli uchun misollar kabi barcha amallarni bajaradi lekin kompakt va ko’rgazmali yozilgan: siklni boshqarish bilan bog’liq barcha amallar uning sarlavhasida lokallashtirilgan.
Har qanday while sikl unga ekvivalent bo’lgan for siklga va aksincha quyidagi sikl bo’yicha keltirish mumkin:
for (b1; b2; b3) operator b1;
while (b2){
operator; b3;}
Sikllarni dasturlashda ko'p uchraydigan xatolar – sikl tanasida initsializatsiyalanmagan o'zgaruvchilardan foydalanish va sikldan chiqish jarayonining moto'g'ri yozuvi.
Xatolarni bartaraf etish uchun tavsiya etiladi:
sikl tanasidagi qiymat berish operatorlar o'ng qismida uchraydigan barcha o'zgaruvchilarga bungacha boshlang'ich qiymatlar berilganligi yoki yo'qligini tekshirish (hamda boshqa operatorlarni bajarish mumkin yoki mumkin emasligini tekshirish);
sikllarda sikldan chiqish shartiga kiruvchi hech bo'lmaganda bitta o'zgaruvchi o'zgaradimi yoki yo'qligini tekshirish;
biror sondagi iteratsiyalarga erishilgandan so'ng sikldan favqulotda chiqishni ko'zda tutish;
va albatta, agar sikl tanasida bittadan ko'p operatorni bajarish talab etilsa, ularni kvadrat qavslarga olishni sedan chiqarmaslik lozim.
Sikl operatorlari o'zaro almashinuvchi, lekin har bir konkret holda eng yaxshisini tanlash bo'yicha ba'zi tavsiflarni keltirish mumkin.
do while operatori odatda sikl albatta hech bo'lmaganda bir marta bajarilishi talab etilganda (masalan, agar siklda ma'lumotlarni kiritish bajarilayotgan bo'lsa) foydalaniladi.
while operatorini iteratsiyalar soni oldindan ma'lum bo'lmasa, siklning oshkora parametrlari yo'q yoki parametrlar modifikatsiyasini sikl tanasida oxirida yozish noqulay bo'lgan hollarda foydalanish maqsadga muvofiq.
for operatori qolgan hollarning ko'pchiligida qulay (bir so'z bilan aytganda – sanagichli sikllarni tashkil etish uchun).