Algoritmlarni loyihalash va tahlil qilish
Algoritmlarni loyihalash va tahlil qilish MUNDARIJA KIRISH ………………………………………………………………………3 1-BOB. Rekurent nisbatlar (munosabatlar) ning nazariy asoslari ………..4 1.1. Rekurent nisbat haqida umumiy tushunchalar ………………….4 1.2. Rekurent nisbatlarni sozlash ……………………………………..8 2-BOB. Rekurent algoritmlarni ishlab chiqish …………………………...10 2.1. Rekurent algoritmlarni loyihalash ……………………………...10 2.2. Rekerent nisbatlarga misollar …………………………………..13 XULOSA …………………………………………………………………...16 FOYDALANILGAN ADABIYOTLAR RO‘YXATI …………………….17 ILOVALAR ………………………………………………………………..18 1
KIRISH Barcha algoritmik tillarda rekurent nisbatlar va proseduralarni – qismdasturlar ko'rinishida rasmiylashtirilgan operator bloklarini dasturlash imkoniyati mavjud. Rekurent nisbatlar tilning muhim konstruksiyalariga taalluqli bo'lib, uchta muhim masalani yechishga imkon beradi: dastur matnida o'xshash fragmentlarni ko'p martalab takrorlash zaruratidan qutqaradi; dastur tuzilishini yaxshilab, uni tushinishni osonlashtiradi; dasturlash xatolariga va dasturlarni takomillashtirishda kutilmagan oqibatlarga chidamlilikni oshiradi. Kurs ishi mantiqiy va algebraik tafakkur malakalarini rivojlantirishga va Pascal tilida dasturlarni yozishda rekurent nisbatlardan foydalanish imkoniyatlarini o'rganishga yordam beradi. Bu til dasturlash asoslarini o'rgatish uchun bejiz tanlanmagan, chunki Pascal – dastur tuzilishi bevosita masala tuzilishini aks ettirish lozim bo'lgan ko'rinishda “strukturalashgan” dasturlarni yasashga yordam beradigan dasturlash tillaridan biridir. Pascal tilining bu xususiyati hamda uning konstruksiyalarining intuitiv tushunarliligidan uning yetarlicha oddiyligi, bu tilga dasturlash tillari orasida mustaqil o'rinni egallashga imkon beradi. Dasturlashning hozirgi davrdagi yurug'i strukturalashgan dasturlar afzalliklarini tan olinganligidir. Shuning uchun Pascal muhandislar va ilmiy xodimlar tomonidan keng foydalanilmoqda, informatika bo'yicha xalqaro olimpiadalar tili hisoblanadi. Hozirgi paytda bu tilning yetarlicha ko'p talqinlari mavjud. Eng ko'p tarqalgan talqini 1992 yilda Borland International (Borland Pascal 7.0 va Turbo Pascal 7.0) firmasi tomonidan ishlab chiqqan talqini hisoblanadi. Faqat MS DOS oddiy rejimda ishlashga imkon beruvchi Turbo Pascal 7.0 dan farqli Borland Pascal 7.0 uchta ish rejimini o'z ichiga oladi: MS DOS oddiy rejimi, MS DOS himoyalangan rejimi va Windows muhitida. Kurs ishi kirish, ikkita bob, xulosa, foydalanilgan adabiyotlar ro'yxati va ilovalardan iborat. 2
1-BOB. Rekurent nisbatlar (munosabatlar) ning nazariy asoslari 1.1. Rekurent nisbat haqida umumiy tushunchalar Qismdastur tanasida dasturdagi tavsiflangan barcha obyektlarga, shu jumladan qismdasturning o'zining nomiga kirish mumkin. O'z-o'zini chaqirishni foydalanuvchi protsedura va funksiyalar rekurent protsedura va funksiyalar deb ataladi (to'g'ri rekurent). Rekurent – bu hisoblash jarayonini shunday tashkil etish usuliga aytiladiki, bunda uni tashkil etuvchi operatorlarni bajarish jarayonida o'z-o'ziga aylanadi. Tipik rekurent protsedura quyidagi ko'rinishga ega: procedure Rec (n:Integer); begin <rekursiyaga kirish amala> if <shrtni tekshirish> then Rec(n-1); <rekursiyadan chiqish amali> end;xn , bu yerda x – butun son, n – butun nomanfiy son, ni hisoblash rekurent funksiyasiga misolni qaraymiz. Ma'lum faktdan foydalanamiz: x n = ¿{ 1,m= 0da ,¿¿¿¿ function Deg(x, n: integer) :longint; begin if n = 0 then Deg:=1 3
else Deg:=Deg(x, n-1)*x; end; 1.1-rasmda rekurent nisbatlarning to'g'ri va teskari yo'li ko'rsatilgan. Bu holda а o'zgaruvchiga 2 4 qiymat beriladi. Ixtiyoriy rekurent qismdastur norekurent bo'lmagan tarmoq bo'lishi lozim, bizning holda – bu if n = 0 then Deg:=1; Rekurent qismdasturga murojaat ixtiyoriy boshqa qismdasturni chaqirishdan hech qanday farq qilmaydi. Rekurent qismdasturlarni bajarishda «qaytish steki» deb ataluvchi maxsus xotira sohasidan foydalaniladi. Har bir yangi rekurent murojaatda xotirada barcha lokal o'zgaruvchilarga ega qismdastur nusxasi yaratiladi. Bu nusxalar chegaraviy shartga chiqqunga hosil bo'laveradi (norekurent tarmoq). Ravshanki, chegaraviy shart bo'lmagan holda bunday nusxalar sonini chegaralanmagan o'sishi stekning to'lishi hisobiga dasturning favqulotda to'xtatilishiga olib keladi. Rekurent qismdasturning barcha yangi nusxalarining xosil bo'lishi chegaraviy shartga chiqquncha hosil bo'lishi rekursiyaning to'g'ri yo'li (rekurent pasayishi) deb ataladi. Kompyuter xotirasida bir vaqtda joylashishi mumkin bo'lgan rekurent qismdasturlar nusxalari maksimal soni rekursiya chuqurligi deb ataladi. Rekurent chaqiriqlar bilan hosil qilingan rekurent qismdasturlarning eng birinchisigacha ishining tugatilishi rekursiyaning teskari yo'li (rekurent ko'tarilish) deb ataladi. Har bir rekurent protsedura yoki funksiyaning boshida daastur to'xtab qolganda undan kompyuter qayta yuklashsiz ixtiyoriy tugmani oddiy bosish bilan chiqishga imkon beruvchi if KeyPressed then Halt; satrni joylashtirish mumkin. Keypressed funksiya true natijani qaytaradi, agar klaviaturada simvolni hosil qiluvchi tugma bosilsa, va false – aks holda. Masalan , repeat 4
until Keypressed; operator bo'sh operatorni o'z ichiga oladi va dasturni bajarish paytida tugma bosilguncha tanaffusni ta'minlaydi. 1.1 – rasm. Rekurent nisbatlarning to'g'ri va teskari yo'li 5