C++ tilida o‘rnatilgan qism dasturlar




Download 6,33 Mb.
Pdf ko'rish
bet124/194
Sana20.02.2024
Hajmi6,33 Mb.
#159185
1   ...   120   121   122   123   124   125   126   127   ...   194
 
8.2. C++ tilida o‘rnatilgan qism dasturlar 


Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
239 
C++ tilida o‘rnatilgan funksiyalar shablonli funksiyalar deb nomlanadi. 
Shablonli funksiyalar quyidagi ko‘rinishga ega bo‘ladi: 
template  
Sinf bo‘lgan parametrlarga ega bo‘lishi mumkin bo‘lgan aniq funksiyalar 
Shablonli funksiya sinf bo‘lgan hech bo‘lmasa bitta parametrga ega bo‘lishi 
lozim. Har qanday bunday parametr quyidagi ko‘rinishda bo‘ladi: 
class identifikator 
Masalan, quyidagi shablonli funksiyani ko‘rib chiqamiz 
template  
Type max (Type first, Type second) 
{ return first>second ? first:second; 

Bu yerda Type – parametr bo‘lib, funksiya ishlovchi ma’lumotlar tipini 
ko‘rsatadi. Bunday shablonli funksiya nusxalarini ma’lumotlarning har qanday tipi 
bilan ishlash uchun yaratish mumikn. Masalan, int tipi uchun protsedura nusxasi 
quyidagicha bo‘lishi mumkin: 
int max (int first, int second) { 
return first> second ? first: second; 
Ushbu amallarni makroaniqlash (makros) ko‘rinishida tavsiflash mumkin, 
ammo bu holda u noto‘g‘ri ishlashi mumkin. Makros quyidagi ko‘rinishda bo‘lsin 
deylik: 
define max (a,b) ((a) > (b) ? (a) : (b) 
Ushbu makros o‘rnatiluvchan hisoblanadi, ya’ni u har qanday sonli tipdagi 
ma’lumotlar bilan ishlaydi. Ammo, u har doim ham to‘g‘ri ishlamaydi, asosan, 
nosozliklarga ega parametrlar orqali chaqirilgan hollarda, masalan: 
max (x++, y) 
Bu quyidagi natijaga olib keladi: 


Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
240 
((x++)> (y) ? (x++) : (y)) 
x o‘zgaruvchisi qiymatlari u o‘zgaruvchisi qiymatidan katta bo‘lgan har safar, x 
o‘zgaruvchisi qiymati ikki marta oshadi. 
C++ tilida shablonli funksiyalari nusxalari o‘z holicha yaratiladi. Masalan, 
yuqorida aniqlangan shablonli funksiyalar nusxalarini quyidagi kod fragmenti 
yordamida ikki marta yaratish mumkin: int tipli va char tipili parametrlar uchun, 
albatta: 
int a, b, c; 
char d, e, f; 
… 
c=max (a, b); 
f=max (d, e); 
Quyida C++ tilidagi o‘rnatilgan qism dastur versiyasi keltirilgan bo‘lib, u 8.8.1 
bo‘limda ko‘rib chiqilgan. U oldingi versiyasidan salgina farq qiladi, chunki C++ 
tilidagi massivlar indeksi butun bo‘lishi lozim. 
template  
void generic_sort (Type list[], int len { 
int top, bottom; 
Type temp; 
for (top = 0; top for (bottom=top+1; bottomif (list[top]>list[bottom]) { 
temp = list[top]; 
list[top]=list[bottom]; 
list[bottom]=temp; 
} //* for siklining oxiri (bottom = … 
} //** o‘rnatilgan sortirovka qilish funksiyasining oxiri 
Quyida ushbu shablonli funksiyasining nusxasini yaratishga misol keltirilgan: 
float flt_lit[100]; 
… 
generic_sort(flt_list, 100); 
Ada tilidagi o‘rnatilgan qism dasturlar va C++ tilidagi shablonli funksiyalar qism 
dasturlarga turlicha qaraydi, bunda rasmiy parametrlar chaqirilganda faktli 


Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
241 
parametrlar tiplari bilan dinamik holda bog‘lanadi. Bu holda, kodning birgina nusxasi 
kerak bo‘ladi. 
Smalltalk, Java, Ada 95 va C++ tillarida chaqiruvlar metodning kerakli versiyasi 
bilan dinamik bog‘lanadi, bunda u faktli parametrlar tiplariga muvofiq bo‘ladi. Ushbu 
mavzu 11 bobda o‘rganib chiqilgan. 

Download 6,33 Mb.
1   ...   120   121   122   123   124   125   126   127   ...   194




Download 6,33 Mb.
Pdf ko'rish

Bosh sahifa
Aloqalar

    Bosh sahifa



 C++ tilida o‘rnatilgan qism dasturlar

Download 6,33 Mb.
Pdf ko'rish