Boshqaruvni uzatish operatorlari
C++ da hisoblashlarni bajarishning tabiiy tartibini o'zgartiruvchi to'rtta operator mavjud:
goto shartsiz o'tish operatori;
break sikldan chiqish operatori;
continue siklning navbatdagi iteratsiyasiga o'tish operatori;
return funksiyadan qaytish operatori.
goto operatori
Shartsiz o'tish operatori goto
goto belgi;
formatga ega.
O'sha funksiya tanasida
belgi: operator;
ko'rinishdagi bitta konstruksiya bo'lishi lozim.
goto operatori belgilangan operatorga boshqaruvni uzatadi. Belgi – bu ko'rinish sohasi tanasida u berilgan finksiya bo'lgan odatdagi identifikator.
Shartsiz o'tish operatoridan foydalanish ikki holda o'zini oqlaydi.
bir nechta ichma-ich joylashgan sikllar yoki o'tkazgichlardan dastur matni bo'yicha quyiga majburiy chiqish;
funksiyaning bir nechta joylardan bittasi o'tish (masalan, agar funksiyadan chiqish oldidan hamma vaqt qandaydir amallarni bajarish zarur bo'lsa).
Qolgan hollarda ixtiyoriy algoritmni yozish uchun maqbul vositalar mavjud, goto dan foydalanish esa faqat dastur tuzilishini murakkablashishiga va sozlashni qiyinlashishiga olib keladi. goto ni qo'llash tuzilmasi va modulni dasturlash prinsiplarini buzadi, ularga ko'ra dastur o'z ichiga olgan batcha bloklar faqat bitta kirish va bitta chiqishga ega bo'lishi lozim.
Har qanday holda if, switch operatorlar va sikllar ichiga boshqaruvni berish maqsadga muvofiq emas. O'zgaruvchilar initsializatsiyasini o'z ichiga olgan bloklar ichiga, ulardan keyin joylashgan operatorlarga o'tish mumkin emas, chunki bu holda initsializatsiya bajarilmaydi:
int k; …
goto metka; …
{ int a = 3, b = 4;
k = a + b;
metka: int m = k + 1; …
}
Dasturning bu parchasi bajarilgandan so'ng m o'zgaruvchi qiymati aniqlanmagan.
break operatori
break operatori sikl yoki switch operatorlari ichida break joylashgan operator orqasidan bevosita joylashgan dastur nuqtasiga o'tishni ta'minlash uchun foydalaniladi.
Misol. Dastur cheksiz qatorga yoyish yordamida berilgan eps aniqlikda x haqiqiy argumentli giperbolik sinusning qiymatini hisoblaydi.
sh x = 1 + x3/3! + x5/5! + x7/7! + …
Hisoblash yig'indisiga qo'shiladigan qator kodining absalyut qiymati berilgan aniqlikda kam bo'lganda to'xtatiladi.
#include
#include
int main (){
const int MaxIter = 500; // органичитель колечства итераций
double x, eps;
cout << "\n Введите аргумент и точность: ";
cin >> x >> eps;
bool flag = true; // признак успешного вычисления
double y = x, ch = x; // сумма и первый член ряда
for (int n = 0; fabs(ch) > eps; n++) {
ch *= x * x /2(2 * n + 2)/(2 * n +3); // очередной член ряда
y += ch;
if (n > MaxIter) {
cout << "\n Ряд расходится!";
flag = false; break;}
}
if (falg) cout << "\n Значение функции: " << y;
return 0;
}
Do'stlaringiz bilan baham: |