C++ 3-darslik funksiyalar


KO'RSATKICHLAR VA FUNKSIYA CHAQIRIQLARIDA ULARNING QO'LLANILISHI


Download 47.74 Kb.
bet14/18
Sana08.01.2022
Hajmi47.74 Kb.
#252340
1   ...   10   11   12   13   14   15   16   17   18
Bog'liq
C da matematik funksiyalar

KO'RSATKICHLAR VA FUNKSIYA CHAQIRIQLARIDA ULARNING QO'LLANILISHI

 C/C++ da funksiya chaqirig'iga kirish parametrlarini berishning ikki usuli bordir. Birinchi usul qiyamat bo'yicha chaqiriq (call-by-value) deyiladi. Ikkinchi usul ko'rsatkich bo'yicha chaqiriq (call-by-reference) deb nomlanadi. Hozirgacha yozgan hamma funksiyalar qiymat bo'yicha chaqirilardi. Buning ma'nosi shuki, funksiyaga o'zgaruvchining o'zi emas, balki uning nushasi argument sifatida beriladi. Buning afzal tomoni shundaki, o'zgaruvchi qiymatini funksiya ichida o'zgartirish imkoni yo'qdir. Bu esa havfsizlikni ta'minlaydi. Ammo, agar o'zgaruvchi yoki ifoda hotirada katta joy egallasa, uning nushasini olish va funksiyaga argument sifatida berish sezilarli vaqt olishi mumkin. 

Ko'rsatkich bo'yicha chaqiriqda o'zgaruvchi nushasi emas, uning o'zi argument sifatida funksiyaga uzatilinadi. Bu chaqiriqni bajarishning ikki usuli mavjud. Bittasini biz hozir ko'rib chiqamiz, ikkinchi usulni esa keyinroq. Hozir o'tadigan ko'rsatkichni o'zbekchada &-ko'rsatkich (AND ko'rsatkich - reference) deb ataylik. Ikkinchi tur ko'rsatkichning esa inglizcha nomlanishini saqlab qo'laylik, yani pointer (ko'rsatkich) deb nomlaylik. Bu kelishishdan maqsad, inglizchadagi reference va pointer so'zlar o'zbekchaga ko'rsatkich deb tarjima qilinadi. Bu ikki ifodaning tagida yotuvchi mehanizmlar o'zhshash bo'lishlariga qaramay, ularning qo'llanishlari farqlidir. Shuning uchun ularning nomlanishlarida chalkashlik vujudga kelmasligi kerak. 

 Etkanimizdek, ko'rsatkich bo'yicha chaqiriqda o'zgaruvchining o'zi parametr bo'lib funksiyaga beriladi. Funksiya ichida o'zgaruvchi qiymati o'zgartirilishi mumkin. Bu esa havfsizlik muammosini keltirb chiqarishi mumkin. Chunki aloqasi yo'q funksiya ham o'zgaruvchiga yangi qiyamat berishi mumkin. Bu esa dastur mantig'i buzilishiga olib keladi. Lekin, albatta, bilib ishlatilsa, ko'rsatkichli chaqiriq katta foyda keltirishi mumkin.  &-ko'rsatkichli parametrni belgilash uchun funksiya prototipi va aniqlanishida parametr tipidan keyin & belgisi qo'yiladi. Funksiya chaqirig'i oddiy funksiyaning ko'rinishiga egadir. Pointerlarni qo'llaganimizda esa funksiya chaqirig'i ham boshqacha ko'rinishga egadir. Ammo pointerlarni keyinroq ko'rib

chiqamiz.

Bir misol keltiraylik.

//Qiymat va &-ko'rsatkichli chaqiriqlarga misol

# include

int qiymat_10(int);            //e'lon

int korsatkich_10(int &);      //e'lon

int f, g;

int  main(){

   f = g = 7;  

   cout << f << endl;

   cout << qiymat_10(f) << endl;

   cout << f << endl << endl;

   cout << g << endl;

   cout << korsatkich_10(g) << endl; //chaqiriq ko'rinishi o'zgarmaydi 

   cout << g << endl;

  return (0);

}

int qiymat_10(int k){



   return ( k * 10 );

}

int korsatkich_10(int &t){



   return ( t * 100 );

}

 Ekranda:



7

70

7



7

700


700

 

Bu yerda g o'zgaruvchimiz korsatkich_10(int &) funksiyamizga kirib chiqqandan so'ng qiymati o'zgardi. Ko'rsatkich bo'yicha chaqiriqda kirish argumentlaridan nusha olinmaydi, shu sababli funksiya chaqirig'i ham juda tez bajariladi.  &-ko'rsatkichlarni huddi oddiy o'zgaruvchilarning ikkinchi ismi deb qarashimiz mumkin. Ularning birinchi qo'llanilish yo'lini - funksiya kirish parametrida ishlatilishini ko'rib chiqdik. &-ko'rsatkichni blok ichida ham ko'llasak bo'ladi. Bunda bir muhim marsani unutmaslik kerakki &-ko'rsatkich e'lon vaqtida initsalizatsiya qilinishi kerak, yani ayni tipda bo'lgan boshqa bir oddiy o'zgaruvchi unga tenglashtirilishi kerak. Buni va boshqa tushunchalarni misolda ko'rib chiqaylik.



 //const ifodasi bilan tanishish;

//&-ko'rsatkichlarning ikkinchi qo'llanilish usuli

 # include

 void printInt(const int &); //funksiya prototipi

 

double d = 3.999;



int j = 10;

int main()

{

   double &rd = d; //d ga rd nomli &-ko'rsatkich



   const int &crj = j; //const ko'rsatkich

   const short int k = 3; //const o'zgaruvchi - konstanta

   cout << rd << endl;

   printInt(j);

   printInt(crj);

   return (0);

}

void printInt(const int &i) //...int& i... deb yozish ham mumkin;



{                           //kirish argumenti const dir

   cout << i << endl;

   return;

}

 Ekranda:



3.999

10

 



Ko'rganimizdek, rd ko'rsatkichimiz d o'zgaruvchi qiymatini ekranga bosib chiqarish imkonini beradi. Ko'rsatkich o'rqali o'zgaruchining qiymatini ham o'zgartirsa bo'ladi. &-ko'rsatkichning asosiy hususiyati shundaki mahsus sintaksis - & belgisining qo'yilishi faqat ko'rsatkich e'lonida qo'llaniladi halos. Dastur davomida esa oddiy o'zgaruvchi kabi ishlov ko'raveradi. Bu juda qulaydir, albatta. Lekin ko'rsatkich ishlatilganda ehtiyot bo'lish kerak, chunki, masalan, funksiya tanasi ichida argumentning nushasi bilan emas, uning o'zi bilan ish bajarilayatganligi esdan chiqishi mumkin.   


Download 47.74 Kb.

Do'stlaringiz bilan baham:
1   ...   10   11   12   13   14   15   16   17   18




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling