Mavzu: Rekursiv algoritmlar. Navbat,stek,dek Stek tuzilmasi va uni dasturda amalga oshirish, ustida amal bajarish



Download 2 Mb.
bet5/5
Sana15.01.2022
Hajmi2 Mb.
#367844
1   2   3   4   5
Bog'liq
2 5325975299211400446

#include

Deque dek1;
Dek ustida bajariladigan amallar:

        • boshidan element kiritish. Push_front()

        • Oxiridan element kiritish. Push_back()

  • boshidan element chiqarish. pop_front()

  • oxiridan element chiqarish. Pop_back()

  • Empty() – bo’shlikka tekshirish.

Dekka oid misol keltiramiz:

#include

#include

int main (){

std::deque mydeque (2,100); // two ints with a value of 100

mydeque.push_front (200);

mydeque.push_front (300);

std::cout << "mydeque contains:";

for (std::deque::iterator it = mydeque.begin(); it != mydeque.end(); ++it)

std::cout << ' ' << *it;

std::cout << '\n';

return 0;

}

Natija:



300 200 100 100
Rekursiya xaqida tushuncha

Yangi obyekt yoki tushunchalarga aniq izoh kiritishning eng asosiy qoidalaridan biri bu uning ta’rifida sizga avvaldan ma’lum va tushunarli bo’lgan atamalardan foydalanib ta’rif berishdir. Shuning uchun, ta’riflarda asosano’z doirasidan chetda bo’lgan so’zlarni qo’llash noto’g’ri. Boshqa tomondan, o’z-o’zini izohlovchi dasturiy tushunchalar juda ko’p.Bunday ta'riflar rekursiv ta'riflar deb ataladi va asosan cheksiz to'plamlarga ta'rif berilganda foydalaniladi. Bunday to'plamga ta'rif berilganda, barcha elementlar ro'yhatini berish imkonsiz, va juda kata aniq to’plamlar uchun samarasiz. Shuning uchun, eng qulay usul bu obyekt o'sha to'plamga tegishli yoki tegishli emasligini aniqlash. Rekursiv ta'riflar ikki qismdan iborat. Birinchi qismida, to'plamning asos qilib olingan elementlari joylashtiriladi.Ikkinchi qismida, asos qilib olingan yoki avval foydalanilgan elementlardan foydalanilmagan holda yangi obyektlar yaratish uchun qoidalar beriladi.Bu qoidalarga yangi obyektlarni yaratishda qayta-qayta murojaat etiladi. Misol uchun, natural sonlar to'plamini yaratish uchun, bir asos element, 0, bir tomonlama, va 1 bo'yicha inkrementlash jarayoni quyidagicha beriladi:

1. 0 ∈ N; 4

2. agar n ∈ N bo'lsa, keyin (n + 1) ∈ N;

3. N to'plamda boshqa obyektlar yo'q.

