Tarmoqlanuvchi jarayonlarni dasturlash.






















Mavzu:Tarmoqlanuvchi jarayonlarni dasturlash. Reja: 1. Shart operatori . 2. Tanlash operatori. switch operatori . 3. . Shartsiz o tish operatori ʻ va uning ishlash prinsipi .
1. Shart operatori Shart operatori. Oldingi mavzularda misol tariqasida keltirilgan dasturlarda amallar yozilish tartibida ketma-ket va faqat bir marta bajariladigan holatlar, ya’n i chiziqli algoritmlar keltirilgan. Amalda esa kamdan-kam masalalar shu tariqa yechilishi mumkin. Aksariyat masalalar yuzaga keladigan turli holatlarga bog liq ʻ ravishda mos qaror qabul qilishni (yechimni) talab etadi. C++ tili programmaning alohida bo laklarining ʻ bajarilish tartibini boshqarishga imkon beruvchi qurilmalarning yetarlicha katta majmuasiga ega. Masalan, programma bajarilishining birorta qadamida qandaydir shartni tekshirish natijasiga ko ra ʻ boshqaruvni programmaning u yoki bu bo lagiga ʻ uzatish mumkin (tarmoqlanuvchi algoritm). Tarmoqlanishni amalga oshirish uchun shartli operatordan foydalaniladi. Ushbu mashg ulotdan ʻ oldingi darslarda, dasturlash a soslarini o rganishga ʻ kirish qismi sifatida qabul qilishingiz mumkin, chunki olding i darslarda juda sodda dasturlarni yozdik, ushbu dasturlar qandaydir tarzda ishl adi, biror sodda vazifani bajardi, lekin qanday qilib rivojlanishni tanlash qobi liyatidan mahrum edi ushbu dasturlar. Bunday dasturlar chiziqli dasturlar deb at aladi. Ularni tramvaylarga o xshatish ʻ mumkin: agar yo l ʻ to sib ʻ qo yilgan ʻ bo l ʻ sa, to xtab ʻ turadi. Siz o ngga yoki ʻ chapga burila olmaysiz. Endi, bugungi mashg ulotdan ʻ boshlab dasturlarimiz yana da qiziqarli bo ladi. ʻ Agar dastur kodimizda mantiqiy tanlov operatorlarini qanday ishlatishni bilib olsak va dasturlar qandaydi r savollarga ega bo lsa, ʻ "o ylash", ʻ tahlil qilish va qanday harakat qilish kerakli gini va qaysi "yo l" ʻ ni tanlashga qaror qilish imkoniyatiga ega bo lamiz. ʻ Ya’ni, endi dastur endi tramvay emas, balki sizning mashinangizga aylanadi. Agar yo l ʻ to sib ʻ qo yilgan ʻ bo lsa, ʻ siz to siq ʻ ni osongina aylanib, qayerga borishni hal qilishingiz
mumkin. Shartli konstruksiyalar dastur oqimini shartga qarab mumkin bo lgaʻ n yo llardan ʻ biri bo ylab ʻ yo naltiradi. ʻ if konstruksiyasi. if ifodasi shartning to g riligini ʻ ʻ tekshiradi va agar u to g ri ʻ ʻ bo lsa, u ʻ operatorlar blokini bajaradi. Ushbu operator quyidagi qisqa shaklga ega: if (shart) { ko rsatmalar; ʻ } Rost yoki yolg onni ʻ qaytaradigan shartli ifoda shart sifatida ishlatiladi. Agar shart rost bo lsa, ʻ unda if blokiga kiritilgan keyingi bayonotlar bajariladi. Agar shart yolg on ʻ bo lsa, ʻ unda keyingi bayonotlar bajaril maydi. Ko rsatmalar ʻ bloki figurali qavslar ({ }) ichiga kiritilgan. Masalan: #include using namespace std; int main() { int x = 60; if(x > 50) { cout << "x 50 dan katta\n"; } if(x < 30) { cout << "x 30 dan kichik\n"; } cout<<"Dastur oxiri"< return 0;
} Bu yerda ikkita ifoda berilgan. Ular x ning belgilangan qiymatdan katta yoki kichikligini tekshiradilar. Ko rsatmaʻ sifatida ikkala holatda ham konsolga satr chiqariladi. Birinchi holda, x>50, shart to g ri ʻ ʻ bo ladi, ʻ chunki x o zgaruvchining ʻ qiymati haqiqatan ham 50 dan katta, shuning uchun bu shart haqiqiy bo ladi ʻ va shu ning uchun if blokiga kiradigan ko rsatma bajariladi. ʻ Ikkinchi holda, x<30 munosabat operatsiyasi yolg on ʻ qaytadi, chunki shart yolg on, ʻ shuning uchun keyingi ko rsatmalar ʻ bloki bajarilmaydi. Natijada, das tur ishga tushganda , konsol chiqishi quyidagicha bo ladi: ʻ else operatorini o z ʻ ichiga olgan if ifodasining to liq ʻ shaklidan foydalanishimiz mumkin: if (shart) ko rsatma_1 ʻ else ko rsatma_2 ʻ if operatoridagi shart yolg on ʻ bo lsa ʻ else operatoridan so ng, ʻ bajariladigan mulohazalar to plamini ʻ aniqlashimiz mumkin. Ya’ni, agar shart rost bo lsa, ʻ if ifodasidan keyingi ko rsatmalar ʻ bajariladi va agar bu ifoda yolg on ʻ bo lsa, ʻ el se operatoridan keyingi ko rsatmalar bajariladi. ʻ if(x > 60) cout << "x 60 dan katta\n";
else cout << "x 60 dan kichik \n"; Bunday holda, x> 60 sharti yolg on, ʻ ya’ni "false" qiymatini qaytaradi, shuning uchun else bloki bajariladi. Natijada konsolda "x 60 dan kichik" qatori ko rsatiladi. ʻ Biroq ko p ʻ hollarda ikkita emas balki bir nechta variantlardan birini tanlash kerak bo lib ʻ qolishi mumkin. Bu holda bir nechta if else konstruksiyasini ishlatish mumkin. Masalan, yuqoridagi holatda siz uchta shartni hisoblashingiz mumkin: x o zgaruvchisi 60 ʻ dan katta, 60 dan kichik va 60 ga teng bo lishi ʻ mumkin. if (x > 60) { cout << "x 60 dan katta \n"; } else if (x < 60) { cout << "x 60 dan kichik \n"; } else { cout << "x 60 ga teng \n"; } Ya’ni, bu holda biz dasturda voqealar rivojlanishining uchta tarmog ini ʻ olamiz.