R. A. Ro‘ziyev, U. M. Mirsanov, F. J. Toxirov, L. S. Isroilova, H. N. Arziqulov


-misol. Argumentlari bo‘lmagan va hech qanday qiymat o‘zlashtirmaydigan funk()


Download 1.27 Mb.
bet20/45
Sana14.10.2023
Hajmi1.27 Mb.
#1703549
1   ...   16   17   18   19   20   21   22   23   ...   45
Bog'liq
C qo`llanma 29.06

1-misol. Argumentlari bo‘lmagan va hech qanday qiymat o‘zlashtirmaydigan funk() funksiyasi yaratilsin. Ushbu funksiya chaqirilganda, ekranda "Navro‘zi olam muborak" jumlasi paydo bo‘lsin.
#include
using namespace std ;
void funk () //funksiyasi tavsiflash
{
cout << "Navro‘zi olam Muborak, " ;
}
int main()
{
funk () ; // Funksiyani chaqirish.
cout <<"talabalar! " << endl ;
funk () ; // Funksiyani chaqirish.
cout <<"ustozlar! " << endl ;
}
Ushbu dastur bajarilishi natijasida quyidagi ikkita satr paydo bo‘ladi:
Navro‘zi olam Muborak, talabalar!
Navro‘zi olam Muborak, ustozlar!
Funksiya tanasida tavsiflangan o‘zgaruvchilar va argumentlar ro‘yxatidagi o‘zgaruvchilar lokal hisoblanadi. Masalan, agar dastur beshta turli funksiyalardan iborat bo‘lib, bu funksiyalarda bir xil N o‘zgaruvchi tavfislangan bo‘lsa, u holda C ++ dasturlash tili uchun bular besh xil o‘zgaruvchilar hisoblanadi. Lokal o‘zgaruvchilarning qiymatlari faqat funksiya tanasida saqlab qolinadi. Bitta funksiyaga takroran qayta murojaatlar o‘rtasida lokal o‘zgaruvchilarning qiymatlari saqlanib qolmaydi. Barcha funksiyalardan oldin e’lon qilingan va ixtiyoriy funksiyada foydalanish mumkin bo‘lgan o‘zgaruvchilar global deb nomlanadi. Agar global o‘zgaruvchi bilan bir xil nomdagi lokal o‘zgaruvchi e’lon qilinmagan bo‘lsa, funksiyalarda global o‘zgaruvchini ajratish mumkin.
Ma’lumotlarni funksiyalar o‘rtasida uzatish uchun global o‘zgaruvchilar ishlatiladi, ammo bu dasturni ishlash tezligini sekinlashtiradi. Funksiyalar o‘rtasida ma’lumot almashish uchun funksiya o‘zlashtiradigan qiymatlar va parametrlardan foydalaniladi.
Funksiya parametrlari
Murojaat qilinayotgan va murojaat qiluvchi funksiyalar o‘rtasida, ma’lumot almashinish jarayoni, parametrlarni uzatish mexanizmi yordamida amalga oshiriladi. Funksiya sarlavhasida yozilgan o‘zgaruvchilar ro‘yxati rasmiy (formal) parametrlar yoki shunchaki funksiya parametrlari deb ataladi. Funksiyani chaqirish operatoridagi o‘zgaruvchilar ro‘yxati – bu haqiqiy parametrlar yoki argumentlar deyiladi.
Parametrlarni uzatish mexanizmi, rasmiy va haqiqiy parametrlarga almashtirishni hamda funksiyani har xil qiymatlar bilan bajarilishini ta’minlaydi.
Funksiyani chaqirish operatoridagi parametrlar va funksiya sarlavhasidagi parametrlar o‘rtasida birma-bir mosliklar tekshiriladi. Bunda rasmiy va haqiqiy parametrlarning soni, turlari va tartibi bir xil bo‘lishi lozim.
Funksiyalarda parametrlar quyidagi tartibda uzatiladi: 1. Haqiqiy parametrlar o‘rnida bo‘lgan ifodalar aniqlanadi; 2. Xotirada rasmiy parametrlar uchun ularning tipiga mos bo‘lgan joy ajratiladi; 3. Rasmiy parametrlarga haqiqiy qiymatlar beriladi; 4. Tiplar mosligi tekshiriladi va agar lozim bo‘lsa konvertatsiya qilinadi.
Parametrlar funksiyaga qiymat va manzil bo‘yicha ham uzatilishi mumkin. Ma’lumotlarni qiymat bo‘yicha uzatishda funksiya haqiqiy parametrlarning nusxalari bilan ishlaydi va u argumentlarning joriy qiymatlariga kirish huquqiga ega bo‘lmaydi.
Ma’lumotlarni manzil bo‘yicha uzatishda funksiyaga o‘zgaruvchilar emas, balki uning manzili uzatiladi. Bunda funksiya argumentlarning qiymatlari saqlanadigan xotira katakchalariga kirish huquqiga ega bo‘ladi.
Funksiya manzil bo‘yicha uzatilgan ma’lumotlardan farqli ravishda, qiymat bo‘yicha uzatilgan ma’lumotlarni o‘zgartira olmaydi.
Agar funksiya ichidagi parametrni o‘zgartirishni taqiqlash talab etilsa, const xizmatchi so‘zidan foydalaniladi. Funksiya sarlavhasi umumiy holda quyidagicha yoziladi:
funksiya_tipi funksiya_nomi (const o‘zgaruvchi_tipi* o‘zgaruvchi_nomi, ...)
Masalan:
#include
using namespace std ;
int funk1 ( int i ) //ma’lumotlar qiymat bo‘yicha uzatiladi
{ return( i++);
}
int funk2 ( int∗ j ) // ma’lumotlar manzil bo‘yicha uzatiladi. Bunda * yo‘naltirish amalidan foydalaniladi
{ return((∗ j )++);
}
int funk3 (const int∗ k) // parametr qiymati o‘zgartirilmaydi
{ return((∗k)++);
}
int main()
{
int a ; cout<<"a=" ; cin>>a ;
funk1 (a) ; cout<<"a="<
funk2(&a) ; //manzil olish & amalidan foydalaniladi
cout<<"a="<
funk3(&a) ; cout<<"a="<
return 0;
}
Ushbu dastur kodida quyidagi natijalar paydo bo‘ladi:
a=5
a=5
a=6
a=6
Agar funksiyaga murojaat qiluvchi dasturdagi o‘zgaruvchilar qiymatlarini o‘zgartirish talab etilsa, ma’lumotlarni manzil bo‘yicha uzatish qulay hisoblanadi.

Download 1.27 Mb.

Do'stlaringiz bilan baham:
1   ...   16   17   18   19   20   21   22   23   ...   45




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