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 detallashtirish
ni 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).
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
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
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.
Do'stlaringiz bilan baham: |