logo

Tarmoqlanuvchi jarayonlarni dasturlash.

Yuklangan vaqt:

08.08.2023

Ko'chirishlar soni:

0

Hajmi:

41.1904296875 KB
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.   Agar   if   yoki   else   yoki   else-if   blokida   faqat   bitta   konstruksiyani   bajarish   kerak  
bo lsa,ʻ     u     holda     figurali     qavslar     chiqarib     tashlanishi     mumkin.     Yuqoridagi     kod
ni  
quyidagicha	
 yozish   mumkin:  
 
int	
 x   =	 60;  
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";  
 
Misol.   Foydalanuvchi   ikkita   raqamni   kiritadi   va   dastur   bu   ikki   raqamning   qaysi  
biri	
 kattaroqligini	 aniqlaydi.  
 
#include     <iostream>
using   namespace   std;  
 
int	
 main()  
{  
    int
 var1   =   0;  
  int
 var2   =   0;  
  cout
 <<	 "Birinchi   sonni	 kiriting:	 ";     cin >>	 var1;  
  cout	
 <<	 "Ikkinchi   sonni	 kiriting:	 ";  
  cin	
 >>	 var2;  
 
    if   (var1   >   var2)  
{  
      cout     <<     "\n     Taqqoslash     natijasi:     Birinchi     son     ikkinchisidan  
katta\n";  
    }  
  if   (var1   <   var2)  
    {  
      cout     <<     "\n     Taqqoslash     natijasi:     Ikkinchi     son     birinchisidan  
katta\n";  
    }  
    if   (var1   ==	
 var2)  
  {  
      cout	
 <<	 "\nTaqqoslash	 natijasi:	 Sonlar   teng\n";  
    }  
    return   0;  
}  
 
14-qatorga   qadar   hamma   narsa   aniq   -   foydalanuvchi   ikkita   raqam   kiritdi,   ular  
mos     keladigan     o zgaruvchilarga	
ʻ     yozildi.     Qanday     qilib     endi     ular     solishtirishlari  
  va  
taqqoslash     natijalarini     ko rsatishlari	
ʻ     mumkin?     Buning     uchun     if     operatoridan  
foydalanamiz.     if     yozsak,     unda     qavs     ichida     (     )     (qavs)     lar     ichida     shartni     yoza
miz     -  
o zgaruvchilar	
 qiymatlarini	ʻ   taqqoslash   (var1>	 var2).   Agar   var1   haqiqatan   ham   var2   dan   katta   bo lsa,ʻ   bu   shart   natijasi   rost   bo ladi.	ʻ  
Keyin   dasturning   bajarilishi   figurali   qavslar   ichida   joylashtirilgan   kodga   o tadi	
ʻ   {   }  
-  
17     -     19-qatorlar.     Ya’ni     ekranda     biz     birinchi     raqam     ikkinchisidan     kattaroq     de
gan  
xabarni   ko ramiz.	
ʻ  
Agar     qavs     ichidagi     shart     bajarilmasa     (yolg on	
ʻ     bo lsa),	ʻ     u     holda     {     }     figurali  
qavslaridagi   kod   e'tiborga   olinmaydi   va   dasturning   bajarilishi   keyingi   blok   satridan  
if   blok   ostida   –   21-satrdan   davom   etadi.   Bu   yerda   yana   o zgaruvchilarning	
ʻ   o zaro	ʻ  
bog liqligini	
 tekshiramiz.	ʻ  
Ikkalasi	
 tengligi	 sharti	 rost   bo lsa	ʻ   uning   pastidagi	 blok   bajariladi,   buning	 kodi ,  
agar   yolg on	
ʻ   bo lsa	ʻ   pastga   o tadi.	ʻ   25-qatorda   oxirgi   mumkin   bo lgan	ʻ   sinov   aynan  
tenglik     operatoridir.     =     (ta’minlash)     emas,     balki     ==     (teng)     operatoridan  
foydalanganingizga   ishonch   hosil   qiling.   Aks   holda,   bu   if   kodi   xato   bilan   ishlaydi.  
Masalan,	
 variable1   =	 3,	 va	 variable2   =	 4,	 agar	 biz   xato   (agar	 var1   =	 var2)   yozsak,
4  
qiymati   o zgaruvchiga	
ʻ   yoziladi.  
  Ushbu   kodni   qisqartirishimiz   ham   mumkin.    
#include     <iostream>
using   namespace   std;  
  int	
 main()  
{  
    int   var1   =   0;  
    int   var2   =   0;  
      cout	
 <<	 "Birinchi	 sonni	 kiriting:	 ";  
  cin	
 >>   var1;  
    cout
 <<	 "Ikkinchi   sonni	 kiriting:	 ";  
    cin	
 >>   var2;  
      if   (var1>   var2)     cout     <<     "\nTaqqoslash     natijasi:     Birinchi     son     ikkinchisidan   katta\n";  
    else if (var1<   var2)  
      cout     <<     "\nTaqqoslash     natijasi:     Ikkinchi     son     birinchisidan   katta\n";  
    else  
    cout	
 <<	 "\nnTaqqoslash	 natijasi:   Sonlar   teng\n";  
  return   0;  
}  
  Ushbu     misolda     biz     endi     figurali     qavslardan     foydalanmayotganimizni  
ko rishingiz	
ʻ   mumkin.   Yana   bir   ortiqcha   narsa   shundaki,   agar   birinchi   shart   bajarils
a,  
qolgan   if   else   va   else   bloklari   endi   tekshirilmaydi   (ya’ni   dasturning   bajarilish   vaqti  
kamayadi).   Xo sh,	
ʻ   agar   birinchi   shart   yolg on	ʻ   bo lsa,	ʻ   dastur   keyingi   blokka   o tadi,	ʻ  
if     va   uning   holatini     tekshiradi   -     (variable1   <variable2)   -     18-satr.   agar     bu     yolg o	
ʻ
n   <	
 p=""></variable2)   -     18-satr.   agar     bu     yolg on	ʻ   <>
bo lsa,	
ʻ     unda     shart     endi     bo lishi	ʻ     mumkin     bo lmagan	ʻ     oxirgi     else     bloki     bajarilis
hini  
tekshiramiz,     chunki     bundan     oldin     biz     ikkita     qiymatning     nisbati     uchun     barcha  
mumkin   bo lgan	
ʻ   variantlarni	 ajratdik   va	 faqat   ularning   tengligi   qoladi.  
Ushbu   dasturlarning   natijasi   bir   xil.   Ammo   ikkinchi   holda,   kod   yanada   ixcham  
va	
 kompilyator   kamroq   ishlaydi.  
  Shart	
 operatorida	 e’tibor   qilish	 kerak   bo lgan	ʻ   jihatlar:  
1)	
 if   sintaksisi:  
f   (shart)     {    
ko rsatmalarʻ    
}  
  2)
 if-else   sintaksisi:  
if   (shart)    
{    
ko rsatma
ʻ   1    
}  
else    
{    
ko rsatma
ʻ   2    
}  
  yoki	
 ko proq	 shartlar	ʻ   kerak   bo lsa:	ʻ  
if   (shart)    
{    
ko rsatma	
ʻ   1    
}  
else     if    
{    
ko rsatmaʻ   2    
}  
else    
{    
ko rsatma
ʻ   3    
}  
…  
3)   if-else   bloklarini   qurish   ajralmas.   Agar   u   kodda   bo lsa,	
ʻ   uni   boshqa   kod   bilan  
ajratib	
 bo lmaydi.	ʻ    
Misol	
 uchun:  
if   (shart)    
{    
ko rsatma	
ʻ    
}  
cout   <<	
 	“Salom!”;   //Xatolik  
else     {    
ko rsatmalarʻ    
}  
 
4)   if   shart   operatorining   ishlash   prinsipi   -   qavs   ichidagi   shart   rost   bo lsa,	
ʻ   u   holda  
blok     kodi     bajariladi.     Agar     yolg on	
ʻ     bo lsa,	ʻ     unga     e'tibor     berilmaydi     va     dasturni
ng  
bajarilishi   if   bloki	
 ostidagi	 kod	 satridan   boshlanadi.  
5)     qavs     ichidagi     tanlov     operatorining     holati     normal     bo lishi	
ʻ     mumkin:     if  
(variable   >   0)   yoki   birlashtirilgan:   if   (variable   >   0   &&   variable
<   100).   Ikkala   shart  
ham   rost	
 bo lsa,	 birlashtirilgan	ʻ   shart   rost   bo ladi.	ʻ  
6)     Shart   operatorining     sharti     arifmetik   ifoda     bo lishi	
ʻ     mumkin:     if     (variable1     -  
variable2).   if   blokining   kodi,   agar   hisoblash   natijasi   0   bo lmasa	
ʻ   bajariladi.   Masalan
:  
if   (5   -   7),	
 if (2   +   5).   Ammo   agar	 (2   -2)   bo lsa	ʻ   -   blok   kodi	 e'tiborga   olinmaydi.  
