106
11-bob. MURAKKAB TAKRORLANUVCHI HISOBLASH JARAYONLARNI
DASTURLASH
11.1. Murakkab takrorlanuvchi hisoblash jarayonining tushunchasi.
11.2. Ma’lumotlar massivi haqida tushuncha.
11.3. Massiv elementlarini saralash bo‘yicha dasturlarni tuzish.
11.4. Massivda eng kichik elementni izlash algoritmining dasturi.
11.1. Murakkab takrorlanuvchi hisoblash jarayonining tushunchasi
Agar takrorlanish jarayonlarining tanasi takrorlanish
strukturasidan tashkil
topgan bo‗lsa, u holda bunday takrorlanish ichma-ich joylashgan yoki murakkab deb
ataladi, ya'ni boshqacha qilib aytganda, bitta takrorlanish ichiga bir yoki bir necha
boshqa takrorlanishlar kirsa murakkab tarkibli takrorlanishli dasturlar hosil bo‗ladi.
Boshqa takrorlanish jarayonlarini o‗z ichiga olgan takrorlanish
tashqi sikl deb
ataladi.
Takrorlanish jarayonlarini ichida joylashgan takrorlanish ichki sikl deb ataladi.
Murakkab sikllarda quyidagi talablar bajarilishi zarur.
ichki sikl tashqi sikl ichida to‗liq yotishi kerak;
tsikllar bir-biri bilan kesishmasligi kerak;
tsikl ichiga tashqaridan to‗g‗ridan-to‗g‗ri kirish mumkin emas;
tsikl parametrlari har xil identifikatorlar bilan belgilanishi kerak.
Masala:
n
i
n
j
j
i
S
1
1
2
)
(
ko‗rinishidagi yig‗indi va ko‗paytmalar ishtirok etgan
formula bo‗yicha S ning qiymatini hisoblash algoritmini tuzish talab etilsin.
Buni biz yuqorida tanishgan yig‗indini hisoblash algoritmi yordamida
hisoblashimiz mumkin. Buning uchun
i
j
j
i
P
1
2
)
(
deb
belgilasak, u holda
n
i
P
S
1
yozuvga ega bo‗lamiz. hisoblash algoritmi quyidagi tartibda amalga
oshiriladi. S ga 0 boshlanhich qiymat beriladi, i - parametri bo‗yicha sikl ochiladi. P
107
ga 1
qiymat beriladi, undan keyin j-parametri bo‗yicha sikl ochiladi. Ichki sikl
hisoblanadi, ichki sikl tugagandan keyin tashqi sikl (i-bo‗yicha) hisoblash ya'ni
S=S+P amalga oshiriladi. Sikl i
rekursiyadan (olinadigan natijadan foydalanib keyingisini hosil qilish) foydalanib
ichma-ich joylashgan siklik jarayondan qutilish mumkin.
Masalan:
n
i
i
i
S
1
)!
1
2
(
yig‗indini hosil qilish
algoritmini tuzish uchun
1
2
1
)!
1
2
(
i
j
j
i
deb yozib olinadi. U holda,
n
i
i
j
j
i
S
1
1
2
1
/
ga ega bo‗lamiz.
Bu esa yig‗indi va ko‗paymani hisoblash algoritmini qo‗llashga keltiriladi.
Bu operator ichma-ich joylashgan sikl jarayoni bo‗lib, n ning katta qiymatlari
uchun hisoblash ko‗p vaqt talab etadi. i- ning har bir qiymati uchun ichki siklda
arifmetik amallar soni oshib boradi. Bu kamchilikdan
qutulish uchun rekursiyani
qo‗llaymiz T=1!=1 deb olsak, bu holda T=(2i+1)!=1*2…….(2*i)*(2i+1) ga ega
bo‗lamiz.
Misol.
Y=K 2+3A hisoblansin.
K=1- 5 h=1
A=2- 10 h=2
Program kap (input,output);
Var k,a,y:integer;
Begin
For k: =1 to 5 do
Begin
a:=2 ;
While a<=10 do
Begin
Y:=k*k+3*a;
Writeln ('k=',k: 3:3; ' a= ',a: 3 : 3; ' y= ', y :3:3);
a:=a+2;