function factorial(n:integer):longint;
begin
if n=0 then factorial:=1
else factorial:=n*factorial(n-1)
end;
Rekursiv qismiy dasturlardan foydalanish – dasturchi nuqtai-nazaridan
qaraganda chiroyli estetik usuldir. Amma bu usul hamma vaqt ham samarali emas.
Odatda rekurent ko’p yoki kam kuch sarflab odatdagi siklik jarayonga keltirish
mumkin. Masalan, faktorialni hisoblaydigan dastur bo’lagi quyidagicha
ko’rinishda bo’lishi mumkin:
factorial:=1;
for i:=1 to n do
factorial:=factorial*i;
Bundan tashqari rekursiyadan hamma vaqt ham foydalanish kerak emas,
chunki u steklarning to’lib ketish holatiga sabab bo’ladi. Bu holat shuning uchun
ham yuz beradiki, har safar rekursiv qismiy dasturga murojaat qilinganda, uning
lokal o’zgaruvchilari dastur steki deb nomlanuvchi maxsus ko’rinishda
tashkillashtirilgan xotira sohasiga joylashtiriladi.
Rekurent ketma-ketliklarni hisoblash uchun rekursiyadan foydalanish
qo’lay. Bu tushuncha matematikada quyidagicha kiritiladi: k ma’lum a
1
,…a
k
sonlar berilgan. Bu sonlar sonli ketma-ketlikning birinchi sonlari hisoblanadi.
Berilgan ketma-ketlikning keyingi elementlari quyidagicha hisoblanadi:
a
k+1
=F(a
1
,…,a
k
); a
k+2
=F(a
2
,…,a
k+1
);
a
k+2
=F(a
2
,…,a
k+1
); a
k+3
=F(a
3
,…,a
k+2
); …
Bu yerda F, k argumenta bog’liq funksiya va quyidagi formula ko’rinishda
tavsiflanadi:
26
a
i
=F(a
i-1
, a
i-2
,…,a
i-1
);
Bu formula rekurent deb nomlanadi. k qiymat rekursiya tubi (glubina)
deyiladi.
Boshqacha aytganda, rekurent ketma-ketlik har bir boshlang’ich ni alohida
yo’qotishni tavsiflovchi cheksiz sonli qatordir, u quyidagicha ifodalanidi …
Rekurent ketma-ketliklarga misollar quyida keltirilgan arifmetik (yuqorida)
va geometrik progressiyalar hisoblanadi:
a
1
=1, a
2
=3, a
3
=5, a
4
=7, a
5
=9, …
a
1
=1, a
2
=2, a
3
=4, a
4
=8, a
5
=16, …
Bularga mos rekurent formulalar:
a
i
=a
i-1
+2,
a
i
=2a
i-1
.
Rekursiv prosedura yoki funksiyani tavsiflashda juda muhim bitta qoidani
esdan
chiqarmaslik
kerak.
Birinchi
navbatda
rekursiyadan
chiqishni
tashkillashtirish lozim!
Ko’p hollarda rekursiv qismiy dasturlarda oldindan tavsiflash ishlatiladi.
Rekursiv murojaat urinmali bo’lishi ham mumkin (ya’ni bitta qismiy dastur boshqa
qismiy dasturga murojaat qiladi, u esa o’z navbatida birinchi qismiy dasturga
murojaat qiladi). Har qanday qismiy dastur murojaatga qadar tavsiflangan bo’lishi
kerak, albatta, bunday hollarda oldindan tavsiflash ishlatiladi.
Modul – bu avtonom kompilyasiya qilinadigan dastur bo’lib, u o’z ichiga
turli komponentalarni (turlarni, o’zgarmaslarni, o’zgaruvchilarni, prosedura va
funksiyalarni) va bir nechta bajariladigan instruksiyalar qismlarini oladi.
Modullar amaliy dasturlar kutubxonalarini va modullarni dasturlashtirish
vositalarini ishlaydigan instrumentlar (uskunalar) ni oladi. Modullarning asosi
shundan iboratki, komplyator ularga katta dasturlarni yaratishga imkoniyat
beradigan xotiraning alohida segmentlariga dastur kodini joylashtiradi.
Modulni qayta ishlashda quyidagi hodisalar ketma-ketligi tavsiya qilinadi:
1.
Modulni loyihalash, ya’ni asosiy va yordamchi qism dasturlar va
boshqa resurslarni aniqlash.
27
2.
Modul komponentalarini tavsiflash.
3.
Har bir qismiy dasturni lohida yozish, keyinchalik uni modul
matniga «qo’shish» uchun.
Modul quyidagi strukturaga ega:
Do'stlaringiz bilan baham: |