Файл: Ozbekiston respublikasi oliy va orta maxsus talim vazirligi navoiy davlat pedagogika instituti.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 08.11.2023

Просмотров: 325

Скачиваний: 8

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

So‘z boshi

I BOB. C++ DASTURLASH TILIGA KIRISH Ushbu bobda C ++ tilining asosiy elementlari, ya’ni, alifbosi, o‘zgaruvchilar, o‘zgarmaslar, ma’lumotlar turlari, asosiy amallar, standart funksiyalar, dastur tuzilishi va ma’lumotlarni kiritish hamda chiqarishga oid ma’lumotlar berilgan. 1.1-§. C++ tilining leksik asoslari C++ dasturlash tili 1980-yilning boshida Bjarne Stroustrup tomonidan C dasturlash tiliga asoslangan holda yaratilgan bo`lib, uning kutubxonasida turli funksiyalar mavjud. Ushbu tilni o`rganish ikki qismga bo‘linadi. Birinchi qismda C++ dasturlash tilini o‘rganish, ikkinchisi esa C++ dasturlash tilining standart kutubxonasidagi tayyor obyekt va funksiyalarni qo‘llashni o‘rganishga asoslangan.Dastlab, mazkur mavzuda C++ dasturlash tili imkoniyatlarini Dev-C++ muhitidan foydalanib, misol va masalalarni dasturlashni ko‘rib chiqamiz. Dev-C++ – bu C / C ++ dasturlash tillari asosida dasturiy mahsulotlarni ishlab chiqish muhiti hisoblanadi. Dev-C ++ dasturi Bloodshed Software firmasi xodimi Colin Laplace tomonidan yaratilgan va shundan so‘ng, Windows operatsion tizimiga moslashtirilgan versiyalari ishlab chiqarila boshlagan.Hozirda Embarcadero firmasi tomonidan, Embarcadero Dev-C ++ shaklida ishlab chiqarish davom etmoqda. Embarcadero Dev-C ++ – bu Bloodshed Dev-C ++ dasturlash tilining yangi va takomillashtirilgan versiyalaridan biri hisoblanadi.Bugungi kunda, ushbu tilning ko`plab versiyalari ishlab chiqilgan bo`lib, mazkur mavzuda Dev C++ muhitining 5.11-versiyasi va unda misol va masalalarni dasturlashni ko`rib chiqamiz. Ushbu dasturni ishga tushirish quyidagi ketma-ketlikda amalga oshiriladi: Пуск – Все программы – Bloodshed Dev-C++ – Dev-C++ . So‘ngra, File – New – Source File (Ctrl+N) ketma-ketligi tanlanadi. Shu bilan birga, Windowsning ishchi maydonidagi yorliq orqali ham uni ishga tushirish mumkin. Yuqrida qayd etilgan ketma-ketlik asosida Dev C++ muhitining 5.11- versiyasi ishga tushirilgandan so‘ng, dastur oynasi quyidagicha namoyon bo‘ladi: 1-rasm.Ushbu oynaning Untitled1 maydoniga dastur kodi kiritiladi va F9- tugmasidan foydalanib, dastur kodi kompilyatsiya qilinadi. F11- tugmasi yordamida esa bir vaqtda kompilyatsiya qilinadi va ishga tushirib, natija olinadi. Agar dastur kodida xatolik aniqlansa, xatolik topilgan qator ajratilib ko‘rsatiladi.C++ dasturlash tili alifbosi va xizmatchi so‘zlariTanlab olingan algoritm asosida qo‘yilgan masalani kompyuterda yechish uchun har qanday algoritmik tilning o‘z alifbosi, buyruqlar majmuasi va maxsus dasturlar jamlangan kutubxonasi bo‘lishi zarur. Bu imkoniyatlar C++ dasturlash tilida ham mavjud bo`lib, uning alifbosi quyidagica bo`ladi. 1-jadvalC++ dasturlash tili alifbosi t/r Nomi Ishlatiladigan belgilar 1 Katta va kichik lotin alfaviti xarflari (A,B,..,Z, a,b,…,z) 2 Raqamlar 0,1,2,3,4,5,6,7,8,9 3 Maxsus belgilar “ , {} | [] () + - / % \ ; ‘ . : ? < = > _ ! & * # ^ Keltirilgan jadvaldan tashqari satrlarni o‘zaro ajratish uchun ishlatiladigan belgilar (misol uchun bo‘shliq, tabulyatsiya, yangi qatorga o‘tish belgilari) ham mavjud.Izohlar satrini tavsiflashC++ dasturlash tilida ikki turdagi izohlardan foydalaniladi: 1. Bir satrli. Masalan: // Beriladigan izoh (satr boshida ikkita drop belgisini qo‘yish orqali bir satrli izoh yoziladi);2. Ko‘p satrli. Masalan: /* Beriladigan izoh */ (izoh boshiga /* belgilari, izoh oxirida esa */ belgilari yoziladi).C++ tilida operatorlarC++ dasturlash tilida tuziladigan dastur kodi, kutubxona fayllariga murojaat va bir nechta funksiyalardan iborat bo‘lishi mumkin. Bunda, main nomli asosiy funksiya bo‘lishi zarur. Agar dasturda faqat asosiy funksiyadan foydalanilsa, dastur kodi quyidagicha yoziladi:#includeusing namespace std;int main(){ // dastur tanasi;} 2-rasm.Bunda:1. #include – xizmatchi so‘zi, kutubxona fayliga murojaat qiladi. Foydalanuvchi tomonidan qiymat kiritiladigan yoki ekranga qandaydir ma’lumot chiqariladigan dasturda iostream kutubxona fayli yoziladi. Masalan, kiritish va chiqarish operatoridan foydalanish uchun iostream kutubxona faylidan foydalaniladi;2. using namespace std – standart nomlarni e’lon qilish;3. int main() – asosiy funksiya hisoblanib, misol va masalalarning dastur kodi, ushbu bo‘limga, ya’ni { va } belgilari oralig‘iga kiritiladi;4. { va } – dastur kodi bloki hisoblanadi. Bunga dasturchi tomonidan kiritiladigan buyruqlar bitta operator sifatida qaraladi.Standart funksiyalar va ularning yozilishiC++ dasturlash tilida funksiyalar kutubxona fayllarida mavjud bo‘lib, undan foydalanish uchun #include xizmatchi so‘zi yordamida tegishli kutubxonaga murojaat qilinadi. Masalan, matematik funksiyalar joylashgan kutubxonaga murojaat qilish uchun math.h buyrug‘i yoziladi:#include#includeusing namespace std;int main(){ // dastur tanasi;}Ushbu math.h kutubxonasida quyidagi matematik funksiyalar mavjud:2-jadvalmath.h kutubxonasidagi ba’zi bir funksiyalarning berilishi va vazifalari t/r Berilishi Vazifasi 1 abs(x) Butun qiymatli x ning moduli 2 fabs(x) Haqiqiy qiymatli x ning moduli 3 sin(x) x ning sinusi 4 cos(x) x ning kosinusi 5 tan(x) x ning tangensi 6 atan(x) x ning arktangensi 7 acos(x) x ning arkkosinusi 8 asin(x) x ning arksinusi 9 exp(x) eksponenta, ex 10 log(x) natural logorifm (x>0) 11 log10(x) o‘nli logorifm (x>0) 12 sqrt(x) kvadrat ildiz (x>0) 13 pow(x,a) x ning a-chi darajasi 14 ciel(x) x ni katta butun songacha yaxlitlash 15 floor(x) x ni kichik butun songacha yaxlitlash Ushbu 2-jadvalda keltirilgan funksiyalardan foydalanib, ba’zi bir matematik amallar yozilishini 3-jadvalda ko‘rib chiqamiz.3-jadvalBa’zi bir matematik formulalarning C++ dasturlash tilida yozilishi Matematik formulalar C++ dasturlash tilida yozilishi 1. 1. pow((a+b)*(a+b), 1./5)2. pow(pow(a+b,2), 1./5)3. pow((a+b)*(a+b), (float)1/5)4. pow(pow(a+b,2), (float)1/5) 2. pow(sin(x), n) 3. exp(3*n) 4. exp(6*cos(2*x/a)) 5. pow(cos(sqrt(x+a)),2) 6. 1. log(abs(x-5))2. log(fabs(x-5)) 7. log(2*b)/log(a) 8. log10(b*b+1)/log10(a) 9. 3,4/pow(2,x) 10. pow(tan(pow(x,5)), 1/k) -pow(cos(2*x),2/3) 11. log(2*x)/log(b)-log(x) 12. pow(x,-3)-pow(2,5-x) 13. (2*x-(x-pow(x,6))*pow((x-pow(x,3)),x) /(sin(x)-abs(x-1) Konsol orqali muloqot qilishDev-C++ dasturlash muhitida konsolli rejim yordamida misol va masalalarning natijalarini qulay tartibda olish imkoniyati mavjud. Konsolli rejimda yangi dasturlash oynasini hosil qilish uchun File – New – Source File (Ctrl+N) ketma-ketligi tanlanadi. Hosil qilingan oynada tegishli dastur kodi yozilgandan so‘ng, uni kompyuter xotirasiga saqlash mumkin. Buning ikki xil usuli mavjud: 1. File – Save (Ctrl+S) ketma-ketligi yordamida lozim bo‘lgan disk yoki katalog tanlanadi;2. F9- yoki F11- tugmalari bosilganda hosil qilingan faylni saqlash so‘raladi. Shundan so‘ng, kompilyatsiya amali bajariladi. Natijada *.cpp fayl kengaytma bilan kompyuter xotirasiga saqlanadi. Agar kiritilgan dastur kodi, kompilyatsiyadan muvaffaqiyatli o‘tsa (dastur kodida xatolik bo‘lmasa) *.exe fayl kengaytma bilan tanlangan disk yoki katalogda, joriy fayl sifatida saqlanadi.Chiqarish operatoriDev-C++ dasturlash muhitida ma’lumotlarni ekranga chiqarish uchun iostream kutubxona faylida joylashgan cout<< operatoridan foydalaniladi. Bu yerda “cout” – chiqarish operatori, “<<” – esa chiqarish oqimi hisoblanadi. Misol uchun “2021-yil Yoshlarni qo‘llab-quvvatlash va aholi salomatligini mustahkamlash yili” jumlasini ekranga chiqarish uchun quyidagi dastur kodi yoziladi:#includeusing namespace std;int main(){cout<<"2021-yil Yoshlarni qo‘llab-quvvatlash va aholi salomatligini mustahkamlash yili";} 3-rasm.Ushbu dastur kodi kiritilgandan so‘ng, F11- tugmasi yordamida kompilyatsiya qilinadi. Natijada, quyidagi oyna hosil bo‘ladi: 4-rasm.Yuqorida keltirilgan tartibda bir nechta jumlalarni ham chiqarish mumkin. Buning uchun chiqariladigan ma’lumotlar oralig‘iga << – chiqarish oqimi yoziladi:#includeusing namespace std;int main(){cout<<"Mening birinchi dasturim"<<" Dasturlashni o‘rganaman "<<"Yosh dasturchi";} 5-rasm.Ushbu jumlalarni ustun shaklda chiqarish uchun ma’lumotlar oralig‘iga endl operatori kiritiladi. Ya’ni, quyidagi dastur kodi yoziladi: cout<<"Mening birinchi dasturim"< 6-rasm.Yuqorida keltirilgan tartibda faqat jumlalarni emas, balki hisoblash natijalarini ham chiqarish mumkin.Kiritish operatoriDev-C++ dasturlash muhitida ma’lumotlarni muloqot usulida kiritish uchun iostream kutubxona faylida joylashgan cin>> operatoridan foydalaniladi. Bu yerda “cin” – kiritish operatori, “>>” – esa kiritish oqimi hisoblanadi. Ushbuga oid misollarni keyingi mavzularda ko‘rib chiqamiz.Mustaqil bajarish uchun topshiriqlar1. Dev-C++ dasturlash muhitini kompyuterga o‘rnating.2. Dev-C++ dasturlash muhitini turli usullar bilan ishga tushiring.3. Dev-C++ dasturlash muhitida yangi dasturlash oynasini hosil qiling va uni kompyuter xotirasiga saqlang.4. Quyidagi misollarni hisoblash dasturini tuzing:1) .2) .3) .4) .5) .6) .7) .8) .9) .10) .5. Quyidagi jumlalarni ustun va satr shaklda chiqaruvchi dastur tuzing: “1-sentyabr O‘zbekiston Respublikasining mustaqillik kuni”, “9-may Xotira va qadrlash kuni” , “8-dekabr O‘zbekiston Respublikasining Konstitutsiyasi qabul qilingan kun”.1   2   3   4   5   6   7   8   9   10   11

1.2-§. O‘zgaruvchi va o‘zgarmas tipli kattaliklar

1.3-§. Dasturlash operatorlari

II BOB. BOSHQARUV OPERATORLARI

2.1-§. C++ dasturlash tilida shartli operatorlar

2.2-§. C++ dasturlash tilida takrorlanuvchi jarayonlar

2.3-§. C++ dasturlash tilida funksiyalar

2.4-§. C++ dasturlash tilida massivlar

2.5-§. C++ dasturlash tilida ko‘rsatkichlar

2.6-§. C++ dasturlash tilida satrlar va ular ustida amallar C++ dasturlash tilida ikki xil belgilar majmuasini mujassamlashtirgan. Birinchi toifaga, an’anaviy, ya’ni, tor belgilar deb nomlanuvchi 8 bitli, ikkinchisiga esa 16 bitli belgilar kiradi. Til kutubxonasida har bir guruh belgilari uchun maxsus funksiyalar to‘plami mavjud. Satrni char turidagi belgilar massivi sifatida qarash mumkin va bu belgilar ketma-ketligi nol kodli belgi bilan tugaydi (‘\0’). Odatda, nol bilan tugaydigan satrlarni ASCIIZ – satrlar deyiladi. Shuningdek, C++ dasturlash tilida satrlar bilan ishlashni qulaylashtirish uchun string sinfi kiritilgan. String sinfida satr oxirida ‘\0’ belgi qo‘yish talab etilmaydi.Satrli o‘zgarmas deb – qo‘shtirnoqlar ichiga olingan belgilar ketma-ketligiga aytiladi. Qo‘shtirnoqlar ichidagi belgilar ketma-ketligiga satr deyiladi.Quyida C++ dasturlash tilida belgi sifatida ishlatilishi mumkin bo‘lgan o‘zgarmaslar to‘plami keltirilgan: katta harflar – ‘A’ …’Z’, ‘A’…’Я’; kichik harflar – ‘a’ …’z’, ‘a’…’я’; raqamlar – ‘0’ …’9’; gorizontal bo‘sh joy qoldirish (ASCII kodi 9), satrni o‘tkazish (ASCII kodi 10), vertikal bo‘sh joy qoldirish (ASCII kodi 11), formani o‘tkazish (ASCII kodi 12), navbatdagi satrga o‘tkazish (ASCII kodi 13); punktuatsiya belgilari (ajratuvchilar) ! ” # $ & ‘ ( ) * + - , . / : ; < = > ? @ [ \ ] ^ _ { | }

2.7-§. C++ dasturlash tilida strukturalar va birlashmalar



Agar o‘sish (kamayish) amali o‘zgaruvchidan keyin yozilsa, u holda birinchi navbatda o‘zlashtirish amali bajariladi, so‘ngra o‘zgaruvchi qiymati oshiriladi (kamayadi):

x = 12; y = x ++; // y 12 ga va x esa 13 ga teng bo‘ladi;

x = 12; y = x --; // y 12 ga va x esa 11 ga teng bo‘ladi.

Butun sonli arifmetikaning amallari

Butun sonli bo‘linish amali butun o‘zgaruvchilarga tatbiq etilsa, bo‘linmaning butun qismini qabul qiladi (kasr qismi tashlab yuboriladi), aks holda odatiy bo‘linish amalga oshiriladi. Masalan: 11/4 = 2 yoki 11.0 / 4 = 2.75.

Bo‘linmaning qoldig‘ini topish (%) amali faqat butun sonli o‘zgaruvchilarga taalluqlidir. Masalan: 11% 4 = 3.

Bit arifmetikasiga quyidagi amallar kiradi: &, |, ˆ, ˜, <<, >>. Bit arifmetikasi butun sonlarning ikkilik tasvirida amallar bajariladi.

Arifmetik VA (&) amalida ikkala operand (ifodadagi o`zgaruvchi yoki o`zgarmas) ikkilik tizimga o‘tkaziladi, so‘ngra quyidagi qoidalarga muvofiq operandlarning mantiqiy bitli ko‘paytmasi topiladi:

1 & 1 = 1, 1 & 0 = 0, 0 & 1 = 0, 0 & 0 = 0.

Masalan, A = 13 va B = 25 bo‘lsa, ularning ikkilik ko‘rinishi quyidagicha:

A = 0000000000001101 va B = 0000000000011001 bo‘ladi.

A va B o‘zgaruvchilarning mantiqiy ko‘paytmasi natijasi o‘nli tizimda 9 ga ikkilik tizimda esa 0000000000001001 ga teng bo‘ladi (8-rasm). Ya’ni, A & B = 14 & 24 = 8.



8-rasm. Bitli ko‘paytirish amali.

Arifmetik yoki (|) amalida ham har ikkala operand ikkilik tizimga o‘tkaziladi, bundan so‘ng quyidagi qoidalarga binoan operandlar ustida mantiqiy bitli qo‘shish amali bajariladi: 1 | 1 = 1, 1 | 0 = 1, 0 | 1 = 1, 0 | 0 = 0.

Masalan, A = 13 va B = 25 sonlarini mantiqiy qo‘shish natijasi A | B = 29 ga teng bo‘ladi (9-rasm).



9-rasm. Bitli qo‘shish amali.

Arifmetik yoki amalining inkori (ˆ).

Bunda ikkala operand ham ikkilik tizimga aylantiriladi, shundan so‘ng ular ustida quyidagi qoidalar bo‘yicha mantiqiy bitli amal bajariladi: 1 I 1 = 0, 1 I 0 = 1, 0 I 1 = 1, 0 I 0 = 0.

Masalan, A = 13 va B = 25 sonlari ustida yoki amalining inkori bajarilsa A ˆ B = 20 ga teng bo‘ladi (10-rasm).



10-rasm. Yoki amalining inkori.

Arifmetik inkor (˜) amali bitta operandga nisbatan bajariladi. Amal natijasida sonning ikkilik tasviri teskarisiga almashtiriladi (rots bo`lsa, yolg`on yoki aksincha) (11-rasm). Ya’ni, ˜ 1 = 0, ˜ 0 = 1.



11-rasm. Inkor amali.

Chapga siljitish (A << B) amali.

Chapga siljish amali ikkilik tizimda ifodalanganda, A raqami chap tomonga B holatiga o‘tkaziladi. Masalan, 10 << 3. amalni ko‘rib chiqamiz. Ikkilik tizimdagi 10 soni 1010 shaklga ega. Uni 3 pozitsiyaga chapga siljitganda, biz 1010000 ni olamiz. O‘nli tizimda bu ikkilik raqam 80 ga teng. Demak, 10 << 3 = 80 (12-rasm). E’tibor bering, bitni chapga siljitish ikkiga, ikkita siljitish to‘rtga, uchta siljitish sakkizga ko‘paytirishga to‘g‘ri keladi. Shunday qilib, A << B amali A sonini 2B ga ko‘paytirishga tengdir.



12-rasm. Chapga siljish amali.

O‘ngga siljitish (A >> B) amali.

O‘ngga siljitish amali ikkilik tizimda ifodalanganda A raqami B pozitsiyaga -o‘ng tomonga siljiydi, bu A sonini 2B
ga bo‘linishiga tengdir. Masalan, 20 >> 2 = 5 (13-rasm) .



13-rasm. O‘ngga siljish amali.
Mantiqiy amallar

C ++ dasturlash tilida || (yoki), && (va) ,! (emas) mantiqiy amallar mavjud. Mantiqiy amallar true (rost) va false (yolg‘on) qiymatlar ustida bajariladi. C++ dasturlash tilida false – 0, true – 1 qiymatga teng.

8-jadval.

Mantiqiy amallar

A

B

! A

A && B

A || B

0

0

1

0

0

0

1

1

0

1

1

0

0

0

1

1

1

0

1

1


Munosabat amallari

C++ dasturlash tilida munosabat amallari bajarilishi natijasida mantiqiy qiymat hosil bo‘ladi. Bular quyidagilar: >, >=, <, <=, ==, !=. Ushbu amallarning natijasi true yoki false qiymatga teng bo‘ladi.

Mustaqil bajarish uchun topshiriqlar

1. L uzunlik santimetrda berilgan. Undagi to‘liq metr va qolgan santimetrni toping.

2. Ikki xonali natural son berilgan. Uning o‘nlar va birlar xonasidagi raqamlarini ekranga chiqaring.

3. Uch xonali natural son berilgan. Uning raqamlari yig‘indisini toping.

4. To‘g‘ri burchakli uchburchakning a va b katetlari berilgan. c gipotenuza va P peremetrni toping.

5. Tekislikda A va B nuqtalar koordinatalari bilan berilgan: A(x1,y1), B(x2,y2). Bundan AB kesma uzunligini toping.

6. Rombning diagonali d berilgan. Uning yuzasi S va perimetri P topilsin.

7. Uch xonali son berilgan. Uni teskari tomondan o‘qigandagi son chop etilsin.

8. 999 dan katta bo‘lgan butun son berilgan. 1 marta butunga bo‘lish va 1 marta qoldiqni topish amalidan foydalanib, shu sonning 100 lik xonasidagi raqam aniqlansin.

9. Uch xonali son berilgan. Uning o‘nlik va birlik xonalaridagi raqamlarini almashtirish natijasida hosil bo‘lgan son chop etilsin.

10. Sutkaning n-sekundi bo‘lsa, sutka boshidan buyon o‘tgan sekundlarni soatga aylantirib, oxirgi soatdan keyingi minut aniqlansin.

II BOB. BOSHQARUV OPERATORLARI


Ushbu bobda C ++ dasturlash tilining asosiy operatorlari tasvirlangan: if shartl operatori; switch tanlash operatori; for, while, do ... while takrorlanish operatori. Shuningdek, blok-sxemalar yordamida algoritmlarni tuzish haqida ma’lumotlar berilgan hamda turli xil murakkablik darajasidagi masalalarni dasturlashga oid misollar keltirilgan.

2.1-§. C++ dasturlash tilida shartli operatorlar


Ko‘pgina misol va masalalarni dasturlashda hisob-kitoblar tartibi ma’lum shartlarga, masalan, dastlabki ma’lumotlarga yoki dasturning oldingi bosqichlarida olingan oraliq natijalarga bog‘liq bo‘ladi. Bunda hisob-kitoblarni tartibga solish uchun, shartga qarab, C ++ dasturlash tilining if shart operatoridan foydalaniladi. Ushbu operatorning umumiy ko‘rinishi quyidagicha yoziladi:

if (shart) 1_operator; else 2_operator;

Bu yerda shart mantiqiy (yoki butun sonli) ifoda, o‘zgaruvchi yoki o‘zgarmas bo‘lib, 1_operator va 2_operator esa C ++ dasturlash tilining ixtiyoriy operatori bo‘lishi mumkin.

if operatori quyidagi tartibda ishlaydi. Birinchi, qavs ichidagi shart tekshiriladi. Agar u nolga teng bo‘lmasa, yoki rost (true) qiymat qabul qilsa, 1_operator bajariladi. Aksincha, agar shart nolga teng bo‘lsa, yoki yolg‘on (false) qiymat qabul qilsa 2_operator bajariladi. if shart operatori qo‘llanilgan algoritm tasviri 14-rasmga tasvirlangan.

Masalan, x va y o‘zgaruvchilarning qiymatlarini taqqoslash uchun quyidagi dastur kodi yoziladi:

cin>>x; cin>>y;

if (a==b) cout<<" x o‘zgaruvchi y ga teng " ;

else cout<<" x o‘zgaruvchi y ga teng emas " ;

Eslatma: == tenglik belgisi va = o‘zlashtirish operatorini aralashtirmang. Masalan, if (z = 0) k = 1; yozuvda sintaksis xatosi yo‘q. Bunda z = 0 o‘zlashtirish amali natijasi hosil qilanadi va uning qiymati esa shart sifatida tekshiriladi. Ushbu dastur kodida k = 1 operator hech qachon bajarilmaydi, chunki z o‘zgaruvchining qiymati har doim nolga teng, ya’ni yolg‘on (false) bo‘ladi. Bunda to‘g‘ri yozuv esa quyidagicha yoziladi: if (z == 0) k = 1;



14-rasm. if shart operatori blok sxemasi.

Agar berilgan masalada shartning qiymatiga qarab bir nechta operator bajarilishi kerak bo‘lsa, operatorlar figurali qavslar { } ichiga yozilishi lozim. Bunday holda, kompilyator operatorlar guruhini bitta ifoda sifatida ko‘rib chiqadi. Masalan:

if (shart)

{ 1_operator; 2_operator; ... }

else

{ 3_operator; 4_operator; ... }

Shart operatorida else bo‘limidan foydalanish talab etilmasa, ya’ni shart yolg‘on bo‘lganda hech qanday operator bajarilmasa, u holda else bo‘limini tushirib qoldirish mumkin. Masalan:

if (shart) operator;

yoki

if (shart)

{ 1_operator; 2_operator; ... }

Ushbu “qisqartirilgan” shakldagi shartli operatorning ishlash algoritmi quyidagicha: operator (operatorlar guruhi) shartli ifoda qiymatiga qarab bajariladi yoki o‘tkazib yuboriladi. Ushbu shartli jarayonni bajarish algoritmi 15-rasmda tasvirlangan.



15-rasm. Qisqa shart operatori blok sxemasi.

else bo‘limi ishtirokisiz shart operatoridan foydalanishning dastur kodi quyidagicha:

cin>>a ; cin>>b;

c=0;

// c o‘zgaruvchining qiymati faqat a va b teng bo‘lmaganda o‘zgaradi.

if (a!=b) c=a+b;

cout<<"c="<

Shart operatorlari o‘zaro ichma-ich holda qo‘llanilishi ham mumkin. Ichma-ich joylashgan shart operatorlarining ishlash algoritmi quyidagicha (bunda else bo‘limi har doim eng yaqin if ga tegishli bo‘ladi):

if (1_shart) if (2_shart) 1_operator; else 2_ operator;

Bu yerda 2_operator har doim 2_shart ga aloqador bo‘ladi. Quyidagi dastur kodida esa 1_shart ga aloqador bo‘ladi:

if (1_shart) { if (2_shart) 1_operator; }

else 2_ operator;

Yuqorida bayon etilgan fikrlarni tekshirish uchun C++ dasturlash tilining shartli operatorlardan foydalangan holda bir nechta misollarni ko‘rib chiqamiz.

1-misol. Butun son berilgan. Uning juft son ekanligini tekshirish dasturi.

Berilgan masalaning dastur kodi quyidagicha:

#include

using namespace std;

int main(){

int a;

cout<<”a= ”; cin>>a;

if (a%2==0) cout<<"juft";

else cout<<"juft emas";

return 0;

}

2-misol. x ning berilgan qiymatlarida, funksiya qiymatini hisoblash dasturi.

Berilgan masalaning dastur kodi quyidagicha:

#include

using namespace std;

int main()

{

float x, y;

cout <<"x="; cin >> x;

if (x>0) y=-1;

else y=x*x;

cout<<"y="<

return 0;

}

3-misol. Butun son berilgan. Agar u manfiy bo‘lsa 2 ayirilsin, 0 ga teng bo‘lsa 10 bilan almashtirilsin. Olingan son chiqarilsin.

Berilgan masalaning dastur kodi quyidagicha:

#include

using namespace std;

int main(){

int a; cin>>a;

if (a<0) a-=2;

else if (a==0) a=10;

cout<

return 0;

}

4-misol. Uchta son berilgan. Ular ichida manfiy sonlarning kubini hisoblovchi dastur.

Berilgan masalaning dastur kodi quyidagicha:

#include

using namespace std;

int main()

{

float a,b,c;

cout <<"a="; cin >> a;

cout <<"b="; cin >> b;

cout <<"c="; cin >> c;

if (a<0) cout<<"a="<


if (b<0) cout<<"b="<

if (c<0) cout<<"c="<

return 0;

}

5-misol. Uchta butun son berilgan. Ular orasidan musbatlari sonini topuvchi dastur.

Berilgan masalaning dastur kodi quyidagicha:

#include

using namespace std;

int main()

{

int a, b, c, k=0;

cout <<"a="; cin >> a;

cout <<"b="; cin >> b;

cout <<"c="; cin >> c;

if (a>0) k++;

if (b>0) k++;

if (c>0) k++;

cout<<"Musbatlari soni: "<

return 0;

}

6-misol. Uchta son berilgan. Ular orasidan eng kichigini topuvchi dastur.

Berilgan masalaning dastur kodi quyidagicha:

#include

using namespace std;

int main()

{

float a, b, c, min;

cout <<"a="; cin >> a;

cout <<"b="; cin >> b;

cout <<"c="; cin >> c;

if (a

if (c

cout<<"Eng kichigi: "<

return 0;

}

7-misol. Uchta son berilgan. Ularning ikkita kattasi yig‘indisini topuvchi dastur.

Berilgan masalaning dastur kodi quyidagicha:

#include

using namespace std;

int main()

{

float a, b, c, min;

cout <<"a="; cin >> a;

cout <<"b="; cin >> b;

cout <<"c="; cin >> c;

if (a

if (c

cout<<"Natija: "<


return 0;

}

Tanlash operatorlari

switch tanlash operatori o‘zgaruvchining qiymatiga qarab u yoki bu operator bajarilishi zarur bo‘lgan hollarda foydalaniladi. Operatorning umumiy ko‘rinishi quyida keltirilgan:

switch (ifoda)

{

case 1-qiymat: 1-operator; break;

case 2-qiymat: 2-operator; break;

case 3-qiymat: 3-operator; break;

. . .

case n-qiymat: n-operator; break;

default : operatorlar; break;

}

Operatorning ishlash algoritmi quyidagicha: 1. Dastlab ifodaning qiymati aniqlanadi (u butun son bo‘lishi kerak). 2. Agar ifoda 1-qiymat ga teng bo‘lsa, u holda 1-operator bajariladi. 3. Agar ifoda 2-qiymat ga teng bo‘lsa, u holda 2-operator bajariladi va hokazo. 4. Agar ifoda biron bir qiymatga mos kelmasa, u holda default xizmatchi so‘zdan keyingi operatorlar bajariladi.

Tanlash operatorida default bo‘limini tushirib qoldirish ham mumkin. Unda operatorning umumiy ko‘rinishi quyidagicha:

switch (ifoda)

{

case 1-qiymat: 1-operator; break;

case 2-qiymat: 2-operator; break;

case 3-qiymat: 3-operator; break;

. . .

case n-qiymat: n-operator; break;

}

Switch operatoridan chiqish uchun break operatoridan foydalanish talab etiladi. Agar break operatori qo‘llanilmasa, u holda aniqlangan qiymat ifoda qiymatiga mos kelmasligiga qaramay, ro‘yxatdagi barcha operatorlar bajariladi.

Yuqorida bayon etilgan fikrlarni tekshirish uchun C++ dasturlash tilida shartli operatorlardan foydalangan holda bir nechta misollarni ko‘rib chiqamiz.

1-misol. Berilgan k soniga mos keladigan hafta kunining nomini chop etuvchi dastur. (Bunda va birinchi kun dushanba)

Berilgan masalaning dastur kodi quyidagicha:

#include

using namespace std;

int main(){

unsigned int k, z;

cout<<"k= "; cin>>k;

if (k<=31) {

z=k % 7;

switch (z) {

case 1: cout<<"Dushanba"; break;

case 2: cout<<"Seshanba"; break;

case 3: cout<<"Chorshanba"; break;

case 4: cout<<"Payshanba"; break;

case 5: cout<<"Juma"; break;

case 6: cout<<"Shanba"; break;

case 7: cout<<"Yakshanba"; break;

}

}

else cout<<"Bunday kun yo‘q";

return 0;

}

2-misol. Bahoni anglatadigan k soni berilgan. Agar k=1 bo‘lsa “yomon”, k=2 bo‘lsa “qoniqarsiz”, k=3 bo‘lsa “qoniqarli”, k=4 bo‘lsa “yaxshi”, k=5 bo‘lsa “a’lo” so‘zlaridan birini, agar k bu oraliqda bo‘lmasa “xato” so‘zini chop etish dasturi.

Berilgan masalaning dastur kodi quyidagicha:

#include

using namespace std;

int main(){

unsigned int k;

cout<<"k= "; cin>>k;

switch (k) {

case 1: cout<<"Yomon"; break;

case 2: cout<<"Qoniqarsiz"; break;

case 3: cout<<"Qoniqarli"; break;

case 4: cout<<"Yaxshi"; break;

case 5: cout<<"A’lo"; break;

default: cout<<"Xato";

}

return 0;

}

3-misol. 1-12 oraliqdagi sonlarga mos keluvchi oy raqami berilgan. Shu oyga mos keladigan yil faslini chop etish dasturi.

Berilgan masalaning dastur kodi quyidagicha:

#include

using namespace std;

int main(){

unsigned int oy;

cout<<"Oy raqami: "; cin>>oy;

switch (oy) {

case 1: case 2: case 12: cout<<"Qish fasli"; break;

case 3: case 4: case 5: cout<<"Bahor fasli"; break;

case 6: case 7: case 8: cout<<"Yoz fasli"; break;

case 9: case 10: case 11: cout<<"Kuz fasli"; break;

default: cout<<"Xato";

}

return 0;

}

4-misol. Arifmetik amallar quyidagi ko‘rinishda raqamlangan: 1 “qo‘shish”; 2 “ayirish”; 3 “ko‘paytirish”; 4 “bo‘lish”. n butun soni 1-4 oralig‘ida berilgan bo‘lib, a va b (b≠0) haqiqiy sonlari berilganda n ga mos keluvchi amalni bajarish va natijani chop etish dasturi.

Berilgan masalaning dastur kodi quyidagicha:

#include

using namespace std;

int main(){

unsigned int n; float a, b;

cout<<"a= "; cin>>a;

cout<<"b= "; cin>>b;

cout<<"n= "; cin>>n;

switch (n) {

case 1: cout<

case 2: cout<

case 3: cout<

case 4: cout<

default: cout<<"Xato";

}

return 0;

}

5-misol. Birliklar quyidagi ko‘rinishda raqamlangan: 1-km; 2-m; 3-dm; 4-sm; 5-mm. Kesma uzunligi (haqiqiy son ko‘rinishida) berilib, uning birligi tanlanganda metrdagi ifodasini topish dasturi.

Berilgan masalaning dastur kodi quyidagicha:

#include

using namespace std;

int main(){

unsigned int n; float a, m;

cout<<"a= "; cin>>a;

cout<<"n= "; cin>>n;

switch (n) {

case 1: cout<

case 2: cout<

case 3: cout<

case 4: cout<

case 5: cout<

default: cout<<"Xato";

}

return 0;

}

6-misol. Robot to‘rtta yo‘nalish bo‘yicha harakatlanishi mumkin (“1” Shimol, “2” G‘arb, “3” Janub, “4” Sharq) va uch xil buyruqni qabul qila oladi, ya’ni 0 harakatni davom ettirish, 1 chapga burilish, -1 o‘ngga burilish, c-robotning berilgan yo‘nalishi bo‘lib, n-unga uzatilgan buyruq bo‘lsa, berilgan buyruqdan keyingi robotning holatini chop etish dasturi.

Berilgan masalaning dastur kodi quyidagicha:

#include

using namespace std;

int main(){

int c, n;

cout<<"c= "; cin>>c;

cout<<"n= "; cin>>n;

switch (c) {

1: switch (n){

0: cout<<"Shimol"; break;

1: cout<<"G‘arb"; break;

-1: cout<<"Sharq"; break;

}

2: switch (n){

0: cout<<"G‘arb"; break;

1: cout<<"Janub"; break;

-1: cout<<"Shimol"; break;

}

3: switch (n){

0: cout<<"Janub"; break;

1: cout<<"Sharq"; break;

-1: cout<<"G‘arb"; break;

}

4: switch (n){

0: cout<<"Sharq"; break;

1: cout<<"Shimol"; break;

-1: cout<<"Janub"; break;

}

default: cout<<"Xato";

}

}

7-misol. 1-99 oralig‘idagi butun son berilgan. U sonni satr ko‘rinishida chiqarish dasturi.

Berilgan masalaning dastur kodi quyidagicha:

#include

using namespace std;

int main(){

int n, a, b;

cout<<"1 <= n <= 99 oralig‘idagi son kiriting: "; cin>>n;

if ((1<=n) && (n<=99)) {

a=n/10; b=n%10;

switch (a) {

case 1: cout<<"O‘n "; break;

case 2: cout<<"Yigirma "; break;

case 3: cout<<"O‘ttiz "; break;

case 4: cout<<"Qirq "; break;

case 5: cout<<"Ellik "; break;

case 6: cout<<"Oltmish "; break;

case 7: cout<<"Yetmish "; break;

case 8: cout<<"Sakson "; break;

case 9: cout<<"To‘qson "; break;

}

switch (b){

case 1: cout<<"bir "; break;

case 2: cout<<"ikki "; break;

case 3: cout<<"uch "; break;

case 4: cout<<"to‘rt "; break;

case 5: cout<<"besh "; break;

case 6: cout<<"olti "; break;

case 7: cout<<"yetti "; break;

case 8: cout<<"sakkiz "; break;

case 9: cout<<"to‘qqiz "; break;

}

} else cout<<"Xato";

}

Shartsiz o‘tish operatori

Shartsiz o‘tish operatori – dasturni bajarishda tasodifiy xatoliklarni keltirib chiqarishi mumkin. Uning qulayligi shundaki, algoritmning ixtiyoriy qatoridan boshqaruvni qulay hisoblash qatoriga o‘tkazadi. Bunda goto operatoridan foydalaniladi. goto operatorining sintaksisi quyidagicha:

goto ;

Nishon – bu biror bir belgilar davomida ikkita nuqta ( : ) qo‘yilgan identifikator. Nishon bilan qandaydir operator belgilanadi va keyinchalik, dasturning boshqa bir nomidan unga shartsiz o‘tish amalga oshiriladi. Nishonga shartsiz o‘tish goto operatori yordamida bajariladi. goto operatori orqali faqat, uning o‘zi joylashgan funksiya ichidagi operatorlarga o‘tish mumkin.

Yuqorida bayon etilgan fikrlarni tekshirish uchun C++ dasturlash tilida shartsiz o‘tish operatoridan foydalangan holda, bir nechta misollarni ko‘rib chiqamiz.

1-misol. n butun son berilgan. Agar n soni 10 dan katta bo‘lsa, n ning kvadrat ildizi topish, aks holda n sonini qayta kiritishni so`rovchi dastur.