Bu qoidalarga ko'ra, natural sonlar to'plami N quyidagi birliklardan tashkil topgan: 0, 0 + 1, 0 + 1 + 1, 0 + 1 + 1 + 1, va h.k. N to'plam biz natural sonlar deb atovchi obyektlarni o'z ichiga olar ekan, ta'rifga ba'zi betartib(beso'naqay) elementlar ro'yhati ham kiradi. Siz murakkab sonlar ustida maxsus spetsifikatsiyadan foydalanib arifmetik amallar bajarishni tasavvur qila olasizmi?

Shu sababli, quyidagi Arab raqamlaridan tashkil topgan ma'lum chegarali miqdorlardan foydalanaib izoh keltirish qulayroq:

1. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ∈ N;

2. agar n ∈ N bo'lsa, so'ng n0, n1, n2, n3, n4, n5, n6, n7, n8, n9 ∈ N;

3. bular natural sonlar hisoblanadi.

Demak, N asos qilib olingan 0 dan 9 gacha bo'lgan sonlardan tuzilgan kombinatsiyalardan tuzilgan sonlarni ham o'z ichiga qamrab olar ekan. Rekursiv ta'riflar ikki xil maqsadda xizmat qiladi: yuqorida qayd etilganidek, yangi elementlar yaratish va tanlangan elemeent shu to'plamga tegishli yoki tegishli emasligini testlab berish. Testlash jarayonida buni hal qilish murakkab bo'ladigan bo'lsa, u son soddaroq ko'rinishga kelmaguncha soddalashtirilib boriladi. Misol uchun, 123 natural sonmi? N to'plamni izohlovchi ta'rifdagi ikkinchi holatga asosan 123 ∈ N bo'ladi, agar 12∈ N va birinchi holatga asosan 3 ∈ N bo'lganda, 12 ∈ N bo'ladi, agar 1 ∈ N va 2 ∈ N bo'lgandava ikkalasi ham Nga tegishli bo'ladi. Berilgan misoldagidek sonni murakkab ko'rinishdan soddaroq ko'rinishga o'tkaza olish ahamiyatli, shu kabi 9.3.3 qismda ko'rib o'tadigan tez saralash usulidan foydalanish samarali. Rekursiv ta'riflar asosan raqamlar ketma-ketligi va funksiyalarni aniqlashda foydalaniladi. Misol uchun, faktorial funksiya ! quyidagi yo'sinda aniqlanishi mumkin.

Bu ta'rifdan foydalanib, biz1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800, . . . sonlarini 0, 1, 2, . . . , 10, . . . raqamlarinining faktoriallarini o'z ichiga oluvchi ketma-ketlikni hozil qilishimiz mumkin.

Keyingi misol

ratsional sonlar ketma-ketligini hosil qiluvchi ta’rifdir.



Ketma-ketliklarning rekursiv ta'riflarining bitta nohush xususiyati mavjud: snketma-ketlikning elementlari qiymatini hisoblash uchun, avvalo, har bir s 1 , . . . , s n–1 larning qiymatlarini hisoblashimiz zarur bo'ladi. Misol uchun,, 3! Ni hisoblash uchun avval 0!, 1!, 2! Larning qiymatini hisoblash kerak. Bu esa ko'p hollarda noqulay vaziyatlarga olib keladi. Shuning uchun, biz bu formulaga ekvivalent bo'lgan formulani topishimiz kerak bo'ladi. Umuman olganda, bunday formulani topish murakkab masala, shunday masalaki, har doim ham o'z yechimiga ega bo'la olmaydigan muammo. Lekin bunday formula rekursiv ta'riflar uchungina mos keladi, chunki bu misolni soddalashtiradi va butun n ning qiymatini 0, 1, . . . , n – 1larning qiymatini bilmay turib hisoblash imkonini beradi. Misol uchun, g ketma-ketlikning ta'rifi:



g(n) = 2 n ko'rinishidagi sodda formulaga aylantirish mumkin bo'lar ekan. Ko'rilgan tahlillar, rekursiv ta'riflarning faqatgina teoretik ko'rinishi bo'lib, bu ta'rifdan matematikada foydalaniladi. Tabiiyki, bizning qiziqishimiz kompyuter sohasida. Dasturlash tillari grammatikasining maxsus bo'limlarida rekursiv ta'riflarga murojaat qilinadi. Grammatika yo blok diagrammalar asosida yo Backus-Naur Formasi(BNF)da aniq belgilanadi. Misol uchun, berilgan biror-bir bayonot C++ dasturlash tilidagi sintaktik tahlilidaquyidagicha blok diagramma orqali tasvirlanishi mumkin:



Tilning bir elementi hisoblanmisho'z-o'ziga murojaat qilishi bilan rekursiv aniqlanadi. Bunday ta'riflar shunday turdagi sintaktik qurilma asosida bayonot yoki atamalarning izohini aniqlashimiz mumkin bo'ladi. Rekusiv ta'riflardan dasturlashda foydalaniladi. Funksiyaning rekursiv izohlaridan foydalanish C++ dasturlash tilida juda qo'l keladi, chunki bu ortiqcha mehnat talab etmaydi.Biz oddiy formal berilgan ta'riflarni C++ tilining sintaksisiga o'girishimiz mumkin. Misol uchun, C++da faktorialga ekvivalent funksiya bu –



unsigned int factorial(unsigned int n) {

if(n==0) return 1; else returnn*factorial(n–1);

}

Muammo juda kritik ko'rinadi, chunki funksiya o'z-o'zini chaqirishi orqali to'g'ri natijani bera olishini tushunish mushkul.

Ko'p kompyuterlarda rekursiyalar uchun steklardan foydalanib qo'llaniladi, rekursiyani amalga oshirishning barcha ishini operatsin sistemada amalga oshiriladi, buning uchun dastur kodida ba'zi belgi;arni kiritish zarurati ham tug'ilmaydi. E. W. Dijkstra tominidan rekursiyani joriy etishda steklardan foydalanish g'oyasini bergan.Rekursiyani va uning qanday ishlashini yaxshiroq tushunish uchun funksiyaga murojaatlar jarayonini o'rganish va Sistema tomonidan amalga oshirilayotgan operatsiyalrni kuzatish ma'qul.

Foydalanilgan adabiyotlar:

1. Akbaraliev B.B. 5521900 “Informatika va axborot texnologiyalari” ta'lim yo'nalishi talabalari uchun “Ma'lumotlar tuzilmasi va algoritmlar” fanidan ma'ruzalar matni, Toshkent, 2008.

2. Xudoyberdiev M.X., Akbaraliev B.B., Yusupova Z.Dj. “Ma'lumotlar tuzilmasi va algoritmlar” fanidan amaliy mashg'ulotlar uchun topshiriqlar(uslubiy ko'rsatmalari bilan).

Toshkent, 2013.



3. Akbaraliev B.B., Yusupova Z.Dj. “Ma'lumotlar tuzilmasi va algoritmlar” fanidan laboratoriya ishlarini bajarish bo'yicha uslubiy ko'rsatma. Toshkent, 2013.
Download 2 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5




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