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



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

if (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  

{  


68 

 

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  dasturning 

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 ikki 

nuqta (:) qoʻying va ikkinchi buyruqni (kodni) yozing. Ushbu ikkinchi buyruq, ikki 

nuqta qoʻyilgandan keyingina, shart yolgʻon boʻlsa bajariladi. 

 



69 

 

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; 

 



70 

 

  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  ajratadi. 

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  



71 

 

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  variantlarni 

baholashga  imkon  beradi.  Ushbu  qurilish  hali  ham  bitta  operator  sifatida  koʻrib 

chiqilmoqda. 

 

5.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 murakkabroq 

boʻlishi  mumkin,  masalan,  nX  +  2  yoki  nX  –  nY  koʻrinishida.  Ushbu  ifodaning 

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<

case 1: cout<



72 

 



 

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  kalit 

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.  Masalan, 

default  qismi  boʻlmagan  holda,  agar    birorta  

i

>  bilan 



ustma-ust  tushmasa,  operator  hech  qanday  amal  bajarmasdan  boshqaruv  switch 

operatordan  keyingi  operatorga  oʻtadi.  Agar  break  boʻlmasa,    birorta 



i

> bilan ustma-ust tushgan holda, unga mos keluvchi operatorlar 



guruhini  bajaradi  va  «toʻxtamasdan»  keyingi  qatordagi  operatorlar  guruhini  ham 

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<

        cout<<2*a<

        cout<<3*a<

        break

    case 2: 

        cout<

        cout<

        cout<

        break; 

    default : cout<<"Boshqa son"; 

 

    } 


    return 0; 




73 

 

 



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"<

        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; 




74 

 

 



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; 


75 

 

 



 

 

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; 

5.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 



76 

 

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.  Shu  sababli,  imkon  qadar goto  operatoridan  foydalanmaslik  kerak, 

ishlatilgan  taqdirda  ham quyidagi  qoidaga  amal  qilish  zarur:  «blok  ichiga, 




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