Berilgan masalaning dastur kodi quyidagicha:

#include

#include

using namespace std;

int main(){

int n;

x: cout<<"n= "; cin>>n;

if (n>10) cout<

else {

cout<<"Qayta kiriting \n"; goto x;

}

}

2-misol. ax2+bx+c=0 kvadrat tenglama ildizlarini topish dasturi.

Berilgan masalaning dastur kodi quyidagicha:

#include

#include

using namespace std;

int main()

{

int a, b, c;

float d, x1, x2;

cout <<" ax^2+bx+c=0 tenglama ildizini topish dasturi!";

z: cout<<"\n a - koeffitsientni kiriting: ";

cin>>a;

cout<<"\n b - koeffitsientni kiriting: ";

cin>>b;

cout<<"\n c - koeffitsientni kiriting: ";

cin>>c;

if (a==0) {

cout<<" kvadrat tenglama emas\n qayta kiriting"; goto z; } else

{

d = b*b - 4 * a * c;

if (d<0)

{ cout << " tenglama haqiqiy ildizlarga ega emas\n qayta kiriting";

goto z; }

if (d==0)

{

cout << " tenglama yagona ildizga ega: ";

x1=x2= -b / (2 * a);

cout<<"\n x= "<

}

else

{

cout << " tenglama ikkita ildizga ega: ";

x1 = (- b + sqrt(d)) / (2 * a);

x2 = (- b - sqrt(d)) / (2 * a);

cout<<"\n x1= "<

cout<<"\n x2= "<

}

}

return 0;

}

