5-§. Tarmoqlanuvchi jarayonlarni dasturlash. Shart operatori va tanlash



Download 274,96 Kb.
Pdf ko'rish
bet1/3
Sana03.01.2022
Hajmi274,96 Kb.
#315354
  1   2   3
Bog'liq
Dasturlash asoslari



62 

 

5-§. Tarmoqlanuvchi jarayonlarni dasturlash. Shart operatori va tanlash 



operatori 

 

5.1. Shart operatori 



 

Shart operatori. Oldingi  mavzularda  misol  tariqasida  keltirilgan dasturlarda 

amallar yozilish tartibida ketma-ket va faqat bir marta bajariladigan  holatlar,  ya’ni 

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 

yoki 


bu 

boʻlagiga 

uzatish 

mumkin 


(tarmoqlanuvchi  algoritm).  Tarmoqlanishni  amalga  oshirish  uchun  shartli 

operatordan foydalaniladi. 

Ushbu  mashgʻulotdan  oldingi  darslarda,  dasturlash  asoslarini  oʻrganishga 

kirish qismi sifatida qabul qilishingiz mumkin, chunki oldingi darslarda juda sodda 

dasturlarni  yozdik,  ushbu  dasturlar  qandaydir  tarzda  ishladi,  biror  sodda  vazifani 

bajardi,  lekin  qanday  qilib  rivojlanishni  tanlash  qobiliyatidan  mahrum  edi  ushbu 

dasturlar. Bunday dasturlar chiziqli dasturlar deb ataladi.  

Ularni  tramvaylarga  oʻxshatish  mumkin:  agar  yoʻl  toʻsib  qoʻyilgan  boʻlsa, 

toʻxtab turadi. Siz oʻngga yoki chapga burila olmaysiz. 

Endi, bugungi  mashgʻulotdan boshlab dasturlarimiz  yanada qiziqarli boʻladi. 

Agar dastur kodimizda mantiqiy tanlov operatorlarini qanday ishlatishni bilib olsak 

va  dasturlar  qandaydir  savollarga  ega  boʻlsa,  "oʻylash",  tahlil  qilish  va  qanday 

harakat qilish kerakligini 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ʻsiqni osongina aylanib, qayerga 

borishni hal qilishingiz mumkin.  

Shartli  konstruksiyalar  dastur  oqimini  shartga  qarab  mumkin  boʻlgan 

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 


63 

 

yolgʻon  boʻlsa,  unda  keyingi  bayonotlar  bajarilmaydi.  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  shuning 

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,  dastur 

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 




64 

 

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,  else 

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  kodni 

quyidagicha yozish mumkin: 

 

int x = 60; 



      

if (x > 60) 

    cout << "x 60 dan katta \n"; 

else if (x < 60) 




65 

 

    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  



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 




66 

 

foydalanamiz.  if  yozsak,  unda  qavs  ichida  (  )  (qavs)  lar  ichida  shartni  yozamiz  - 



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  degan 

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  

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; 

 



67 

 

Ushbu  misolda  biz  endi  figurali  qavslardan  foydalanmayotganimizni 



koʻrishingiz mumkin. Yana bir ortiqcha narsa shundaki, agar birinchi shart bajarilsa, 

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 

boʻlsa,  unda  shart  endi  boʻlishi  mumkin  boʻlmagan  oxirgi  else  bloki  bajarilishini 

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: 

 


Download 274,96 Kb.

Do'stlaringiz bilan baham:
  1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish