Takrorlanuvchi tuzilishdagi algoritm
Ba’zi - bir algoritmlarda bajarilishi lozim bo‘lgan qadamlar takrorlanishi talab qilinadi. Ushbu jarayon sikl deb ataladi. Takrorlanish qadamlariga ko‘ra sikllar 2 ga bo‘linadi:
- qadamlar soni aniq sikl;
- iteratsion sikl.
Qadamlar soni aniq ko‘rsatilgan sikllarda chegaraviy qiymat aniq ko‘rsatilgan bo‘ladi. Bu yerda takrorlanuvchi tarkibni maxsus sikl yasovchilar yordamida tuzish va undagi qadamlar sonini aniqlash mumkin bo‘ladi.
Bu yerda keltirilgan “A” bandi siklning sarlavhasi deb atalmish parametrlarga bog‘liq bo‘ladi, ya’ni i=k,m,n larga. Masalan i=1,10,1 bo‘lsa “A” qadami 10 marta bajarilgan bo‘ladi.
Lekin ba’zida sikl bevosita ma’lum - bir shartni bajarilishi bilan bog‘lanadi. Ya’ni agar shart bajarilsa hisoblash jarayoni takrorlanadi, aks holda sikl tugatiladi.
Masalan,
Keltirilgan a) va b) variantlarda sikllar bir - biridan tubdan farq qiladi. Chunki a) variantida shart bajarilgan holatda A bandi bajariladi, aks holda ushbu band umuman bajarilmaydi. Ikkinchi, ya’ni b) variantdagi siklda esa, shartning qiymati qanday bo‘lishidan qat’iy nazar, kamida bir marotaba A bandi bajariladi.
Ushbu ko‘rinishdagi takrorlanuvchi algoritmlar iteratsion algoritmlar deb ataladi. Dasturlarda ushbu jarayonli algoritmlarni qo‘llashda ehtiyotkor bo‘lish zarur, agarda sikldan chiqish ko‘rsatilmagan bo‘lsa, unda ushbu jarayon cheksiz bajarilishi mumkin.
Misol sifatida qadamlar soni aniq bo‘lmagan Yevklid algoritmini to‘liq keltiramiz:
Shunga qaramay ba’zida cheksiz ko‘rinishdagi algoritmlardan foydalanish ehtiyoji paydo bo‘ladi. Ushbu ko‘rinishlagi algoritmlarni, masalan, quyidagicha yaratish mumkin:
Bu yerda keltirilgan 1-shart, ya’ni “1>0” doimo bajariladi, shundan so‘ng “A” qadami bajarilib, 2-shartga o‘tiladi. Ushbu 2-shartda jarayondan chiqib ketish albatta bo‘lishi kerak, aks holda jarayon cheksiz bajariladi va bu algoritmning noto‘g‘ri tuzilganidan dalolat beradi. Bundan tashqari bu yerda “B” band umuman bajarilmaydi.
Takrorlanuvchi algoritmlarning yana bir xususiyati mavjud, bu ham bo‘lsa ularning bir - biriga nisbatan joylashuvi. Masalan, sxematik ravishda quyidagicha tasvirlangan 2 ta takrorlanuvchi algoritmlar berilgan bo‘lsin:
Bu yerda keltirilgan variantlardan 1- va 3-rasmlarda keltirilgan algoritmlarga o‘rin bor. 2-rasmda keltirilgan algoritm, ya’ni ikki sikl bir-biri bilan kesishganda, ushbu holat xatoga olib keladi.
Quyida aniq misollar keltirilgan.
Sikl
agar i <= 5 bo‘lsa, u holda
S := S+A[i]
i := i+1
Sikl tugadi
Sikl
i uchun 1 dan to 5 gacha
X[i] := i*i*i
Y[i] := X[i]/2
Sikl tugadi
Ketma-ket keladigan sikllarga quyidagi misolni keltirsak bo‘ladi.
S := 0;
Sikl
i uchun 1 dan to 5 gacha
Sikl
j uchun 1 dan to 3 gacha
S:=S+A[i,j]
Sikl tugadi
Sikl tugadi
Yuqorida keltirilgan misollardan shunday xulosa qilish mumkin. Har qanday takrorlanuvchi, ya’ni siklik algoritmlar bitta kirish va bitta chiqish nuqtasiga ega bo‘ladi.
Umuman, har qanday algoritmni yuqorida keltirilgan 3 ta tipli, ya’ni chiziqli, tarmoqlanuvchi va takrorlanuvchi algoritmlardan foydalanib yasash mumkin.
Bu esa o‘z navbatida algoritmlarni yig‘ish imkonini yaratadi, ya’ni masala kichik masalalarga bo‘linadi va ular uchun alohida algoritmli bloklar tuziladi va keyinchalik ular ketma - ket bir - biri bilan bog‘lanadi. Ba’zida ular bir - birining tarkibiga kirishi ham mumkin.
Asosan katta loyihalarda ushbu texnologiya keng qo‘llaniladi. Ya’ni, masalaning umumiy blok - sxemasi yaratiladi va ulardagi qadamlar birin - ketin tuzilib, dasturga qo‘shilib boriladi. Ushbu texnologiyani qismlash deb atasak bo‘ladi, chunki ular uchun yaratiladigan dasturni qism - dastur deb atashishadi. Bu yerda oldindan yaratilgan algoritmlarni qo‘llash imkoni tug‘iladi va bu dasturlovchining qimmatli vaqtini tejashga olib keladi.
Do'stlaringiz bilan baham: |