Mustaqil bajarish uchun topshiriqlar

1. x va y butun sonlar berilgan. Ularning hech bo‘lmaganda bittasi toq ekanligini tekshiruvchi dastur tuzing.

2. Berilgann x, y, z butun sonlardan musbatlarining kubini chiqaruvchi dastur tuzing.

3. Uchta haqiqiy son berilgan. Ushbu sonlar uchburchakning tomonlarini tashkil etishini tekshiruvchi dastur tuzing.

4. Quyidagi misolni dasturini tuzing:

5. Quyidagi misolni dasturini tuzing:

6. To`rtta haqiqiy son berilgan. Ulardan bittasi qolgan uchtasidan ishorasi bilan farq qilsa, shu farq qiluvchi sonning tartib raqamini aniqlovchi dastur tuzing.

7. Ox va Oy o‘qlarida yotmaydigan nuqta koordinatalari berilgan. Uning qaysi chorakka tegishli ekanligini aniqlovchi dastur tuzing.

8. To‘g‘ri sanani ifodalovchi kabisa bo‘lmagan yilning (k) kuni va (o) oyi butun sonlar ko‘rinishida berilgan. Berilgan sanadan keyingi sanani topuvchi dastur tuzing.

9. Uch xonali a va b sonlar oralig‘idagi avtomashina davlat raqamini bildiruvchi butun son berilgan. U sonni satr ko‘rinishda chiqaruvchi dastur tuzing.

10. Kvadrat tenglamani to`la tekshiruvchi dastur tuzing.

2.2-§. C++ dasturlash tilida takrorlanuvchi jarayonlar


Ba’zi bir misol va masalalarning parametrlarini o‘zgarishiga qarab ma’lum hisoblashlar bir necha marta takrorlanib, bajarilishi talab etiladi. Ushbu jarayonlarni amalga oshirishda takrorlanuvchi operatorlardan foydalaniladi. Masalan, funksiyada x ning bir nechta qiymatlarini hisoblashni va berilgan ikkita oraliqdagi sonlarni yoki qatorlarni yig‘indisi, ko‘paytmasi kabi amallarni dasturlash talab etilgan bo`lsin. Bu kabi dasturlarni shartli o‘tish operatori yordamida ham dasturlash mumkin. Ammo takrorlanuvchi operatorlardan foydalanilsa, hisoblash vaqti ma’lum darajada tejaladi. Shu bois, C++ dasturlash tilida takrorlanuvchi jarayonlarni dasturlash uchun for, while, do-while, break, continue operatorlar mavjud. Ushbu operatorlarning imkoniyatlarini quyida ko`rib chiqamiz.

for takrorlash operatori

for operatori takrorlanishlar soni aniq bo‘lgan jarayonlarni hisoblashda foydalaniladi. Uning umumiy ko‘rinishi quyidagicha:

for (boshlang‘ich_o‘zlashtirish; shart; qadam) operatorlar;

Bu yerda, boshlang‘ich_o‘zlashtirish – vergul bilan ajratilgan operator yoki operatorlar guruhi bo‘lib, siklda ishlatiladigan qiymatlarga boshlang‘ich qiymatlarni, shu jumladan sikl parametrini belgilash uchun ishlatiladi va sikl boshida bir marta bajariladi; shart – siklga kirish shartini belgilaydigan butun yoki mantiqiy ifoda, agar shart rost bo‘lsa (nolga teng bo‘lmasa), u holda sikl bajariladi; qadam – operator yoki vergul bilan ajratilgan operatorlar guruhi, ular har bir takrorlanishdan keyin bajariladi va sikl parametrini o‘zgartirishga xizmat qiladi; operator - siklning tanasi bo‘lgan har qanday C++ dasturlash tili operatori.

For takrorlanish operatorining blok-sxemasi 16-rasmda keltirilgan.



16-rasm. For takrorlash operatori blok sxemasi.

Bunda qadam yoki operator natijasi shartga ta’sir qilishi kerak, aks holda sikl hech qachon tugamaydi. Masalan:

for(int i=n1; i<=n2; i++) m;

Bu yerda i sikl parametri, n1, n2 esa i parametrining boshlang‘ich va oxirgi qiymati hisoblanadi (bunda n1<=n2 bo‘lishi shart). Ular o‘zgarmas son yoki ifoda bo‘lishi mumkin. Bunda m sikl tanasi bo‘lib, bir nechta operatorlardan iborat bo‘ladi. Agar sikl tanasi bir necha operatordan iborat bo‘lsa, ular {…} ichiga olinadi.

Agar for(int i=n1; i<=n2; i--) ko‘rinishda berilsa,sikl parametri teskari bo‘yicha o‘zgaradi, ya’ni -1 qadam bilan (bu yerda n1>=n2 bo‘lishi shart). U holda sikl quyidagi ko‘rinishga ega bo‘ladi: for(int i=n1; i<=n2; i--) m;

for operatori tarkibidagi boshlang‘ich_o‘zlashtirish, shart yoki qadam ni tushirib qoldirish ham mumkin, ammo nuqta-vergul joyida qolishi kerak. Masalan, eng sodda ko‘rinishdagi takrorlash operatori quyidagi ko‘rinishga ega:

for ( ; ; ) cout <<”Cheksiz takrorlash…” ;

Agar takrorlanish jarayonida bir nechta o‘zgaruvchilarning qiymati bir vaqtda o‘zgarishi talab etilsa, bunda boshlang‘ich_o‘zlashtirish va qadam ifodalarida bir nechta operatorlarni vergul bilan yozish orqali amalga oshirish mumkin:

for (int i=1, j=10; i<=10; i++, j--)

{



};

Yuqoridagi takrorlanish operatorining har bir qadamida i va j o‘zgaruvchilarning qiymatlari mos ravishda o‘zgarib boradi.

