Функциялар


Funktsiya shablonlari (qoliblari)



Yüklə 227 Kb.
səhifə11/13
tarix15.12.2022
ölçüsü227 Kb.
#75187
1   ...   5   6   7   8   9   10   11   12   13
Функциялар

Funktsiya shablonlari (qoliblari).
Bazi bir algoritmlar berilganlar turiga bog’liq emas, masalan deylik tartiblash algotmini xar xil turdagi berilganlar ustida bajarish mumkin.
Algoritmni xar xil turdagi berilganlar bilan ishlatish uchun S++ tilida qolibli funktsiyalar tushinchasi kiritilgan . Bu xolda xar xil turlar uchun aloxida kaytayuklanuvchi funktsiyalar tuzish shart ema , aksincha bitta fuktsiya tuzib va unda parametrlangan turni ishlatsa bo’ladi. Qolibli funktsiyani shakli kuyidagicha bo’ladi:
template
fuktsiya sarlavxasi
{funktsiya tanasi}
Qolib sarlavxasi umumiy ko’rinishi:
template
bu yerda Type1, Type2 turlar parametiri.
Misollar:
template
Type abs(Type x) {return x>0?x:-x;}
template
void swap (t*x,t*y) {t z=*x;*x=*y;*y=z;}

#include


// qolib funktsiya sarlavxasi
template
D sum(int,D*);
void main()
{
int a[]={1,0,6,2,4,10};
int n=6;
cout << sum(n,a);
float x[]={1.0,10.0,-2.3,0.0,2.1,-6.7,8.3}; n=7;
cout<}
// kolib funktsiyani aniqlanishi
template
T sum(int n,T *b );
{
T s=0;
for (int i=0;ireturn s;
}
Qolibli funktsiyalar qoydalari:

  1. Kolibdagi tur parametrlar ismlari xar xil bulishi kerak;

  2. Tur parametrlari fuktsiyani parametrlarini belilishida albatta ishlatilishi kerak.



Funktsiyalar parametrlari xususiyatlari.
Funktsiya prototipida, yoki aniqlash sarlavxasida ko’rsatilgan parametrlar formal parametrlar deyiladi, yoki shunday parametrlar deyiladi , fuktsiyani chaqirishda ko’rsatilgan parametrlar faqtik parametrlar yoki argumentlar deyiladi,.
Funktsiyani chaqirishda argumentni o’rnida ifoda tursa uning qiymati xisoblanadi va stek xotirasiga natijani va barcha argumentlarni nusxasi yoziladi va bundan keyin funqtsiya faqat nusxasi bilan ish yuritadi.
Agar faqtik parametrni turi formal parametr turiga mos kelmasa u xolda kompilator xato deb xabar beradi.
Parametrlarni funktsiyaga ikki xil usul bilan uzatish mumkin : qiymat bilan yoki manzil bilan.
Qiymat bilan uzatilganda, stekga argumentni o’zi yoki xisoblangan ifodani qiymati nusxasi yoziladi, va funktsiya shu nusxa bilan ishlaydi uni kerak bo’lsa o’zgartirishi xam mumkin , lekin bu o’zgarishlar argumentni o’ziga ta’sir qilmaydi, va funktsiya ishini bajarib bulganda nusxalar o’chirib ketiladi ( stek tozalanadi)
Agar parametr manzil bilan uzatilsa , stekga manzilni nusxasi yoziladi va xuddi shu manzilgdan qiymatlar xam o’qilishi xam yozilishi mumkin, bu degan argumentni qiymati funqtsiya bajarilgandan so’ng o’zgarishi mumkin.
Parametr qiymat bilan uzatilishi uchun formal parametr sifatida oddiy o’zgaruvchini turi va nomi yoziladi. Funktsiyani chaqirishda argumentlar o’zgaruchini ismi yoki ifoda bo’lishi mumkin. Manzil bilan uzatilganda formal parametrni ikki xil usul bilan yozish mumkin: ko’rsatkich orqali yoki murojaat orqali. Ko’rsatkich orkali uzatilsa frmal parametrda turdan so’ng * belgisi yoziladi , mos argumentda esa o’zgaruchini manzili (& amal orqali) yoki massiv ismi, yoki funktsiya nomi bo’lishi mumkin, murojaat parametiri turdan keyin & belgisi yoziladi, argument o’rniga o’zgaruvchini ismi yoziladi.
Misol
#include
void f(int,int *,int & )
void main()
{
int i=1,j=2,k=3;
cout<F(i,&j,k);
cout<

}
Void f(int I;int *j; int &k)


{
i++;(*j)++;k++;*j=i+k;k=*j+I;
}
Natijada ekranga kuyidagi qiymatlar chiqadi:

  1. 2 3

  1. 6 8

Bu misolda birinchi parametr qiymat bilan uzatildi . Uni qiymati fuktsiya ichida o’zgarishi bilan natijada qiymati o’zgarmadi.
Iqqinchi parametr ko’rsatkich orqali manzil bilan uzatildi, manzilni uzatish uchun “&”-manzil olish amali ishlatildi, Ko’rsatkich parametrni qiymati bilan ishlash uchun “*”-qiymat olish amalni qo’llash kerak.
Uchinchi parametr murojaat orыali parametrni manzili uzatildi , bu xolda argument o’rnida o’zgaruvchini nomi, turadi va funqutsiya ichida qiymat olish amalni ishlatishni xojati yo’q, shuning uchun bu usul kulay va tushinarlidir.
Agar manzil bilan uzatilgan parametrni qiymati o’zgartirish kerak emas bo’lsa u xolda parametr const modifikator bilan yozilishi kerak:
F(int n,const char* str)
Agarda funktsiya chaqirishda argumentlar faqat ism bilan berilgan bulsa kelishilgan xolda ular qiymat bilan uzatilgan deb xisoblanadi, faqat massiv va funqtsiyalar manzil bilan uzatilgan deb xisoblanadi.



Yüklə 227 Kb.

Dostları ilə paylaş:
1   ...   5   6   7   8   9   10   11   12   13




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin