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



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

FUNKSIYALAR


Funksiyalarni e'lon qilish va tavsiflash

Funksiya – bu qandaydir tugallangan amalni bajaruvchi nomlangan tavsiflar va operatorlar ketma-ketligi. Funksiya parametrlarni qabul qilishi va qiymatni qaytarishi mumkin.


C++ dagi ixtiyoriy dastur ulardan bittasi main degan nomga ega bo'lishi lozim bo'lgan (undan dasturni bajarish boshlanadi) funksiyalardan iborat. Funksiya chaqirish momentida bajarila boshlaydi. Ixtiyoriy funksiya e'lon qilinishi va ta'riflanishi lozim. Boshqa miqdorlar kabi e'lon bir nechta, ta'riflash esa bitta bo'ladi. Funksiyaning e'loni kompilyator chaqirish to'g'riligini tekshirishni amalga oshirishi uchun matnda uni chaqirishdan oldin joylashishi lozim.
Funksiyani e'lon qilish (prototip, sarlavha, signatura) uning nomini, qaytariladigan qiymat tipini beradi. Funksiya ta'rifi, e'londan tashqari o'rta qavslarda operator va tavsiflar ketma-ketligidan iborat funksiya jismidan iborat:

[ sinf ] tip nomi ([ parametrlar ro'yxati ]) [throw ( yo'qotishlar )]


{ funksiya jismi }

Ta'rifning tarkibiy qismlarini qaraymiz.



  • Majburiy bo'lmagan modifikator yordamida sinfni extern va static tayanch so'zlaridan foydalanib funksiyaning ko'rinish sohasini oshkora berish mumkin:

  • extern – dasturning barcha modullarida global ko'rinishi (jimlik bo'yicha);

  • static – funksiya aniqlangan faqat chegaralardagi ko'rinishi;

  • Funksiya bilan qaytariluvchi qiymat tipi massiv va funksiyadan tashqari ixtiyoriy bo'lishi mumkin (massiv yoki funksiyaga ko'rsatgich bo'lishi mumkin). Agar funksiya qiymatni qaytarmasligi lozim bo'lsa, void tipi ko'rsatiladi.

  • Parametrlar ro'yxati funksiyaga uni chaqirishda talab etiladigan miqdorlarni aniqlaydi. Parametrlar ro'yxati elementlari vergullar bilan ajratiladi. Funksiyaga uzatiluvchi har bir parametr uchun uning tipi va nomi (e'londa nomlar tashlab yuborish mumkin) ko'rsatiladi.

Ta'rifda va e'londa va bitta funksiyani chaqirishda parametrlar tiplari va joylashish tartibi ustma-ust tushishi mumkin. Moslik bo'yicha parametrlar nomlariga cheklovlar qo'yilmaydi, chunki funksiyani turli argumentlar bilan chaqirish mumkin, prototiplarda nomlar kompilyator tomonidan inkor etiladi (ular faqat dasturning o'qilishini yaxshilash uchun xizmat qiladi).


Funksyani inline modifikator yordamida ichga qurilgan kabi aniqlash mumkin, u kompilyatorga funksiyaga murojaat qilish o'rniga uni bevosita har bir chaqirish nuqtasiga joylashtirishni tavsiya qiladi. inline modifikator funksiya tipi oldiga qo'yiladi. U chaqirishga qo'shimcha sarflarni (registrlarni saqlash va tiklash, boshqaruvni uzatish) pasaytirish maqsadida qisqa funksiyalar uchun qo'llaniladi. inline direktiva tavsiya xarakterga ega va kompilyator yomonidan imkoniyat darajasida bajaradi. inline – funksiyalardan foydalanish bajariluvchi dastur hajmini oshiradi. Funksiya ta'rifi uni chaqirishlardan oldin kelishi lozim, aks holda inline – kengaytma o'rniga kompilyator odatdagi chaqiriqni hosil qiladi.
Qaytariluvchi qiymat tipi va parametr tiplarga birgalikda funksiya tipini aniqlaydi.
Oddiy holda funksiyani chaqirish uchun uning nomini ko'rsatish lozim, undan keyin qavslarda vergullardan foydalanib, uzatilayotgan argumentlar nomlari sanab o'tiladi. Funksiyani chaqirish dasturning ixtiyoriy joyida joylashishi mumkin, bu yerda funksiya shakllantiradigan sintaksis bo'yicha yo'l qo'yiladigan o'sha tip ifodalanadi. Agar funksiya bilan qaytariladgan qiymat tipi void bo'lmasa, u ifodalar tarkibiga kirishi mumkin yoki xususiy holda, qiymat berish operatori o'ng qismida joylashishi mumkin.

Ikkita butun miqdor yig'indisini qaytaruvchi funksiyaga misol:


#include


int sum(int a, int b); // funksiyani e’lon qilish
int main () {
int a = 2, b = 3, c, d;
c = sum(a, b); // funksiyani chaqirish
cin >> d;
cout << sum (c, d); // funksiyani chaqirish
return 0;
}
int sum(int a, int b) { // funksiya ta'rifi
return (a + b);
}

Ekranga unga berilgan struktura maydonini chiqaruvchi funksiyaga misol:


#include


struct Worker{
char fio[30];
int date, code;
double salary;
};
void print_worker(Worker); // funksiya e'loni
int main (){
Worker staff[100];
_ /* staff massivni shakllantirish */

for (int i = 0; i<100; i++)print_worker(staff[i]); // funksiyani chaqirish


return 0;
}
void print_worker(Worker w){ // funksiya ta'rifi
cout << w.fio <<‘ ‘<}

Funksiya ichida tavsiflangan barcha miqdorlar hamda uning parametrlari lokal deb hisoblanadi. Ularning amal qilish sohasi funksiyadan iborat, funksiyani chaqirishda ixtiyoriy blokka kirishdagi kabi stekda lokal avtomatik o'zgaruvchilarga xotira ajratiladi. Bundan tashqari, srekda funksiyani chaqirishdan oldin momentda prossessor registrlar ichidagilar va funksiyadan qaytish adresi saqlanadi, chunki undan chiqishda chaqiriluvchi funksiyani bajarilishini davom ettirish imkoniyati bo'lishi lozim.


Funksiyadan chiqishda stekning mos qismi tozalanadi, shuning uchun bir funksiyani chaqirishlari orasida lokal o’zgaruvchilar qiymatlari saqlanmaydi. Agar bundan qutilish talab etilsa, lokal o'zgaruvchilarni e'lon qilishda static modifikatordan foydalaniladi:

#include


void f(int a){
int m = 0;
cout << “n m p\n”;
while (a--){
static int n = 0;
int p = 0;
cout << n++ << ' ' << m++ << ' ' << p++ << '\n';
}
}
int main(){ f(3); f(2); return 0; }

n statik o'zgaruvchi ma'lumotlar segmentida joylashtiriladi va uning ta'rifida joylashgan operatorni birinchi bajarishda bir marta initsializatsiyalanadi. Avtomatik n o'zgaruvchi funksiyaga har bir kirishda initsializatsiyalanadi. Avtomatik p o'zgaruvchi sikl blokiga har bir kirishda initsializatsiyalanadi. Dastur ekranga quyidagicha chiqaradi:


n m p
0 0 0


1 1 0
2 2 0
n m p
3 0 0
4 1 0

Funksiyaning birgalikdagi ishida axborot almashinishi lozim. Buni global o'zgaruvchilar yordamida parametrlar orqali va funksiyalar orqali amalga oshirish mumkin.





Download 333,2 Kb.

Do'stlaringiz bilan baham:
1   ...   35   36   37   38   39   40   41   42   ...   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