7)     agar     if,     else     if,     yoki     else     bloklarida     faqat     bitta     kod     satri     bo lsa,	
ʻ     figurali  
qavslardan   foydalanishga   hojat   yo q.	
ʻ   Ammo   yangi   boshlovchilar   uchun,   har   doim  
figurali	
 qavslardan   foydalanish	 maqsadga   muvofiq.  
Ternar     operatori.     Odatda,     ternar     operatori     shart     va     shartni     tekshirish  
natijasida     bajariladigan     kod     juda     oddiy     bo lgan	
ʻ     hollarda     qo llaniladi.	ʻ     Masalan,  
foydalanuvchidan     dasturda     ishlashni     davom     ettirishni     xohlaysizmi     yoki     undan  
chiqishni
xohlaysizmi   deb   so rashimiz	
ʻ   kerak   bo lsa.	ʻ   Ternar   operatorining   sintaksisi  
quyidagi	
 shaklda   bo ladi:	ʻ  
  shart	
 ? buyruq_1	 :    buyruq_2;    
 	
Birinchidan,     biz     kerakli     shartni     yozib,     ortiga     so roq	ʻ     belgisini     ?     qo yishimiz	ʻ  
kerak.   So ngra,	
ʻ   xuddi   shu   qatorda,   savol   belgisidan   keyin,   agar   shart   to g ri	ʻ ʻ   bo lsa,	ʻ   bajariladigan   birinchi   oddiy   buyruqni   (kodni)   yozamiz.   Ushbu   buyruqdan   keyin   ik
ki  
nuqta   (:) qo ying	ʻ   va	 ikkinchi   buyruqni   (kodni)   yozing.   Ushbu   ikkinchi	 buyruq,
ikki  
nuqta   qo yilgandan	
ʻ   keyingina,	 shart   yolg on	 bo lsa	ʻ ʻ   bajariladi.  
Misol.     Aytaylik,     foydalanuvchi     bankomatdan     pul     oladi.     U     ushbu  
operatsiyani   amalga   oshirdi   va   ekranda   savol   paydo   bo lishi	
ʻ   kerak:   "Boshqa  
operatsiyani   bajarishni   xohlaysizmi?"   Foydalanuvchiga   tanlov   qilish   kerak   (ha  
yoki	
 yo q)	 va	ʻ   tegishli	 tugmani	 bosing.    
Ushbu   tanlovni	
 quyidagi   dasturda	 tashkil	 etamiz:  
#include    
using   namespace   std;  
int	
 main()   {  
      bool   variable	
 = true;  
    cout     <<     "Karta     hisob     varag ida	
ʻ     ba’zi     operatsiyalarni     amalga     oshirish  
...\n";  
    cout   <<   "Boshqa   operatsiyani   bajarishni   xohlaysizmi   (1   -   ha,   0   -   yo q)?";	
ʻ  
    cin	
 >>   variable ;  
  variable     ==     1     ?     cout     <<     "Operatsiyani     tanlang!\n..........\n\n"     :     cout     <<  
"Xayr!   Chekingizni	
 olishni	 unutmang!\n\n";  
    return   0;   }  
  3-misol.   Foydalanuvchi   kiritgan   ikkita   qiymatning   minimal   va   maksimal   sonini  
aniqlash   uchun	
 ternar   operatoridan   foydalanish.  
#include    
using   namespace   std;  
  int	
 main()  
{       int firstDigit	 =   0;  
    int	
 secondDigit   =	 0;  
    int	
 max   =   0;  
    int
 min	 = 0;  
  cout	
 <<   "Kiriting   firstDigit   -   birinchi	 son:";  
    cin	
 >>	 firstDigit;  
    cout	
 <<	 "Kiriting   secondDigit   -   ikkinchi   son:";  
    cin	
 >>	 secondDigit;  
  max   =
 (firstDigit	 >   secondDigit)   ?   firstDigit   :   secondDigit;
  min	
 = (firstDigit   <	 secondDigit)   ?   firstDigit   :   secondDigit;  
  cout	
 <<	 "Maksimum   =	 " <<	 max   <<	 endl;  
    cout	
 <<	 "Minimum   =	 " <<   min<<	 endl;  
    return   0;  
}  
  Dastur	
 natijasi:  
  Shart     operatorini     ichma-ich     qo llash.	