for operatorida boshlang‘ich_o‘zlashtirish bo‘limini ham tushirib qoldirish mumkin. Bunda boshlang‘ich_o‘zlashtirish bo‘limini for operatoridan oldin berilishi shart. Masalan, 1 dan 10 gacha sonlar yig‘indisini toppish uchun quyidagi dastur kodi yoziladi:



int i=1;

for ( ; i<=n; i++) s+=i;



for operatorida
shart bo‘limini ham tushirib qoldirish mumkin. Bunday hollarda shart takrorlanish tanasida berilishi lozim. Takrorlanishni tugatish uchun esa break operatoridan foydalaniladi. Masalan, yuqorida misol uchun dastur kodi quyidagicha yoziladi:



int i=1;

for ( ; ; i++) {

s+=i;

if (i<=n) break;

}



Bundan tashqari operatordagi qadamni ham takrorlanish tanasida yozish mumkin. Masalan:



int i=1;

for ( ; ; ) {

s+=i;

if (i<=n) break;

i++;

}



Shu bilan birga for operatorida takrorlash tanasi bo‘lmasligi ham mumkin. Bu holda dastur bajarilishini ma’lum bir vaqtga “to‘xtatib” turish kerak bo‘lsa, takrorlash tanasiga hech qanday operator yozilmaydi. Bunda nuqtali vergul yozish orqali amalga oshiriladi:

for (int i=1; i<=100; i++) ;

Yuqorida keltirilgan usul orqali 1 dan 10 gacha bo‘lgan natural sonlar yig‘indisini topish uchun quyidagi dastur kodi yoziladi:



for (int i=1; i<=10; s+=i++) ;

. . .

while takrorlash operatori

while takrorlash operatori, operator yoki blokni takrorlash sharti yolg‘on (false) bo‘lguncha takror bajaradi. U quyidagi ko‘rinishga ega:

while () ;

Agar rost qiymatli ifoda bo‘lsa, takrorlanish cheksiz davom etadi. Xuddi shunday, <ifoda> takrorlash boshlanishida true bo‘lib, ya’ni, uning qiymatiga takrorlash tanasidagi hisoblash ta’sir etmasa, u holda takrorlanish cheksiz davo etadi.

while takrorlanish operatoring blok-sxemasi 17-rasmda keltirilgan.



17-rasm. While takrorlash operatori blok sxemasi

while takrorlash shartini oldindan tekshiruvchi takrorlash operatori hisoblanadi. Agar takrorlash boshida yolg‘on bo‘lsa while operatori bajarilmasdan cheklab o‘tiladi.

Ayrim hollarda qiymat berish operatori ko‘rinishida kelishi mumkin. Bunda qiymat berish amali bajariladi va natija 0 bilan solishtiriladi (0 – yolg‘on). Natija noldan farqli bo‘lsa, takrorlash davom ettiriladi.

do-while takrorlash operatori

do-while takrorlash operatori while operatoridan farqli ravishda oldin operator yoki blokni bajaradi va keyin takrorlash shartini tekshiradi. Bu operator takrorlash tanasini kamida bir marta bajarilishini ta’minlaydi. do-while takrorlash operatorining umumiy ko‘rinishi quyidagicha:

do

;

while ();

Uning blok-sxemasi 18-rasmda keltirilgan.



18-rasm. do-while takrorlash operatori blok sxemasi.

Bunday takrorlash operatorining keng qo‘llaniladigan holatlari – birorta jarayonni davom ettirish yoki to‘xtatish haqidagi murojaatdir.

break operatori

Takrorlash operatorlari bajarilishida shunday holatlar yuzaga kelishi mumkinki, unda takrorlashni oxiriga yetkazmasdan, qaysidir qadamda takrorlashdan chiqish zarurati paydo bo‘ladi. Boshqacha aytganda takrorlashni “uzish” kerak bo‘lishi mumkin. Bunda break operatoridan foydalaniladi. break operatori takrorlash operatori tanasining ixtiyoriy (zarur) joylariga qo‘yish orqali shu joydan takrorlash operatoridan chiqishni ta’minlaydi.

continue operatori

continue operatori xuddi break operatoridek takrorlash operatori tanasini bajarishni to‘xtatadi, ammo dasturni operatordan chiqmasdan takrorlashning keyingi qadamiga o‘tishini ta’minlaydi.

Yuqorida bayon qilingan fikrlarni tekshirib ko‘rish uchun C++ dasturlash tilida, takrorlanuvchi operatorlardan foydalangan holda bir nechta dasturlarni ko‘rib o‘tamiz.

1-misol. 1 kg konfetning narxi haqiqiy sonda berilgan. 1, 2, …, 10 kg konfetning bahosini chiqaruvchi dastur.

1-usul. for takrorlash operatoridan foydalanilsa, hisoblashning dastur kodi quyidagicha:

#include

using namespace std;

int main(){

float b;

cout<<"b= "; cin>>b;

for (int i=1; i<=10; i++)

cout<

return 0;

}

2-usul. while takrorlash operatoridan foydalanib hisoblashning dastur kodi quyidagicha:

#include

using namespace std;

int main(){

float b;

cout<<"b= "; cin>>b;

int i=1;

while (i<=10){

cout<

i++;

}

return 0;

}

3-usul. do while takrorlash operatoridan foydalanib hisoblashning dastur kodi quyidagicha:

#include

using namespace std;

int main(){

float b;

cout<<"b= "; cin>>b;

int i=1;

do {

cout<

i++;

} while (i<=10);

return 0;

}

