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

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

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

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

Добавлен: 08.11.2023

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

Скачиваний: 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


C++ tilida dasturni tushunarli qilish uchun typedef kalit so‘zidan foydalanib, turga yangi nom berish mumkin:

typedef toifa_nomi yangi_nom [ o‘lcham ];

Kvadrat qavslar ichidagi o‘lchamni yozish majburiy emas.

Masalan:

typedef short int shint;

typedef char xyz[100];

typedef struct{

char fio[30];

int a, b;

double qiymat;} talaba;

Bu ko‘rinishda hosil qilingan toifa nomlari standart toifalarning nomlari bilan bir xil tarzda ishlatilishi mumkin:

shint i, j ; // short int toifasidagi ikkita o‘zgaruvchi;

xyz str[5]; // 5 ta satrda 100 ta elementli massiv;

talaba guruh[25]; // 25 ta strukturali massiv.

Uzun tavsifli toifalarga qisqartirilgan yangi nomlarni berishdan tashqari, typedef dasturlarning ko‘chirilishini osonlashtirish uchun ham ishlatiladi. Agar mashinaga bog‘liq turlar typedef operatorlari yordamida e’lon qilinsa, dasturni ko‘chirishda faqat ushbu operatorlarga o‘zgartirish kiritish talab etiladi.

Sanovchi o‘zgarmaslar (enum)

C++ tilida dasturlash jarayonida ko‘pincha, har xil ma’noga ega bo‘lishi talab etiladigan bir nechta nomlangan o‘zgarmaslardan foydalanishga to‘g‘ri keladi. Buning uchun barcha mumkin bo‘lgan qiymatlari butun sonli o‘zgarmaslar ro‘yxati bilan ko‘rsatilgan ma’lumotlar turidan foydalanish qulay hisoblanadi.

Sanovchi o‘zgarmaslar umumiy holda quyidagi ko`rinishda yoziladi:

enum [ toifa_nomi ] { o‘zgarmaslar_ro‘yxati };

Agar dasturda ushbu turdagi o‘zgaruvchilardan foydalanish talab etilsa, toifa nomi o‘rnatiladi. Bunda kompilyator o‘zgaruvchilar faqat o‘zgarmaslar ro‘yxatidan qiymatlarni qabul qilishini ta’minlaydi. O‘zgarmaslar butun son bo‘lishi kerak va ularga odatiy usulda boshlang‘ich qiymat beriladi. Agar boshlang‘ich qiymat berilmasa, birinchi o‘zgarmasga nolga qiymat va har bir keyingi o‘zgarmasga oldingisidan bir birlik katta qiymat beriladi:

enum raqam {nol, bir, ikki, uch};

Bunda nol, bir, ikki, uch o‘zgarmaslarga mos ravishda 0, 1, 2, 3 qiymatlari tenglashtiriladi.

enum {ikki = 2, uch, to‘rt, o‘n = 10, o‘n_bir, ellik = o‘n + 40};

Bunda uch va to‘rt o‘zgarmasga 3 va 4 qiymat, o‘n_birga esa 11 qiymat tenglashtiriladi.

Sanovchi o‘zgarmaslarning nomlari unikal bo‘lishi kerak va qiymatlari bir xil bo‘lishi mumkin.

Ro‘yxatga olish uchun qiymatlar diapazoni, uning barcha qiymatlarini ko‘rsatish uchun zarur bo‘lgan bitlar soni bilan belgilanadi. Butun sonning har qanday qiymati sanab chiqish turiga berilishi mumkin, ammo agar qiymat, uning qiymatlar doirasidan tashqarida bo‘lsa, natija aniqlanmaydi.

Sinflar

Sinf – bu bir-biri bilan bog‘langan, o‘zgaruvchilar va metodlar to‘plamidir. Sinflarga ko‘pgina misollar keltirish mumkin. Masalan, kompyuterni monitor, klaviatura, tizimli blok, sichqoncha va boshqa qismlardan tashkil topgan qurilmalar yoki yoqish, o‘chirish, sozlash imkoniyatlariga ega bo‘lgan obyekt deb tasavvur qilish mumkin. Kompyuter o‘zida turli ehtiyot qismlarni va ularni funksiyalarini mujassamlashtiradi. Sinfda barcha ma’lumotlar bitta obyektda yig‘ilgan, ularga osongina murojaat qilish, o‘zgartirish va ko‘chirish mumkin. Sinf bilan ishlovchi dasturiy qismlar, ya’ni, mijozlar obyektdan foydalanishi mumkin. Sinf o‘zgaruvchilarning ixtiyoriy kombinastiyasidan, shuningdek, boshqa sinflar tiplaridan iborat bo‘lishi mumkin. Sinfdagi o‘zgaruvchilar o‘zgaruvchi elementlar yoki xossalar deyiladi. O‘zgaruvchi elementlar faqatgina o‘zlarining sinflariga tegishlidir. Monitor va klaviatura kompyuterning qanday tarkibiy qismi bo‘lsa, o‘zgaruvchi – elementlar ham sinfning shunday tarkibiy qismidir.

Sinfdagi funksiyalar odatda o‘zgaruvchi elementlar ustida biror bir amal bajaradilar. Ular funksiya elementlari yoki sinf metodlari deb aytiladi. Masalan. kompyuter sinfi metodlari qatoriga Yoqish() va O‘chirish()larni kiritish mumkin. Bundan tashqari, k
ompyuter sinfi kompyuterning turi va parametrlarini ifodalovchi o‘zgaruvchi – elementlarga ega bo‘ladi. Shuningdek, bu sinfning funksional qismi Hisoblash(), Chop_qilish(), Yozish() metodlaridan iborat bo‘lishi mumkin.

Sinfni e’lon qilish

Sinfni e’lon qilish uchun class kalit so‘zi, figurali qavs, undan so‘ng xossalar va metodlar ro‘yxati ishlatiladi. Sinfni e’lon qilish yopiluvchi figurali qavs va nuqtali vergul orqali yakunlanadi. Masalan, matematikadagi komplekssonlar uchun sinf yaratamiz. Buning uchun dasturning e’lonlar qismiga quyidagi dastur kodi yoziladi:

class kompleks {

double haqiqiy; double mavhum;

void summ();

}

Kompleks sinfini e’lon qilishda xotiradan joy band qilinmaydi. E’lon qilish, kompilyatorga Kompleks sinfini mavjudligini hamda unda qanday qiymatlar saqlanishi (haqiqiy, mavhum) va u qanday amallarni bajarishi (summ() metodi) haqida xabar beradi. Bundan tashqari, uni e’lon qilish orqali kompilyatorga Kompleks sinfining o‘lchami, ya’ni, har bir Kompleks sinfi obyekti uchun kompilyator qancha joy ajratishi lozimligi haqida ham ma’lumot beradi. Masalan, misolda butun qiymat uchun to‘rt bayt talab qilinsa, Kompleks sinfi obyektlari xotiradan sakkiz bayt joy egallaydi (haqiqiy o‘zgaruvchisi uchun to‘rt bayt, mavhum o‘zgaruvchisi uchun to‘rt bayt). summ() metodi xotiradan joy ajratishni talab qilmaydi.

Obyektni e’lon qilish

C++ dasturlash tilida yangi turdagi obyekt xuddi oddiy butun sonli o‘zgaruvchi kabi aniqlanadi. Masalan, ixtiyoriy butun sonli o‘zgaruvchi quyidagicha aniqlanadi: unsigned int a_max// ishorasiz butun sonni aniqlaydi. Kompleks sinfidagi obyekt esa quyidagicha aniqlanadi:

kompleks a // kompleks obyektini e’lon qilish.

Bu dasturiy kodlarda unsigned int tipidagi a_max nomli o‘zgaruvchi va kompleks sinfining anomli obyekti aniqlandi.

Ko‘pgina hollarda sinf va obyekt tushunchalarini ishlatishda dasturchilar chalkashlikka yo‘l qo‘yiladi. Shuning uchun, obyekt sinfni biror bir nusxasiekanligini yana bir bor ta’kidlash joiz.

Sinf a’zolariga murojaat qilish

C++ dasturlash tilida komplekssinfining obyektini aniqlaganimizdan so‘ng, bu obyektning elementlariga murojaat qilish zaruriyati tug‘ilishi mumkin. Buning uchun bevosita murojaat (.) operatori qo‘llaniladi. Masalan, kompleks obyektining ao‘zgaruvchi - elementiga 50 sonini o‘zlashtirmoqchi bo‘lsak quyidagi dastur kodi yozilishi lozim: kompleks.a = 50;

summ()metodini chaqirish uchun esa kompleks.summ(); kodini yozish talab etiladi.

Sinf elementlariga qiymat o‘zlashtirish



C++ dasturlash tilida berilganlar tipiga qiymat o‘zlashtirilmaydi. Sinfda faqatgina o‘zgaruvchilarga qiymat beriladi. Sinfda qiymatlarni quyidagi int=abtartibda e’lon qilish xatolik hisoblanadi. Bunda kompilyator int tipiga qiymat o‘zlashtirilishi xatolik ekanligi haqida xabar beradi. Shuningdek, quyidagi ko‘rinishda kompleks.haqiqiy = 5 qiymat o‘zlashtirish ham xatolik hisoblanadi.

Agarda kompleks obyekt bo‘lmasdan sinf bo‘lsa, yuqoridagi ifodani ham kompilyator xato deb hisoblaydi. O‘zlashtirish amalini bajarishda xatolikka yo‘l qo‘ymaslik uchun oldin kompleks sinfiga tegishli aobyektini hosil qilish va uning haqiqiy maydonigaqiymat berish lozim. Masalan, 5 qiymat yozish mumkin:

kompleks a;

a.haqiqiy=5;

Sinf a’zolariga murojaat qilish imkonini chegaralash

C++ dasturlash tilida sinfni e’lon qilishda bir nechta kalit so‘zlardan foydalaniladi. Ulardan eng muhimlari public (ochiq) va private(yopiq) kalit so‘zlari bo‘lib, ular orqali obyektning elementlariga murojaat qilish imkoniyati chegaralanadi.

Sinfning barcha metodlari va xossalari boshlang‘ich holda yopiq deb e’lon qilinadi. Yopiq elementlarga faqatgina, shu sinfning metodlari orqaligina murojaat qilish mumkin. Obyektning ochiq elementlariga esa dasturdagi barcha funksiyalar murojaat qilishlari mumkin. Sinf elementlariga murojaat qilish imkonini belgilash juda muhim xususiyat bo‘lib, ushbu masalani yechishda tajribaga ega bo‘lmagan dasturlarchilar qiyinchiliklarga duch keladilar. Bu holatni batafsilroq tushuntirish uchun mavzuning boshida keltirilgan masalamizga qaytamiz:

class kompleks {

double haqiqiy; double mavhum;

void summ();

}

Bu tarzda sinfni e’lon qilishda haqiqiy va mavhum maydonlar hamda, summ() metodi ham yopiq element sifatida aniqlanadi. Yuqoridagi tartibda kompleks sinfi e’lon qilingan bo‘lsa va bu sinf nusxasi bo‘lgan obyektning haqiqiy elementiga asosiy funksiya orqali murojaat qilsak, kompilyator xatolik ro‘y berganligi haqida xabar beradi:

kompleks a;

a.haqiqiy = 5 // Xatolik!

// Yopiq a’zoga murojaat qilish mumkin emas.

Kompleks sinfi elementlariga dasturning boshqa obyektlari tomonidan murojaat qilish imkonini hosil qilmoqchi bo‘lsak, uni public kalitli so‘zi orqali amalga oshiriladi:

class kompleks {

public:

double haqiqiy; double mavhum;

void summ();

}

Bunda publickalit so‘zi orqali sinfdagi haqiqiy, mavhum, summ() ochiq elementga o‘tkaziladi.

Yuqorida bayon qilingan fikrlarni to‘g‘ri ekanligini tekshirib ko‘rish uchun quyidagi misolni ko‘rib chiqamiz.

1-misol. Kompleks sonlar ustida arifmetik amallarni bajaruvchi dastur.

Kompleks sonlar ustida amallar bajaruvchi ilova yaratish uchun avvalo kompleks sonlar ustida amallar bajaruvchi sinfni dastur kodini yozish talab etiladi. U sinfni ixtiyoriy C++ dasturlash muhitida yoki notepad va shunga o‘xshash matn muharrirlarida yozish mumkin. Uning dastur kodi quyidagicha:


class kompleks {

public:

double haqiqiy; double mavhum;

kompleks operator+(kompleks ob);

kompleks operator-(kompleks ob);

kompleks operator*(kompleks ob);

kompleks operator/(kompleks ob); };

kompleks summ(kompleks a, kompleks b);

kompleks kompleks::operator+(kompleks ob)

{

kompleks I;

I.haqiqiy=haqiqiy+ob.haqiqiy;

I.mavhum=mavhum+ob.mavhum;

return I;}

kompleks kompleks::operator-(kompleks ob)

{

kompleks I;

I.haqiqiy=haqiqiy-ob.haqiqiy;

I.mavhum=mavhum-ob.mavhum;

return I;}

kompleks kompleks::operator*(kompleks ob)

{

kompleks I;

I.haqiqiy=haqiqiy*ob.haqiqiy-mavhum*ob.mavhum;

I.mavhum=haqiqiy*ob.mavhum+ob.haqiqiy*mavhum;

return I;}

kompleks kompleks::operator /(kompleks ob)

{

kompleks I;

I.haqiqiy=(haqiqiy*ob.haqiqiy+mavhum*ob.mavhum)/(ob.haqiqiy*

ob.haqiqiy+ob.mavhum*ob.mavhum);

I.mavhum=(ob.haqiqiy*mavhum-haqiqiy*ob.mavhum)/(ob.haqiqiy*ob.haqiqiy+ob.mavhum*ob.mavhum);

return I;

}

kompleks summ(kompleks a, kompleks b)

{

kompleks I;

I.haqiqiy=a.haqiqiy+b.haqiqiy;

I.mavhum=a.mavhum+b.mavhum;

return I;

}

Tayyor bo‘lgan sinf kompleks.h nomi bilan kompyuter xotirasiga saqlanadi.

Ikkita kompleks sonning yig‘indisini topish uchun quyidagi dastur kodi yoziladi:

#include

#include"kompleks.h"

using namespace std;

int main(){

kompleks a,b;

cin>>a.haqiqiy;

cin>>a.mavhum;

cin>>b.haqiqiy;

cin>>b.mavhum;

kompleks c;

c=a+b;

if (c.mavhum<0) cout<

else

cout<

}

Ikkita kompleks sonning ayirmasini topish uchun quyidagi dastur kodi yoziladi:

#include

#include"kompleks.h"

using namespace std;

int main(){

kompleks a,b;

cin>>a.haqiqiy;

cin>>a.mavhum;

cin>>b.haqiqiy;

cin>>b.mavhum;

kompleks c;

c=a-b;

if (c.mavhum<0) cout<

else

cout<

}

Ikkita kompleks sonning ko‘paytmasini topish uchun quyidagi dastur kodi yoziladi:

#include

#include"kompleks.h"

using namespace std;

int main(){

kompleks a,b;

cin>>a.haqiqiy;

cin>>a.mavhum;

cin>>b.haqiqiy;

cin>>b.mavhum;

kompleks c;

c=a*b;

if (c.mavhum<0) cout<

else

cout<

}

Ikkita kompleks sonning bo‘linmasini topish uchun quyidagi dastur kodi yoziladi:

#include

#include"kompleks.h"

using namespace std;

int main(){

kompleks a,b;

cin>>a.haqiqiy;

cin>>a.mavhum;

cin>>b.haqiqiy;

cin>>b.mavhum;

kompleks c;

c=a/b;

if (c.mavhum<0) cout<

else

cout<

}

Ikkita kompleks sonning yig‘indisini summ() funksiyasi yordamida topish uchun quyidagi dastur kodi yoziladi:

#include

#include"kompleks.h"

using namespace std;

int main(){

kompleks a,b,c;

cin>>a.haqiqiy;

cin>>a.mavhum;

cin>>b.haqiqiy;

cin>>b.mavhum;

c=summ(a,b);

if (c.mavhum<0) cout<

else

cout<

}

Ushbu dastur kodlari kompyuter xotirasiga saqlanadi. Dastur kodlari saqlangan papkaga kompleks.h faylini joylashtirish lozim. Aks holda dastur ishchi holatga o‘tkazilganda kompleks sinfiga murojaat qilish imkoniyati bo‘lmaydi.

Mustaqil bajarish uchun topshiriqlar

1. “Usta” nomli sinf hosil qiluvchi dastur tuzing. Sinfning tarkibida nomi, sex_raqami, staji, maoshi elementlari mavjud bo‘lsin.

2. “Avtomobil” nomli sinf hosil qiluvchi dastur tuzing. Sinfning tarkibida ismi, soni, narxi, mamlakat elementlari mavjud bo‘lsin.

3. “Nazorat” nomli sinf hosil qiluvchi dastur tuzing. Sinfning tarkibida talaba ismi, sana, fan, baho elementlari mavjud bo‘lsin.

4. “Meva” nomli nomli sing hosil qiluvchi dastur tuzing. Sinfning tarkibida meva nomi, rangi, vatani, narxi elementlari mavjud bo‘lsin.

5. “Roman” nomli sinf hosil qiluvchi dastur tuzing. Sinfning tarkibida roman nomi, muallifi, nashriyot, sahifasi, narxi elementlari mavjud bo‘lsin.

6. “Talaba” nomli sinf hosil qiluvchi dastur tuzing. Sinfning tarkibida talabaning kursi, guruhi, yoshi, manzili elementlari mavjud bo‘lsin.

7. “Vaqt” nomli sinf hosil qiluvchi dastur tuzing. Sinfning tarkibida soat, minut, soniya elementlari mavjud bo‘lsin.

8. “Manzil” nomli sinf hosil qiluvchi dastur tuzing. Sinfning tarkibida viloyat, shahar, ko‘cha, uy elementlari mavjud bo‘lsin.

9. “To‘rtburchak” nomli sinf hosil qiluvchi dastur tuzing. Sinfning tarkibida eni, bo‘yi, perimetri, yuzi elementlari mavjud bo‘lsin.

10. “Sana” nomli sinf hosil qiluvchi dastur tuzing. Sinfning tarkibida kun, oy, yil elementlari mavjud bo‘lsin.


FOYDALANILGAN ADABIYOTLAR


1. Бьярне Страуструп. Программирование: принципы и практика с использованием С++, 2-е изд.: Пер. с англ. – М. : ООО "И.Д. Вильяме", 2016. - 1328 с.

2. Динман М.И. С++. Освой на примерах. – СПб.: БХВ-Петербург, 2006. – 384 с.

3. Алексеев Е.Р., Злобин Г.Г., Костюк Д.А., Чеснокова О.В., Чмыхало А.С. Программирование на языке С++ в среде Qt Creator – М. : ALT Linux, 2015. – 448 с.

4. Васильев А.Н. Объектно-ориентированное программирование на С++ – СПб.: Наука и Техника, 2016. – 544 с.

5. Лофоре Р. Объектно-ориентированное программирование в С++ // Классика Computer Science. 4-езд. – СПб.: Питер, 2011. – 928 с.

6. Вандевурд Дэвид Джосаттис, Николаи М., Грегор, Дуглас. Шаблоны C++. Справочник разработчика, 2-е изд.: Пер. с англ. – СпБ.: ООО “Альфа-книга”, 2018. – 848 с.

7. Azamatov A.R., Boltayev B. Algoritmlash va dasturlash asoslari // O‘quv qo‘llanma – Toshkent : “Cho‘lpon”, 2013 y. 232 b.

8. Aripov M.M., Otaxanov N.A. Dasturlash asoslari // O‘quv qo‘llanma. Toshkent: “Tafakkur bo‘stoni”, 2015 y. 240 b.

9. Nazirov Sh.A., Qobulov R.V., Babajanov M.R. «C va C++ TILI» // Informatika fanidan o‘quv qo‘llanma. Toshkent, 2012 y. 489 b.

10. Nazirov Sh. A., Qobulov R.V. Obyektga mo‘ljallangan dasturlash // Kasb-hunar kollejlari uchun o‘quv qo‘llanma. – T.: G‘afur G‘ulom nomidagi nashriyot-matbaa ijodiy uyi, 2007. – 184 b.

11. Ro‘ziyev R.A. Dasturlash asoslari // O‘quv qo‘llanma. ­– Toshkent, 2020. – 159 b.

12. Mirsanov U.M., Toxirov F.J., Norbekov A.O., Djurayeva D.R. Dasturlash. // O‘quv qo‘llanma. Toshkent, 2021. – 152 b.

13. Shukurov O.M., Qorayev F.Q., Eshboyev E.A., Shovaliyev B.H. Programmalashdan masalalar to‘plami // Metodik qo‘llanma. – Toshkent 2008. –160 b.

14. https://ravesli.com/uroki-cpp/

15. https://itproger.com/course/cpp


MUNDARIJA


So‘z boshi 4

I BOB. C++ DASTURLASH TILIGA KIRISH 6

1.1-§. C++ tilining leksik asoslari 6

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

1.3-§. Dasturlash operatorlari 22

II BOB. BOSHQARUV OPERATORLARI 30

2.1-§. C++ dasturlash tilida shartli operatorlar 30

2.2-§. C++ dasturlash tilida takrorlanuvchi jarayonlar 46

2.3-§. C++ dasturlash tilida funksiyalar 61

2.4-§. C++ dasturlash tilida massivlar 75

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

2.6-§. C++ dasturlash tilida satrlar va ular ustida amallar 106

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

FOYDALANILGAN ADABIYOTLAR 134


ОГЛАВЛЕНИЕ


So‘z boshi 4

I BOB. C++ DASTURLASH TILIGA KIRISH 6

1.1-§. C++ tilining leksik asoslari 6

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

1.3-§. Dasturlash operatorlari 22

II BOB. BOSHQARUV OPERATORLARI 30

2.1-§. C++ dasturlash tilida shartli operatorlar 30

2.2-§. C++ dasturlash tilida takrorlanuvchi jarayonlar 46

2.3-§. C++ dasturlash tilida funksiyalar 61

2.4-§. C++ dasturlash tilida massivlar 75

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

2.6-§. C++ dasturlash tilida satrlar va ular ustida amallar 106

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

FOYDALANILGAN ADABIYOTLAR 134


CONTENT


So‘z boshi 4

I BOB. C++ DASTURLASH TILIGA KIRISH 6

1.1-§. C++ tilining leksik asoslari 6

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

1.3-§. Dasturlash operatorlari 22

II BOB. BOSHQARUV OPERATORLARI 30

2.1-§. C++ dasturlash tilida shartli operatorlar 30

2.2-§. C++ dasturlash tilida takrorlanuvchi jarayonlar 46

2.3-§. C++ dasturlash tilida funksiyalar 61

2.4-§. C++ dasturlash tilida massivlar 75

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

2.6-§. C++ dasturlash tilida satrlar va ular ustida amallar 106

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

FOYDALANILGAN ADABIYOTLAR 134
1   2   3   4   5   6   7   8   9   10   11