ʻ     Hayotda     bo lgani	ʻ     kabi,     kompyuter  
dasturlarida     ham     ba’zan     ikkitadan     ortiq     variantni     tanlashingiz     kerak.     Bunday  
ehtiyojlarni   qondirish   uchun   C++da   if   else   kengaytirilishi   mumkin.   Yuqorida   aytib  
o tilganidek,	
ʻ   boshqasidan   keyin   bitta   bayonot   bo lishi	ʻ   kerak,   bu   ham   bayonot   bloki  
bo lishi	
ʻ   mumkin.   Agar   else   o zi	 	bitta	ʻ   bayonot	 	bo lsa,	ʻ
u   yana   quyidagilarni   bajarishi  
mumkin:  
if   (ch	
 ==	 ' А ')    
a++;    
else    
if   (ch	
 ==	 ' В ')    
b++;    
else     s++;       Agar     ch     o zgaruvchisiʻ     'A’     ga     teng     bo lmasa,	ʻ     dastur     boshqa     satrga     o tadi.	ʻ     U  
yerda     ikkinchi     if-else     buyrug i	
ʻ     ushbu     alternativani     yana     ikkita     variantga     ajrat
adi.  
C++ning   erkin   formatlash   xususiyati   ushbu   elementlarni   o qilishi	
ʻ   mumkin   bo lgan	ʻ  
tartibda	
 joylashtirishga   imkon   beradi:  
 
