3.2.3. Qadamma-qadam detallashtirish hamda soxta kod (psevdokod) haqida tushuncha
Tuzilmaviy (strukturali) dasturlash modul matni qanday bo‘lishi kerakligi haqida maslahatlar beradi. Bunday matnni tuzish uchun dasturchi qanday yo‘l tutishi kerak degan savol tug‘iladi. Odatda modulni dasturlash ishini uning blok-sxemasini tuzishdan boshlaydilar. Bu blok-sxema modul ishi mantiqiga umumiy tavsif beradi. Biroq zamonaviy dasturlash texnologiyasi tegishli kompyuter yordamisiz bu ishni amalga oshirmaslikka maslahat beradi. Garchi blok-sxemalar modul ishi mantiqini ancha aniq tasavvur qilish imkonini bersa-da, ularni qo‘lda kodlashda dasturlash tilida g‘oyat o‘ziga xos xatolar manbai yuzaga keladi: asosan ikkio‘lchamli bo‘lgan blok-sxemalarni chiziqli matn (lineynыy teks) da aks etishi, modul ishi mantiqini buzib ko‘rsatish havfi bo‘ladi. Blok-sxemalarni tuzishda grafik muharrir (redaktor) dan foydalanilsa, yoki bu blok-sxemalar bo‘yicha matn avtomatik ravishda dasturlash tiliga generatsiya qilinadigan darajada formallashgan (qoliplangan) bo‘lsa (xuddi R-texnologiyada bo‘lganidek), bu holat bundan mustasno.
Modul matnini tuzishning asosiy usuli sifatida hozirgi zamon dasturlash texnologiyasi qadamma-qadam detallashtirishni tavsiya etadi. Bu usulning mohiyati shundaki, modul matnini ishlab chiqish jarayoni bir qator qadamlarga bo‘linadi. Birinchi qadamda modul ishining umumiy sxemasi chiziqli matniy shaklda (ya’ni g‘oyat yirik tushunchalardan foydalangan holda) tavsiflanadi. Bunda bu tavsif to‘liq formallashmagan hamda uning inson tomonidan idrok etilishiga qaratilgavn bo‘ladi. Har bir navbatdagi qadamda avvalgi qadamlardan birida ishlab chiqilgan biron-bir tavsifdagi tushuncha (uni aniqlanayotgan tushuncha deb ataymiz) yanada aniqlashtiriladi va detallashtiriladi. Bunday qadam natijasida tanlab olingan aniqlanayotgan tushunchaning tavsifi yaratiladi. Barcha aniqlanayotgan tushunchalar aniqlangach (ya’ni pirovard natijada bazaviy dasturlash tilida ifodalab berilgach), bu jarayon o‘z nihoyasiga etadi. So‘nggi qadamda bazaviy 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 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).
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
|
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 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.
Dostları ilə paylaş: |