C++ tilida shartli operatorlar. Tarmoqlanuvchi jarayonlarga dasturlar tuzish.
Ko’p masalalarning yechimi ma’lum bir shart yoki shartlarning qo’yilishiga qarab bajariladi. Bunday jarayonlarni tarmoqlanuvchi hisoblash jarayoni deyiladi. Tarmoqlanuvchi hisoblash jarayonlari tarkibida yana tarmoqlanish bo’lishi mumkin. Bundaylarni murakkab tarmoqlanuvchi jarayonlar deb ataladi. Algoritmik tilda kattaliklarning istalgan xossasi shu ondagi qiymatlari uchun bajarilishi yoki bajarilmasligi shart deyiladi.
Shartli o’tish operatori. Shartli o’tish operatorining asosan uch xil ko’rinishi qo’llaniladi: 1) if (shart) operator; Bu shartli o’tish operatorining to’liqmas formasi deb ham aytiladi. Uning ishlashi quyidagicha: agar shart rost bo’lsa keltirilgan operator bajariladi, agar shart yolg’on bo’lsa, keyingi qatorga o’tiladi. To’liqmas tarmoqlanuvchi algoritmda shart bajarilganda bu shartga bog’liq amallar bajariladi, bajarilmagan holatda hech qanday amal bajarish shart emas.
1-misol. a va b sonlari berilgan. Ulardan kattasini topuvchi dastur tuzing. Yechimi: Dastavvala sonni maksimal deb tasavvur qilamiz. Agar b soni undan katta bo’lsa u holda b soni maksimal bo’ladi. #include using namespace std; int main() { double a, b, max; cout<<"Birinchi sonni kiriting: "; cin>>a; cout<<"Ikkinchi sonni kiriting: "; cin>>b; max = a; if (b > max) max = b; cout<
2) if (shart) 1-operator(lar); else 2-operator(lar); Bunda 1 va 2-operatorlarning har biri bittadan ortiq ifodadan tashkil topgan bo’lsa ularni blok ({}) ichda yozish shart bo’ladi.
# include # include using namespace std; int main ( ) { float x, y; cin >> x; if (x<5) y=sin(x); else y=pow(x, 2/3.); cout << “y=”<< y; return 0; }
3) shart ? 1-operator (lar) : 2-operator (lar); Masalan: x<5 ? y=sin(x) : y=pow(x,2/3.);
3-misol. n natural soni berilgan. Agar u toq bo’lsa "odd", juft bo’lsa "even“ so’zini chiqaruvchi dastur tuzing. Yechimi: n natural soni toq bo’lishi uchun uni ikkiga bo’lganda qoldiq 1 ga teng bo’lishi kerak, aks holda juft bo’ladi. #include using namespace std; int main() { int n; cin >> n; n % 2==1 ? cout<<"odd" : cout<<"even"; return 0;}
Murakkab tarmoqlanuvchi. Agar biror shart asosida tarmoqlangandan so’ng yana shart asosida tarmoqlansa(ya’ni else if), bunday tarmoqlanish murakkab tarmoqlanish deyiladi. 6-misol. Markazi koordinatalar boshida va radiyusi R ga teng bo’lgan aylana berilgan. Tekislikdagi (x,y) nuqta bu aylanaga tegishliligini aniqlang. Agar aylana tashqarisida yotsa "out", chizig’ida yotsa "line", ichida yotsa "in" so’zini chiqaring.
#include using namespace std; int main() { int x, y, R; cout<<"x=“; cin>>x; cout<<"y=“; cin>>y; cout<<"R="; cin>>R; if (x*x+y*y >R*R) { cout<<"out"; } else if (x*x+y*y==R*R) { cout<<"line"; } else { cout<<"in“;} return 0;}
Shartsiz o’tish operatori. Dasturlash jarayonida ba’zi hollarda boshqaruvni dasturning biror qismiga to‘g‘ridan-to‘g‘ri o‘tkazishga to‘g‘ri keladi. Bunday holatlarda shartsiz o‘tish operatoridan foydalaniladi. Shartsiz o‘tish operatorining umumiy ko‘rinishi quyidagicha: goto n; bu yerda: n – nishon nomi (metka, belgi) bo’lib, jarayon o’tishi kerak bo’lgan joyni ko’rsatadi. Metka harf, son va ular aralashmasidan iborat bo’lishi mumkin. 1 ta operatorga bir nechta metkalarni qo’yish mumkin. goto – o‘tish ma’nosini bildiradi. Nishon sifatida identifikatorlar yoki natural sonlar ishlatilishi mumkin. Masalan, goto N; yoki goto 7;
Tanlash operatori. Ko‘p hollarda biror-bir parametrning qiymatiga qarab operatorlar guruhidan keraklilarini bajarishga to‘g‘ri keladi. O’zgaruvchining qiymatiga qarab ko’p tarmoq ichidan bittasi tanlanadi. Bunday hollarda tanlash operatorini ishlatish maqsadga muvofiq. Tanlash operatorining umumiy ko‘rinishi quyidagicha:
switch (ifoda yoki o’zgaruvchi) { case 1-qiymat: 1-operator(lar); break; case 2-qiymat: 2-operator(lar); break; . . . case n - qiymat: n-operator(lar); break; default : n+1-operator (lar); }
# include # include using namespace std; int main ( ) { int x; float y; cin >> x; switch (x) { case 1 : y=sin(x); break; case 2 : y=cos(x); break; case 3 : y=tan(x); break; default : y=pow(x,2); } cout <<"x="<
Izox: 1) switch operatoridagi ifoda yoki o’zgaruvchi butun toifali bo’lishi shart! 2) switch operatori satrlaridagi break so’zi tushib qolsa, joriy case operatoridan keyingi case bloklari ichidagi ifodalar ham bajarilaveradi.