if   (ch	
 ==	 'A’)     a++;    
else	
 if (ch   ==   ' В ')    
b++;    
else    
s++;    
Bu   butunlay   yangi   boshqaruv   tuzilmasiga   o xshaydi	
ʻ   –   if   else   if   else.   Ammo  
bu   aslida   bitta   if   else   operatori   boshqasining   tarkibiga   joylashtirilgan.   Qayta   ko rib	
ʻ  
chiqilgan     format     yanada     aniqroq     ko rinadi	
ʻ     va     hatto     barcha     muqobil     variantlar
ni  
baholashga     imkon     beradi.     Ushbu     qurilish     hali     ham     bitta     operator     sifatida     ko	
ʻ
rib  
chiqilmoqda.  
 
2 .   Tanlash	
 operatori.	 switch   operatori  
Shart     operatorining     yana     bir     ko rinishi	
ʻ     switch     tarmoqlanish     operatori  
bo lib,	
ʻ   uning   sintaksisi   quyidagicha:  
  switch	
 () {  
case   :     ;     break;    
case   :     ;     break;  
…  
case   :     ;     break;    
default	
 :    
}  
  Birinchi     navbatda     switch     kalit     so zini	
ʻ     va     undan     keyin     tekshiriluvchi     ifodani   yozamiz.   Odatda   bu   ifoda   faqat   bitta   o zgaruvchiniʻ   aks   ettiradi,   lekin   u   murakkabro
q  
bo lishi	
ʻ     mumkin,     masalan,     nX     +     2     yoki     nX     –     nY     ko rinishida.	ʻ     Ushbu     ifoda
ning  
yagona   cheklovi   shundaki,   u   bir   turdagi   ma’lumotlar   turi   bo lishi	
ʻ   kerak   (ya’ni,   char
,  
short,   int,   long,   long   long).   Haqiqiy   sonlardan   yoki   bir   turda   bo lmagan	
ʻ   ma’lumot  
turidagi   o zgaruvchilaridan	
ʻ   foydalanish   mumkin   emas.  
Switch     bayonotidan     keyin     blok     e'lon     qilamiz.     Blok     ichida     ifoda     bo yicha	
ʻ  
tekshirmoqchi     bo lgan	
ʻ     barcha     qiymatlarni     aniqlash     uchun     nishonlardan  
foydalanamiz.  
Birinchi   turdagi   nishon   bu   case   kalit   so zi	
ʻ   yordamida   e'lon   qilingan   va   doimiy  
ifodaga	
 ega   bo lgan	ʻ   case	 (yoki	 shunchaki   "keys").    
Case   kalit   so zidan	
ʻ   keyingi   doimiy   ifoda   switch   kalit   so zi	ʻ   yonidagi   ifoda   bilan  
tengligi     tekshiriladi.     Agar     ular     mos     keladigan     bo lsa,	
ʻ     unda     tegishli     holatdagi    
kod  
bajariladi.  
Shunisi   e'tiborga   loyiqki,   barcha   ifodalar   noyob   qiymatlarni   qabul   qilishi   kerak.  
Ya’ni	
 quyidagicha	 kod	 yoz	 olmaymiz:  
switch(a)  
{  
case	
 1:	 cout<<a;   <	 p=""></a;   <>
case	
 	1:	 	cout<
}  
 	
   Nishonning     ikkinchi     turi     default     kalit     so z	ʻ     yordamida     e'lon     qilingan     jimlik  
bo yicha	
ʻ     yorliq     („default     case"     deb     nomlanadi).     Ushbu     nishon     ostidagi     kod  
bajarilgan     bo lsa,	
ʻ     agar     biron-bir     holat     switch     ifodasiga     mos     kelmasa     bundagi  
operatorlar     bajariladi.     Bitta     kalitda     bitta     default   bo lishi	
ʻ     mumkin.   Odatda     bu     k
alit   blokida eng   oxirgisi	 deb	 e'lon	 qilinadi.  
Umuman   olganda,	
 switch   operatorida	 break   va   default   kalit   so zlarini	 ishlatish	ʻ  
majburiy     emas.     Lekin     bu     holatda     operator     mazmuni     buzilishi     mumkin.     Masal
an,  
default     qismi     bo lmagan	
ʻ     holda,     agar         birorta     <=""	 p="">i>     bilan  
ustma-ust     tushmasa,     operator     hech     qanday     amal     bajarmasdan     boshqaruv     switc
h  
operatordan     keyingi     operatorga     o tadi.	
ʻ     Agar     break     bo lmasa,	ʻ         birorta  
>   bilan   ustma-ust   tushgan   holda,   unga   mos   keluvchi   operatorlar  
guruhini     bajaradi     va     «to xtamasdan»	
ʻ     keyingi     qatordagi     operatorlar     guruhini     h
am  
bajarishda   davom   etadi.    
Case     nishonlari     tarkibida     bir     nechta     operatorlar     guruhini     bir     vaqtda     bajarish  
mumkin.    
  #include    
using   namespace   std;  
int	
 main()  
{     int	
 a;  
  a=1;  
switch(a)  
    {  
    case   1:  
    cout <<a<<=""	
 p="">
                cout<<2*a<<endl;   <	
 p=""></endl;   <>
                cout<<3*a<<=""	
 p="">
                break ;  
        case   2:                   cout<<a<<endl;   < p=""></a<<endl;   <>
                cout<<a+2<<=""
 p=""></a+2<
                cout<<a+3<<endl;   <	
 p=""></a+3<<endl;   <>
                break;  
        default	
 : cout<<"Boshqa   son";   }  
        return	
 0;  
}  
</a<
case     tarkibida     o zgaruvchini	
ʻ     e’lon     qilish     va     uni     initsializatsiyalash.     case  
nishoni     tarkibida     o zgaruvchini	
ʻ     e’lon     qilish     mumkin,     lekin     o zgaruvchiga	ʻ  
boshlang ich	
ʻ   qiymat   berish	 (initsializatsiyalash)	 mumkin   emas.    
Bunday   qiymat   berish   taqiqlanadi.  
#include    
using   namespace   std;  
int	
 main()  
{  
        int	
 a;  
    a=1;  
      switch(x)  
      {  
        case   1:  
      int
 z ;	 //Mumkin  
                z=5;	
 //Mumkin  
                break;  
        case   2:  
                z=6;
 //z	 tepada   e'lon	 qilingan  
                break;  
        case   3:  
                int	
 c=4;	 //Mumkin	 emas                   break;  
        default:  
                cout<<"default   case"<<="" p="">
                break;     }  
  return	
 0;  
}  
Misol.   Uchburchakning   uch   xil   holati   berilgan.   1-holat:   uchta   tomon.   2-holat:  
ikkita   tomon   va   ular   orasidagi   burchak.   3-holat:   asos   va   balandlik.   Foydalanuvchi  
kiritgan   holatga	
 qarab   uchburchak   yuzini   topish   dasturini	 tuzing.  
  #include     using   namespace   std;  
int	
 main()  
{  
  float	
 a,   b,	 c,   h,	 alfa;  
float   p;  
float	
 S;  
  int	
 k;  
cout   <<   "Holatni	
 kiriting:   ";  
  cin   >>	
 k;  
switch   (k)  
  {  
  case   1:
 {  
cout   <<   "Uchburchakning   uchta	
 tomonini   kiriting:"   <<	 endl;  
  cout   <<   "==============================="
 <<	 endl;  
cout   <<   "a=";	
 cin   >>   a;  
  cout   <<   "b=";   cin   >>   b;  
cout   <<   "c=";
 cin   >>   c;  
  if   ((a	
 +   b   >	 c)   &&	 (a   +	 c >   b)	 &&   (b   +	 c   >   a))   {  
p   = (a   +	 b + c)	 /   2;  
S	
 =   sqrt(p	 * (p   -   a)   *   (p   -   b)   *   (p   -   c));  
cout   <<   "Uchburchak	
 yuzasi:   S="	 <<	 S;  
}  
  else  
cout   <<   "Bunday   tomonli   uchburchak   mavjud   emas!"	
 <<  
endl;  
  }     break;  
case   2:	
 {   cout   <<   "Uchburchakning   ikki	 tomoni   va	 ular	 orasidagi  
burchakni   kiriting:"	
 <<	 endl;  
  cout   <<   "==============================="	
 <<	 endl;  
cout   <<   "a=";	
 cin   >>   a;  
cout   <<   "b=";   cin   >>   b;  
  cout   <<   "alfa=";	
 cin   >>	 alfa;  
if   ((a	
 >   0)	 &&   (b   >	 0)   &&   (alfa	 !=	 0))  
  {  
  S	
 =   a	 * b   *   sin(alfa	 *   3.14   /   180)   /	 2;  
cout   <<   "Uchburchak	
 yuzasi:   S="	 <<	 S;  
}  
  else  
cout   <<   "Uchburchak   tomonlari   va	
 ular   orasidagi   burchak  
bunday   qiymatga	
 ega   bo'lmaydi";  
  }  
break;  
case   3:	
 {  
cout   <<   "Uchburchakning   asosi   va	
 balandligini   kiriting:"	 <<  
endl;  
  cout   <<   "==============================="	
 <<	 endl;   cout <<   "a=";	 cin   >>   a;  
cout   <<   "h=";   cin   >>   h;  
  if   ((a	
 >   0)	 &&   (h   >	 0))  
  {  
  S	
 =   a	 * h   /	 2;  
cout   <<   "Uchburchak	
 yuzasi:   S="	 <<	 S;  
}  
else  
cout   <<   "Uchburchak   asosi   va   balandligi   bunday  
qiymatga	
 ega	 bo'lmaydi!";  
}  
break;  
default:  
{  
cout   <<   "Siz   boshqa	
 raqam   kiritdingiz.	 1,2,3-raqamlarini  
kiriting";  
  }  
break;   }  
  return   0;  
}  
3.   Shartsiz   o tish	
 operatori	ʻ   va	 uning   ishlash	 prinsipi  
Nishon     -     bu     davomida     ikkita     nuqta     (‘:’)     qo yilgan
ʻ     identifikator.  
Nishon   bilan   qandaydir   operator   belgilanadi   va   keyinchalik,   programmaning  
boshqa     bir     qismidan     unga     shartsiz     o tish	
ʻ     amalga   oshiriladi.   Nishon   bilan  
har     qanday     operator     belgilanishi     mumkin,   shu     jumladan     e’lon     operatori     va  
bo sh	
ʻ     operatori     ham.     Nishon     faqat   funksiyalar   ichida   amal   qiladi.  
Nishonga     shartsiz     o tish	
ʻ     goto     operatori     yordamida     bajariladi.     goto  
operatori     orqali     faqat     uning     o zi	
ʻ     joylashgan     funksiya     ichidagi   operatorlarga  
o tish	
 mumkin.	 goto	ʻ   operatorining   sintaksisi	 quyidagicha:  
goto   ;   Ayrim     hollarda,     goto     operatorining     «sakrab     o tishi»ʻ     hisobiga   xatoliklar  
yuzaga   kelishi   mumkin.   Masalan,  
int   i=0;  
i++;   if(i)goto   m;   int   j;  
m:j+=i;  
operatorlarining   bajarilishi   xatolikka   olib   keladi,   chunki   j   e’lon   qilinmay  
qoladi.  
Shartsiz     o tish	
ʻ     operatori     programmani     tuzishdagi     kuchli     va     shu     bilan  
birgalikda     xavfli     vositalardan     biri     hisoblanadi.     Kuchliligi     shundaki,     uning  
yordamida     algoritmning     «boshi     berk»     joylaridan   chiqib     ketish     mumkin.  
Ikkinchi     tomondan,     bloklarning     ichiga     o tish,	
ʻ     masalan,     takrorlash  
operatorlarini     ichiga     «sakrab»     kirish     kutilmagan     holatlarni     yuzaga     keltirishi  
mumkin.    

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.