Nabiyev Doniyorning “Dasturlash I” fanidan


Qayta yuklanuvchi funksiyalar


Download 128.92 Kb.
bet5/5
Sana04.02.2023
Hajmi128.92 Kb.
#1160987
1   2   3   4   5
Bog'liq
Mustaqil ish - 732-21-guruh talabasi Nabiyev Doniyor

Qayta yuklanuvchi funksiyalar

Ayrim algoritmlar berilganlarning har xil turdagi qiymatlari uchun qo‘llanishi mumkin. Masalan, ikkita sonning maksimumini topish algoritmida bu sonlar butun yoki haqiqiy turda bo‘lishi mumkin. Bunday hollarda bu algoritmlar amalga oshirilgan funksiyalar nomlari bir xil bo‘lgani ma’qul. Bir nechta funksiyani bir xil nomlash, lekin har xil turdagi parametrlar bilan ishlatish funksiyani qayta yuklash deyiladi.


Kompilyator parametrlar turiga va soniga qarab mos funksiyani chaqiradi. Bunday amalni «hal qilish amali» deyiladi va uning maqsadi parametrlarga ko‘ra aynan (nisbatan) to‘g‘ri keladigan funksiyani chaqirishdir. Agar bunday funksiya topilmasa kompilyator xatolik haqida xabar beradi. Funksiyani aniqlashda funksiya qaytaruvchi qiymat turining ahamiyati yo‘q.
Agar funksiya chaqirilishida argument turi uning prototipidagi xuddi shu o‘rindagi parametr turiga mos kelmasa, kompilyator uni parametr turiga keltirilishga harakat qiladi – bool va char turlarini int turiga, float turini double turiga va int turini double turiga o‘tkazishga.
Qayta yuklanuvchi funksiyalardan foydalanishda quyidagi qoidalarga rioya qilish kerak:
-qayta yuklanuvchi funksiyalar bitta ko‘rinish sohasida bo‘lishi kerak;
-qayta yuklanuvchi funksiyalarda kelishuv bo‘yicha parametrlar ishlatilsa, bunday parametrlar barcha qayta yuklanuvchi funksiyalarda ham ishlatilishi va ular bir xil qiymatga ega bo‘lish kerak;
-agar funksiyalar parametrlarining turi faqat “const” va ‘&’ belgilari bilan farq qiladigan bo‘lsa, bu funksiyalar qayta yuklanmaydi.
Rekursiv jarayonlarni tashkil etish

Funksiya o’ziga o’zi to’g’ridan-to’g’ri yoki qandaydir vosita orqali murojat qilish jarayoniga rekursiya va bunday funksiya rekursiv funksiya deyiladi.


Har qanday to’g’ri tuzilgan rekursiya asosini ikkita shart tashkil qiladi.
1.Rekursiya asos sharti
2.Funksiyaning o’ziga o’zlashtirilgan argument bilan murojaat qilish.
Rekursiv funksiya qaysidir vaqta kelib o’ziga murojaat qilishni to’xtatishi kerak bo’ladi. Aynan shu narsani rekursiya asos sharti ta’minlab beradi.
Keyingi shartda o’zgartirilgan argument deganda, odatda masala boshidagi argumentdan kichikroq argument tushiniladi (ba’zi hollarda kattaroq bo’lishi mumkin). Bu narsa ham juda muhim, chunki bir xil argument bilan qayta-qayta murojaat qilinganda yoki argument notog’ri o’zgartirilganda funksiya o’zini cheksiz marta chaqirishiga to’g’ri kelib qoladi.
Nima uchun rekursiya kerak?
Aslini olganda, har qanday rekursiv ishlangan masalani iterativ usulda ishlash mumkin va buning aksi ham to’g’ri. Buning ustiga rekursiv yechim har doim xotiradan qo’shimcha joy talab qiladi. Shunday ekan, nima uchun unda rekursiya kerak? Albatta, buning yetarlicha sabablari bor:
Aksariyat tuzilmalar va algoritmlarni rekursiyasiz tasavvur qilib bo’lmaydi. 
Tree, Graph, Heap, QuickSort, MergeSort, … Bu ro’yhatni juda uzoq davom ettirish mumkin. Ayniqsa, murakkab tuzilmalar bo’lgan Tree va Graphlarda rekursiya har qadamda uchraydi. Dasturchilikni esa ularsiz tasavvur qilib bo’lmaydi, bu esa o’z o’rnida rekursiya qanchalik muhimligini belgilab beradi.
Yana bir qiziq ma’lumot, shunday dasturlash tillari borki ularda umuman takrorlanish operatorlari yo’q va bu borada butunlay rekursiyaga tayanadi. Haskell va Erlang shular jumlasidan.
Funktsiya to‘g‘ri rekursiv deyilаdi, аgаr tаnаsidа o‘zigа murоjааt bo‘lsа. Funktsiya bоshqа funktsiyani chаqirsа vа bu funktsiya o‘z nаvbаtidа birinchi funksiyani chaqirsa, bundаy funktsiya nisbiy rekursiv deyilаdi.
Rekursiyani qo‘llаshgа klаssik misоllаr – dаrаjаgа оshirish vа sоn fаktоriаlini hisoblаsh. Bu misоllаr rekursiyani tushuntirish qulаy bo‘lgаni uchun klаssik hisoblаnаdi.

Fibonachi sonini hisoblash algaritmini ko’rib chiqamiz;


Natija:
n=1
0
n=2
1
n=3
1
n=4
2
n=5
3

Sonning factorialini topish algaritmini ko’rib chiqamiz;


Natija:
1!=1
2!=2
3!=6
4!=24
5!=120
6!=720

Misol. Rekursiv funksiyadan foydalangan holda ikkita sondan raqamlari yig‘indisi katta bo‘lgan sonni topuvchi dastur tuzing.


Natija:
4 9
9
5
5

Misol. Qurbaqa har kuni oldingi kunga qaraganda 20% ko’proq va yana 2 ta chivin yeydi. Agar qurbaqa birinchi kunda 12 ta chivin yegan bo’lsa, u holda necha kundan keyin yeyilgan chivinlar soni 100 tadan oshishini aniqlovchi dastur tuzing.


Natija:
10

Foydalanilgan adabiyotlar





  • Информатика: учебник – 3-е переработанное издание/ под ред. Н.В. Макаровой.- М: Финансы и статистика, 2004. – 768 с.




  • Страуструп Б. Язык программирования C++. Специальное издание. Пер. с англ. – М.: ООО «Бином-Пресс», 2006 г. – 1104 с.: ил.



  • Xudoyberdiyev M.X., Akbaraliyev B.B. “Ma‟lumotlat tuzilmasi va algoritmlar” fanidan amaliy mashg’ulotlar uchun topshiriqlar (uslubiy ko’rsatmalari bilan). Toshklent, 2013-y.

Download 128.92 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5




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