dasturlash tilidagi matn yuzaga keladi hamda tuzilmaviy dasturlash konstruktsiyalarining barcha kirishlari
ushbu dasturlash tili vositalari bilan ifodalanadi. Bunda yana aniqlanayotgan tushunchalarning barcha
kirishlari ularning berilgan tavsiflariga almashtiriladi.
Qadamma-qadam detallashtirishda ko‘rsatib o‘tilgan tavsiflarni taqdim etish uchun
sohta kod nomini
olgan qisman formallashgan tildan foydalaniladi. Bu til tuzilmaviy dasturlashning barcha
konstruktsiyalaridan foydalanish imkonini beradi. Bu konstruktsiyalar esa umumlashma operatorlar va shart-
sharoitlarni taqdim etish uchun tabiiy tildagi formallashmagan fragmentlar bilan birgalikda formallashgan
(qoliplangan) tarzda rasmiylashtiriladi. Umumlashma operatorlar va shart-sharoitlar sifatida shuningdek
bazaviy dasturlash tilidagi tegishli fragmentlar ham berilishi mumkin.
Bazaviy dasturlash tilidagi modulning tashqi tavsifini sohta koddagi bosh tavsif deb hisoblash
mumkin bo‘lib, uning tarkibiga quyidagilar kiradi:
-bazaviy tildagi modulning boshi, ya’ni ushbu modulning birinchi gapi yoki sarlavhasi
(spetsifikatsiyasi);
-bazaviy tildagi tavsiflar bo‘limi (majmui), bunda protseduralar va funksiyalarning tavsiflari o‘rniga
ularning faqat tashqi tavsiflari kelitiradi;
-modul tanasi operatorlari ketma-ketligining bitta umumlashma operator sifatida noformal
ifodalanishi;
-bazaviy tildagi modulning so‘nggi gapi (oxiri).
Protsedura yoki funksiya tavsifi tashqi tomondan bir xil shakllantiriladi. Darvoqe, Deykstraga amal
qiladigan bo‘lsak, tavsiflar bo‘limini bu o‘rinda formal bo‘lmagan ifoda bilan taqdim etish afzalroqdir.
Bunda formal bo‘lmagan ifoda alohida tavsif sifatida detallashtiriladi.
Umumlashma operatorning sohta koddagi formal bo‘lmagan ifodasi bu ifoda mazmunini umumiy
tarzda ochib beradigan ixtiyoriy gap bilan tabiiy tilda amalga oshiriladi. Bunday ifodani shakllantirishga
qo‘iladigan yagona formal talab quyidagichadir: bu gap bitta yoki bir nechta grafik (bosma) satrni to‘liq
egallashi hamda nuqta (yoki buning uchun maxsus ajratilgan boshqa biron belgi bilan tugallanishi) lozim.
Ketma-ket kelish
umumlashma_operator
umumlashma_operator
Tarmoqlanish:
AGAR shart BU O‘OLDA
umumlashma_operator
AKS HOLDA
umumlashma_ operator
HAMMA AGAR
Kaytariq:
HOZIRCHA shart-sharoit QILMOQ
umumlashma_operator
HAMMA HOZIRCHA
3.5-rasm. Sohta kodda tuzilmaviy dasturlashning asosiy
konstruksiyalari
Har bir formal bo‘lmagan umumlashma operator uchun tuzilmaviy dasturlash konstruktsiyasining
kompozitsiyasi hamda boshqa umumlashma operatorlar yordamida uning ishi mantiqini ifodalab beradigan
(uning mazmunini detallashtirib beradigan) alohida tavsif yaratilishi kerak. Bunday tavsifning sarlavhasi
PDF created with pdfFactory trial version
www.pdffactory.com
sifatida detallashtirilayotgan umumlashma operatorning formal bo‘lmagan ifodasi kelishi kerak. tuzilmaviy
dasturlashning asosiy konstruktsiyalari quyidagi ko‘rinishda taqdim etilishi mumkin (3.5-rasmga qarang).
Sohta koddagi umumlashma operator sifatida yuqorida ko‘rsatib o‘tilgan o‘tish operatorining juz’iy
holatlaridan foydalanish mumkin (3.6-rasmga qarang).
Frvqulotda
vaziyatlar
(istisnolar) ishlov beruvchilarining
ketma-ketligi
modul
yoki
protsedura
tavsifining
oxirida
beriladi.
Shunday
ishlov
beruvchilarning har bittasi quyidagi
ko‘rinishga ega:
ISTISNO istisno_nomi
umumlashma operator
BARCHA ISTISNO
Favqulotda vaziyatga ishlov
beruvchining
parametrlarsiz
protseduradan
farqi
shundaki,
protsedura bajarilgach, boshqaruv bu protseduraga murojaatdan keyin keluvchi operatorga qaytadi, istisno
bajarilgandan so‘ng esa boshqaruv modul yoki protsedura (funksiya) ga murojaatdan so‘ng keladigan
operatorga qaytadi, bunda ushbu istisno gap borayotgan modul yoki protsedura oxirida joylashtirilgan
bo‘ladi.
Detallashtirishning har bir qadamida ancha mazmunli tavsif berilishi tavsiya etiladiki, bu tavsif
tushunishga oson, ko‘rgazmali bo‘lishi, ya’ni bir varaqli matnga sig‘ishi lozim. Odatda bu shuni bildiradiki,
bunday tavsif tuzilmaviy dasturlashning besh-oltita konstruktsiyasi uchun kompozitsiya vazifasini o‘tamog‘i
lozim. Oraga suqib kiritilgan konstruktsiyalarni o‘ng tomonga bir necha pozitsiyaga surib joylashtirish
tavsiya etiladi (3.7-rasm). Natijada blok-sxemalar bilan bemalol raqobatga kirisha oladigan ish mantiqi
tavsifiga ega bo‘lish mumkin. Bu tavsif xatto afzallikka ham ega: bunda tavsifning chiziqliligi saqlanadi.
FAYLDAGI
YOZUVLARNI
BERILGAN
FILTRNI
QONIQTIRADIGAN BIRINCHI YOZUVGACHA O‘CHIRISH:
FAYL BOSHINI O‘RNATISH.
FAYL TUGAMASDAN
NAVBATDAGI YOZUVNI QILISH O‘QISH.
AGAR NAVBATDAGI FAYL FILTRNI QONIQTIRSA,
U HOLDA
CHIQISH
AKS HOLDA
NAVBATDAGI YOZUVNI FAYLDAN O‘CHIRISH
HAMMASINI, AGAR
HAMMASINI, -GACHA
AGAR YOZUVLAR O‘CHIRILMAGAN BO‘LSA, U HOLDA
«YOZUVLAR O‘CHIRILMADI» DEB YOZIB QO‘YISH
AKS HOLDA
«n-TA YOZUVLAR O‘CHIRILDI» DEB YOZIB QO‘YISH
HAMMASINI, AGAR
3.7. Sohta kodda detallashtirishning bitta
qadamiga misol
Qadamma-qadam detallashtirish g‘oyasining muallifi Deykstra degan fikr mavjud. Biroq Deykstra
nazarimizda modul matnini tuzishning printsipial farq qiladigan yanada mukammalroq va istiqboli porloq
bo‘lgan usulini taklif qiladi. Birinchidan, u operatorlarni aniqlash bilan birga qo‘llanayotgan ma’lumotlar
Qaytariq (tsikl)dan chiqish:
CHIQMOQ
Protsedura (funksiya)dan chiqish:
QAYTMOQ
Favqulotda vaziyatni ishlashga o‘tish:
QO‘ZG‘ATMOQ istisno_ismini (? )
3.6-rasm. Umumlashma operator sifatidagi o‘tish operatorining
juz’iy holati
PDF created with pdfFactory trial version
www.pdffactory.com
tuzilmasini ham asta-sekin (qadamma-qadam) aniqlashni taklif qiladi. Ikkinchidan, Deykstra har bir
qadamda detallashtirish uchun qandaydir virtual mashinani yaratishni hamda uning atamalari vositasida
barcha aniqlanayotgan tushunchalarni detallashtirishni taklif qiladi. Shunday qilib, Deykstra mohiyat
e’tibori bilan gorizontal qavatlar bo‘yicha detallashtirishni taklif qilganki, bu qavatma-qavat tizimlar
haqidagi g‘oyani modulni ishlab chiqish darajasiga olib o‘tilishini bildiradi. Modulni ishlab chiqishning
bunday usuli hozirgi paytda ADA paketlar tili va ob’ektli yo‘naltirilgan dasturlash vositalari tomonidan
qo‘llab-quvvatlanadi.
Do'stlaringiz bilan baham: