Файл: Ozbekiston respublikasi oliy va orta maxsus talim vazirligi navoiy davlat pedagogika instituti.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 08.11.2023
Просмотров: 327
Скачиваний: 8
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
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
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