2-misol. 1 dan n gacha bo‘lgan, 4 ga karrali sonlar yig‘indisini hisoblash dasturi.

1-usul. for takrorlash operatoridan foydalanib hisoblashning dastur kodi quyidagicha:

#include

using namespace std;

int main(){

int n, s=0;

cout<<"n= "; cin>>n;

for (int i=1; i<=n; i++)

if (i%4==0) s+=i;

cout<

return 0;

}

2-usul. while takrorlash operatoridan foydalanib hisoblashning dastur kodi quyidagicha:

#include

using namespace std;

int main(){

int n, s=0;

cout<<"n= "; cin>>n;

int i=1;

while (i<=n){

s+=i;

i++;

}

cout<

return 0;

}

3-usul. do while takrorlash operatoridan foydalanib hisoblashning dastur kodi quyidagicha:

#include

using namespace std;

int main(){

int n, s=0;

cout<<"n= "; cin>>n;

int i=1;

do {

s+=i;

i++;

} while (i<=n);

cout<

return 0;

}

3-misol. a va n butun sonlari berilgan (n>0). 1+ a + a2 + a3 + ... + an . Bitta sikldan foydalanib yig‘indisini hisoblash dasturi.

1-usul. for takrorlash operatoridan foydalanib, hisoblashning dastur kodi quyidagicha:

#include

#include

using namespace std;

int main(){

int n, a; float s=0;

cout<<"a= "; cin>>a;

cout<<"n= "; cin>>n;

for (int i=0; i<=n; i++)

s+=pow(a,i);

cout<

return 0;

}

2-usul. while takrorlash operatoridan foydalanib, hisoblashning dastur kodi quyidagicha:

#include

#include

using namespace std;

int main(){

int n, a; float s=0;

cout<<"a= "; cin>>a;

cout<<"n= "; cin>>n;

int i=0;

while (i<=n){

s+=pow(a,i);

i++;

}

cout<

return 0;

}

3-usul. do while takrorlash operatoridan foydalanib, hisoblashning dastur kodi quyidagicha:

#include

#include

using namespace std;

int main(){

int n, a; float s=0;

cout<<"a= "; cin>>a;

cout<<"n= "; cin>>n;

int i=0;

do {

s+=pow(a,i);

i++;

} while (i<=n);

cout<

return 0;

}
4-misol. n (n>0) butun son berilgan. Butunga bo‘lish va qoldiqni aniqlash operatsiyalaridan foydalanib, n sonida 3 ga karrali raqam borligini aniqlovchi dastur.

1-usul. for takrorlash operatoridan foydalanib, hisoblashning dastur kodi quyidagicha:

#include

using namespace std;

int main(){

int n, k=0;

cout<<"n= "; cin>>n;

if (n>0)

{

for (int i=1; ; i++){

if ((n%10)%3==0) k++;

n=n/10;

if (n==0) break;

}

cout<

} else cout<<"Butun va musbat son kiriting";

}

2-usul. while takrorlash operatoridan foydalanib, hisoblashning dastur kodi quyidagicha:

#include

using namespace std;

int main(){

int n, k=0;

cout<<"n= "; cin>>n;

if (n>0)

{

int i=1;

while (n>0){

if ((n%10)%3==0) k++;

n=n/10;

}

cout<

} else cout<<"Butun va musbat son kiriting";

return 0;

}

3-usul. do while takrorlash operatoridan foydalanib, hisoblashning dastur kodi quyidagicha:

#include

using namespace std;

int main(){

int n, k=0;

cout<<"n= "; cin>>n;

if (n>0)

{

int i=1;

do {

if ((n%10)%3==0) k++;

n=n/10;

} while (n>0);

cout<

} else cout<<"Butun va musbat son kiriting";

return 0;

}

5-misol. n (n>1) butun son berilgan. Agar u tub son bo‘lsa true, aks holda false jumlasini chiqaruvchi dastur.

1-usul. for takrorlash operatoridan foydalanib, hisoblashning dastur kodi quyidagicha:

#include

using namespace std;

int main(){

int n, k=0;

cout<<"n= "; cin>>n;

for (int i=1; i<=n; i++)

if (n%i==0) k++;

if (k==2) cout<<"true";

else cout<<"false";

return 0;

}

2-usul. while takrorlash operatoridan foydalanib, hisoblashning dastur kodi quyidagicha:

#include

using namespace std;

int main(){

int n, k=0;

cout<<"n= "; cin>>n;

int i=1;

while (i<=n){

if (n%i==0) k++;

i++;

}

if (k==2) cout<<"true";

else cout<<"false";

return 0;

}

3-usul. do while takrorlash operatoridan foydalanib, hisoblashning dastur kodi quyidagicha:

#include

using namespace std;

int main(){

int n, k=0;

cout<<"n= "; cin>>n;

int i=1;

do {

if (n%i==0) k++;

i++;

} while (i<=n);

if (k==2) cout<<"true";

else cout<<"false";

return 0;

}

6-misol. Barcha uch xonali sonlar ichida raqamlarining yig‘indisi 21 ga teng bo‘lgan birinchi sonni topish dasturi.

Berilgan misolni break operatoridan foydalanib, hisoblashning dastur kodi quyidagicha:

#include

using namespace std;

int main(){

int n;

for(int i=100; i<=999; i++) {

int a=i%10;

int b=i/10;

int c=b/10;

int d=b%10;

if (a+c+d==21) { cout<

}

return 0;

}

7-misol. n butun son berilgan (n>0). 1 va n oralig‘idagi tub sonlarni chiqarish dasturi.

Berilgan misolni continue operatoridan foydalanib hisoblashning dastur kodi quyidagicha bo‘ladi:

#include

using namespace std;

int main(){

int n;

cout<<"n= "; cin>>n;

bool division=false;

for (int i=2; i<=n; i++)

{

for (int j=2; j

{

if (i%j) continue;

else

{

division=true; break;

}

}

if (!division) cout<

division=false;

}

return 0;

}

Mustaqil bajarish uchun topshiriqlar

1. 1 dan n gacha bo`lgan butun sonlarning ko‘paytmasini topish dasturini tuzing.

2. Quyidagi yig`indini hisoblash dasturini tuzing: . Bunda n>0.

3. 1,1-1,2+1,3-… Ifodaning qiymatini topish dasturini tuzing.

4. Quyidagi misolni dasturini tuzing:

5. n butun soni berilgan (n>0). 1!+2!+…+n! ni bitta sikldan foydalanib, yig‘indisini hisoblash dasturini tuzing.

6. Quyidagi yig‘indini hisoblash dasturini tuzing: 1n+2n-1+…+n1. Bunda n>0.

7. n (n>1) butun son berilgan. 1+2+…+k yig‘indining n dan katta yoki teng bo‘lishini ta’minlaydigan eng kichik k butun soni va yig‘indining qiymatini chiqaruvchi dastur tuzing.

8. n (n>1) butun son berilgan. Butunga bo‘lish va qoldiqni aniqlash amallaridan foydalanib, uning raqamlari yig‘indisini va raqamlari sonini chiqaruvchi dastur tuzing.

9. n (n>1) butun son berilgan. Agar u tub son bo‘lsa true, aks holda false jumlasini chiqaruvchi dastur tuzing.

10. a va b sonlar oralig`idagi butun sonlardan iborat bo`lgan uchburchakning tomonlari berilganda, uning yuzasi butun son bo`ladigan tomonlarni topuvchi dastur tuzing.