C++ tili qayta foydalaniluvchi dasturiy ta’minotni ishlab chiqish uchun shablon funksiyalar va sinflar bilan ta’minlaydi. Shablonlar funksiyalar va sinflarda turlarni muvofiqlashtirish (sozlash) qobiliyatini taqdim etadi



Download 45,76 Kb.
bet1/3
Sana09.12.2022
Hajmi45,76 Kb.
#882784
  1   2   3
Bog'liq
5-Mustaqil ish


11-Variant
Nazariy qism

C++ tili qayta foydalaniluvchi dasturiy ta’minotni ishlab chiqish uchun shablon funksiyalar va sinflar bilan ta’minlaydi. Shablonlar funksiyalar va sinflarda turlarni muvofiqlashtirish (sozlash) qobiliyatini taqdim etadi. Bunday qobiliyat bilan, kompilyator aniq bir tur o`rnida qabul qila oladigan umumiy turga sifatida bitta funksiya yoki bitta sinfni aniqlashimiz mumkin.


Shablonlarsiz C++ da bir funksiyani turli xil tiplar ustida bajarish uchun har bir tur uchun alohida funcksiya yaratish kerak. Masalan(kiritilgan ifodani ekranga chiqarish):
#include
#include
using namespace std;
void Printf(float ifoda){
cout << "ifoda = " << ifoda << endl;
}
void Prints(string ifoda){

cout << "ifoda = " << ifoda << endl;


}
void Printi(int ifoda){

cout << "ifoda = " << ifoda << endl;


}
int main() {

Printi(2);


Prints("salom");
Printf(5.34);
return 0;
}
Shablon yordamida esa bitta funksiya yaratish yetarli bo’ladi:

#include
#include


using namespace std;
template
void Print(T ifoda){
cout<< "ifoda = " << ifoda << endl;
}
int main() {

Print(2);


Print("salom");
Print(5.34);
return 0;
}
Shablon yaratish uchun avval template so’zi yoziladi keyin <> ichida class yoki typname sozi va shablonning nomi yozilishi yetarli. Misol uchun: template ifoda G turini hosil qiladi va bu tur dastur davomida ixtiyoriy boshqa turga o’tishi mumkin.

Ya’ni G 5; ifodada G int tipi bajaradigan funksiyani bajarsa G “ajoyib” ifodada G string ga o’zgaradi.


Shablonlar turi aniq bo’lmagan o’zgaruvchilar bilan ishlashda qo’l keladi.
Shablonlar: template myobject();
Korinishida ham bo’lishi mumkin bu holda shablon faqat tur_nomi ifodada yozilgan turnigina qabul qilishi mumkin.


  1. Shablonlar standart kutubxonasi.


Ba’zi dasturlash tillarida malumotlar tuzilmalari ustida amallar bajarishni osonlashitirish maqsadida shablonlar standard kutubxonasidan foydalaniladi. STL (shablonlar kutubxonasi) ni uch qismga ajratishimiz mumkin ular:


1.konteynerlar
2.algoritmlar
3.iteratorlar
Kiritilgan ma’lumotni daturlash tili o’qiy oladigan ko’rinishda qabul qilish va joylash uchun konteynerlardan foydalaniladi. Konteynerlar malum bir turdagi obeyktlar to’plamini boshqarish uchun ishlatiladi. Dek, stek, massiv, list, vector, map kabilarni konteynerlarga misol qilib keltirishimiz mumkin.
Konteynerlar ustida qandadaydur, masalan qidirish yoki saralash amalini bajarish uchun algoritmlardan foydalaniladi.
Iteratorlar esa konteynerlarning biror bir qismiga otish uchun foydalaniladi.
#include
#include
using namespace std;
int main() {
// vektor yaratamiz
vector vec;
int i; // vec nimg orginal olchamini chiqaramiz
cout << "vector size = " << vec.size() << endl;
// 5gaca sonlarni ni qoshamiz
for(i = 0; i < 5; i++) { vec.push_back(i); }
// keyingi o'lchamini chiqaramiz.
cout << "keyingi olcham = " << vec.size() << endl;
for(i = 0; i < 5; i++) {
cout << " vec [" << i << "] = " << vec[i] << endl; }
//iteratordan foydalanib vektor elementlariga kiramiz.
vector::iterator v = vec.begin();
while( v != vec.end()) {
cout << "v = " << *v << endl; v++;
}

return 0; }



  1. Iteratorlarning ishlatilishi.


Shablonlar kutubxonasi konteynerlari joylashgan xotira adresini ko’rsatish uchun


Iteratorlardan foydalaniladi. ular dasturning kompayling vaqtini qisqartiradi.
Iteratorlardan foydalanish uchun dasturga #include qatorni qo’shish ya’ni iterator kutubxonasini chaqirish kerak.
begin() – bu funksiya konteynerning boshlangich pozitsiyasidagi ya’ni 1-elementni qaytaradi.
end() – bu funsiya konteyner oxirgi elementidan bitta keyingi adresni qaytaradi.
Iteratrolar 5 turga bo’linadi ular:

Kiritish,


Chiqarish,
Ulashish(forward)
Ikki yo’nalishli
Random access
Kiritish va chiqarish iteratorlari eng ko’p cheklangan iteratorlardur. Ular faqat bir tomonlama kiritish yoki chiqarish amallarini bajarishi mumkin.

konteyner

konteyner

Uchinchi tur iteratorlar kiritish dastlabki ikktasi bajaradigan funksiyalarni deyarli hammasini bajara oladi lekin ular ham faqat bir tomonlama.

konteyner

Ikki yonalishli iteratorlar ham forward iteratorlaga o’xshaydi faqat ular orqa tomondan ham konteynerga kirishi mumkin.

konteyner

Random access iteratorlari esa konteynerning ixtiyoriy qismidan kira oladi.

konteyner

Ikki yo’nalishli iteratorga misol:


#include
#include
#include
using namespace std;
int main() {
vector vec{10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
vector ::iterator it;
vector :: reverse_iterator rev_it;
for(it = vec.begin(); it != vec.end(); it++)
cout<<*it<<" "; cout<< endl;
for(rev_it = vec.rbegin();
rev_it!= vec.rend(); rev_it++)
cout<<*rev_it<<" ";

Download 45,76 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