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


O'zgaruvchan sondagi parametrlar funksiyalari



Download 333,2 Kb.
bet43/90
Sana10.07.2022
Hajmi333,2 Kb.
#770437
1   ...   39   40   41   42   43   44   45   46   ...   90
Bog'liq
C majmua

O'zgaruvchan sondagi parametrlar funksiyalari

Agar funksiyaning formal parametrlar ro'yxati ko'p nuqta bilan tugasa, bu uni chaqirishda bu joyda yana bir nechta parametrlarni ko'rsatish mumkinligini bildiradi. Bu parametrlar uchun tiplar mosligini tekshirish bajarilmaydi, char va shortlar int kabi, float esa – double kabi uzatiladi. Misol sifatida prototipi


int printf(const char*, …);


ko'rinishga ega printf funksiyani keltirish mumkin.


Bu funksiyani chaqirish hech bo'lmaganda char* tipidagi parametrlarni o'z ichiga olishi va boshqa parametrlarni yo o'z ichiga olishi yoki olmasligi mumkin:

prinf("Dastlabki ma'lumotlarni kiriting"); // bir paremetr


prinf("Yig'indi: %5.2f so'm", sum); // ikkita paremetr
printf("%d %d %d %d", a, b, c, d); // beshta paremetr

Funksiya ichiga majburiy bo'lmagan parametrlarga kirish uchun sarlavhali faylda joylashgan va_start, va_arg va va_end kutubxonalari makroslaridan foydalaniladi.


Kompilyator tiplar nazorati uchun axborotga ega bo'lmagani uchun o'zgaruvchan sonli parametrlarga ega funksiya o'rniga jimlik bo'yicha parametrlardan yoki yuklanishi ortib ketgan funksiyalardan foydalansh afzalroq, vaholanki o'zgaruvchan sonli parametrlar bo'lgan holler yaxshi yechim hisoblanadi.


Rekursiv funksiyalar

Rekursiv deb o'z-o'zini chaqiradigan funksiyaga aytiladi. Bunday rekursiya to'g'ri deb ataladi. Yana bilvosita rekursiya ham mavjud, unda ikki va undan ortiq funksiyalar bir-birini chaqiradi. Agar funksiya o'zini chaqirsa, stekda uning parametrlar qiymatlari odatdagi funksiyani chaqirishdagi kabi nusxasi saqlanadi va shundan so'ng boshqaruv funksiyaning birinchi bajariluvchi operatoriga uzatiladi. Takroriy chaqirishda bu jarayon takrorlanadi. Ravshanki hisoblashlarni tugallash uchun har bir rekursiv funksiya qaytish operatori bilan tugallanuvchi hech bo'lmaganda algoritmning rekursiv bo'lmagan tartibini o'z ichiga olishi lozim. Funksiya tugaganda stekning mos qismi tozalanadi va boshqaruv rekursiv chaqiruvdagi keyin keladigan nuqtada bajarilishini davom ettiriladigan chaqiriluvchi funksiyaga uzatiladi.


Rekursiv funksiyaning klassik misoli bo'lib, faktorialni hisoblash hisoblanadi (bu faktorialni xuddi shunday hisoblash kerak degani emas). Buning uchun n sonining faktorialini toppish uchun n chi (n-1) conining faktorialiga ko'ytirish talab etiladi. Ma'lumki, 0!=1 va 1!=1.

long fact(long n){


if (n==0 | | n==1) return 1;
return (n * fact(n – 1));
}

O'shani qisqaroq yozish mumkin:


long fact(long n){


return (n>1) ? n * fact(n – 1) : 1;
}

Rekursiv funksiyalar ko'proq rekursiv algoritmlar kompakt amalga oshirish uchun hamda rekursiv tavsiflangan ma'lumotlar strukturalari bilan, masalan, ikkilik daraxtlarga ega strukturalar bilan ishlash uchun qo'llaniladi. Ixtiyoriy rekursiv funksiyani rekursiyani qo'llamasdan amalga oshirish mumkin, buning uchun dasturchi barcha zarur ma'lumotlarni saqlashni mustaqil ta'minlashi lozim. Rekursiya afzalligi kompakt yozuv hisoblanadi, kamchiliklari-funksiya takroriy chaqirishlariga vaqt va xotirani sarflash va unga parametrlar nusxalarini uzatish va asosiysi, stekni to'lib ketish xavfi.





Download 333,2 Kb.

Do'stlaringiz bilan baham:
1   ...   39   40   41   42   43   44   45   46   ...   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