Kitob uchta qismdan iborat. "Strukturali dasturlash", "Obyektli-yo’nalishli dasturlash", "Standart kutubxonalar"



Download 333,2 Kb.
bet40/90
Sana10.07.2022
Hajmi333,2 Kb.
#770437
1   ...   36   37   38   39   40   41   42   43   ...   90
Bog'liq
C majmua

Global o'zgaruvchilar

Global o'zgaruvchilar o'sha nomdagi lokal o'zgaruvchilar tavsiflanmagan barcha funksiyalarda ko'riladi, shuning uchun ularni funksiyalar orasida ma'lumotlarni uzatish uchun foydalanish juda oson. Shunga qaramay bu tavsiya etilmaydi, chunki dasturni sozlashni qiyinlashtiradi va umumiy foydalanishdagi kutubxonaga funksiyalarni joylashtirishga to'sqinlik qiladi. Funksiyalar maksimal bog'liq bo'lmasligiga ularning interfeysi to'liq funksiya prototipi bilan aniqlanishiga harakat qilish lozim.




Qaytariluvchi qiymat

Funksiyadan uni chaqiruvchi funksiyaga qaytaruvchi mexanizm


return [ ifoda ];


operator bilan bajariladi.


Funksiya bir nechta return operatorlarni o'z ichiga olishi mumkin (bu algoritm ehtoyoji bilan aniqlanadi). Agar funksiya void kabi tavsiflangan bo'lsa, ifoda ko'rsatilmaydi. return operatorini void tipidagi funksiya uchun agar undan qaytish yopiladigan o'rta qavs oldidan ro'y bersa va main funksiyasi uchun tashlab yuborish mumkin. Bu yerda joyni tejash uchun main funksiyasidagi return operatori ko'rsatilmagan. Shuning uchun misollarni kompilyatsiyalashda ogohlantirish beriladi. returndan so'ng ko'rsatilgan ifoda oshkormas ravishda funksiya qaytaruvchi qiymat tipiga almashtiriladi va funksiyani chaqirish nuqtasiga uzatiladi.

Misollar:


int f1(){return 1; } // to'g'ri


void f2(){return 1; } // noto'g'ri f2 qiymatni qaytarmasligi lozim
double f3(){return 1;} // to'g'ri, 1 double tipiga almashtiriladi


DIQQAT
Fynksiyadan lokal o'zgaruvchiga ko'rsatgichga qaytish mumkin emas, chunki funksiyaga kirishda lokal o'zgaruvchilarga ajratilgan xotira undan qaytarilgandan so'ng tozalanadi.

Misol:

int* f(){
int a = 5;
return &a; // mumkin emas!
}


Funksiya parametrlari

Parametrlar mexanizmi chaqiriladigan va chaqiriluvchi funksiya orasida axborot almashuvining asosiy usuli hisoblanadi. Funksiya tavsifi sarlavhasida sanab o'tilgan parametrlar deb yoki oddiy qilib parametrlar deb, funksiya chaqirish operatorida yozilganlari – faktik parametrlar yoki argumentlar deb ataladi.


Funksiyani chaqirishda birinchi navbatda argumentlar o'rnida turuvchi ifodalar hisoblanadi, so'ngra stekda funksiya formal parametrlariga xotira ularning tipiga mos ajratiladi va ularning har biriga tegishli argument qiymati beriladi. Bunda tiplar mosligi tekshiriladi va zarur bo'lganda ularni almashtirishlar bajariladi. Tiplar mos kelmaganda diagnostik xabar uzatiladi.
Parametrlarni funksiyaga qiymat va manzil bo'yicha uzatishning ikkita usuli mavjud.
Qiymat bo'yicha uzatishda stekka argumentlar qiymatlari nusxalari kiritiladi va bu nusxalar funksiya operatorlari bilan ish ko'radi. Parametrlarning dastlabki qiymatlariga kirish funksiyada yo'q, demak, ularni o'zgartirish imkoniyati yo'q.
Manzil bo'yicha uzatishda stekka argumentlar manzillar nusxalari kiritiladi, funksiya esa bu manzillar bo'yicha xotira yacheykalarga kirishni amalga oshiradi va argumentlar dastlabki qiymatlarini o'zgartirishi mumkin:

#include


void f(int i, int* j, int& k);
int main(){
int i = 1, j = 2, k = 3;
cout <<"i j k\n";
cout << i << ' ' << j << ' ' << k <<'\n';
f(i, &j, k);
cout << i << ' ' << j << ' ' << k;
return 0;
}
void f(int i, int* j, int& k){
i++; (*j)++; k++;
}

Dasturlarning oxirgi natijasi:


i j k
1 2 3


1 3 4

Birinchi (i) parametr qiymati bo'yicha uzatiladi. Uning funksiyada o'zgarishi berilgan qiymatga ta'sir etmaydi. Ikkinchi (j) parametr ko'rsatgich yordamida manzilga jo'natiladi, bunda faktik parametr adresini funksiyaga berish uchun adres olish amalidan foydalaniladi. Uning funksiyadagi qiymatini olish uchun qayta nomlash amali talab etiladi. Uchinchi (k) parametr murojaat yordamida manzilga uzatiladi.


Funksiyaga murojaat bo'yicha uzatishda chaqiriqda ko'rsatilgan parametr adresi uzatiladi, funksiya ichida parametrga barcha murojaatlar qayta nomlanadi. Shuning uchun ko'rsatgichlar o'rnida murojaatlardan foydalanish dasturning o'qilishini yaxshilaydi, adres olish va qayta nomlash amallar qo'llash zaruratidan qutqaradi. Qiymat bo'yicha uzatish o'rniga murojaatlardan foydalanish samaraliroq, chunki parametrlarni nusxalashni talab etmaydi, bu esa katta hajmdagi ma'lumotlar strukturalarni uzatishda ahamiyatga ega.
Agar funksiya ichida parametr o'zgarishini man qilish talab qilinsa, const modifikatoridan foydalaniladi:

int f(const char*);


char* t(char* a, const int* b);



Download 333,2 Kb.

Do'stlaringiz bilan baham:
1   ...   36   37   38   39   40   41   42   43   ...   90




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