8.2. Strukturaviy dasturlash.
Modulni dasturlashda shuni yodda tutish kerakki, dastur nafaqat kompyuter uchun, balki inson uchun ham tushunarli bo'lishi kerak: modul ishlab chiqaruvchisi ham, modulni tekshiradigan shaxslar ham, disk raskadrovka uchun testlar tayyorlaydigan matnshunoslar ham. modul va modulga kerakli o'zgarishlarni amalga oshiruvchi PS ta'minotchilari modul mantiqini qayta-qayta qismlarga ajratishlari kerak bo'ladi. Zamonaviy dasturlash tillarida ushbu mantiqni xohlagancha chalkashtirib yuborish uchun etarli vositalar mavjud, bu esa modulni odamlar uchun tushunishni qiyinlashtiradi va natijada uni ishonchsiz yoki texnik xizmat ko'rsatishni qiyinlashtiradi. Shuning uchun tegishli til vositalarini tanlash va ma'lum bir dasturlash intizomiga rioya qilish choralarini ko'rish kerak. Birinchi marta Dijkstra bunga e'tibor qaratdi va dastur mantig'ini tushunishni sezilarli darajada oshirishi mumkin bo'lgan bir necha turdagi boshqaruv tuzilmalari (tuzilmalari) tarkibi sifatida dastur qurishni taklif qildi. Faqat shunday konstruksiyalardan foydalangan holda dasturlash strukturaviy deb nomlangan.
Strukturaviy dasturlashning asosiy konstruksiyalari quyidagilardan iborat: kuzatib borish, tarmoqlash va takrorlash (8.1-rasmga qarang). Bu konstruksiyalarning komponentlari umumlashtirilgan operatorlar (qayta ishlash tugunlari) S, S1, S2 va shart (predikat) P. Umumlashtirilgan operator foydalaniladigan dasturlash tilining oddiy operatori ham bo‘lishi mumkin (tayinlash, kiritish, chiqarish, protsedura chaqiruvi operatorlari). , yoki asosiy tuzilgan dasturlash boshqaruv konstruksiyalarining tarkibi bo'lgan dastur fragmenti. Ushbu tuzilmalarning har birida boshqarish uchun faqat bitta kirish va bitta chiqish bo'lishi muhimdir. Shunday qilib, umumlashtirilgan operator faqat bitta kirish va bitta chiqishga ega.
Bu konstruksiyalarning allaqachon matematik ob'ektlar bo'lishi ham juda muhim (bu mohiyatan tuzilgan dasturlash muvaffaqiyatining sababini tushuntiradi). Har bir tuzilmagan dastur uchun funktsional ekvivalent (ya'ni, bir xil masalani echish) tuzilgan dasturni qurish mumkinligi isbotlangan. Strukturaviy dasturlar uchun siz ba'zi xususiyatlarni matematik tarzda isbotlashingiz mumkin, bu esa dasturdagi ba'zi xatolarni aniqlash imkonini beradi. Bu masalaga alohida ma'ruza bag'ishlanadi.
Strukturaviy dasturlash ba'zan "no-GO TO dasturlash" deb ataladi. Biroq, bu erda gap GO TO bayonotida emas, balki uning tartibsiz ishlatilishidadir. Ko'pincha, ba'zi dasturlash tillarida (masalan, FORTRANda) tuzilgan dasturlashni amalga oshirishda, tizimli dasturlashning asosiy afzalliklarini buzmasdan tuzilgan konstruktsiyalarni amalga oshirish uchun o'tish operatori (GO TO) ishlatiladi. Aynan "strukturaviy bo'lmagan" o'tish operatorlari dasturni chalkashtirib yuboradi, ayniqsa bajarilayotgan o'tish operatori ustidagi (avvalgi) modul matnida joylashgan operatorga o'tish. Shunga qaramay, ba'zi oddiy holatlarda filial operatoridan qochishga urinish juda og'ir tuzilgan dasturlarga olib kelishi mumkin, bu ularning ravshanligini yaxshilamaydi va modul matnida qo'shimcha xatolar xavfini o'z ichiga oladi. Shuning uchun, iloji bo'lsa, o'tish operatoridan foydalanishdan qochishni tavsiya qilishimiz mumkin, lekin dasturning aniqligi uchun emas.
O'tish operatoridan foydalanishning foydali holatlari qator yoki protseduradan maxsus shart bo'yicha chiqishni o'z ichiga oladi, bu "vaqtdan oldin" ma'lum bir tsikl yoki berilgan protsedura ishini tugatadi, ya'ni. ba'zi tarkibiy bo'linmalarning (umumlashtirilgan operator) ishini tugatish va shu tariqa dasturning tuzilganligini faqat mahalliy darajada buzish. Katta qiyinchiliklar (va strukturaning murakkabligi) paydo bo'ladigan istisno (ko'pincha noto'g'ri) vaziyatlarga reaktsiyani tizimli ravishda amalga oshirish bilan bog'liq, chunki bu nafaqat tarkibiy bo'linmadan erta chiqishni, balki zaruriy ishlov berishni (tashqariga chiqarishni) ham talab qiladi. bu holat (masalan, tegishli diagnostika ma'lumotlarini berish). Istisno ishlov beruvchisi dastur strukturasining istalgan darajasida bo'lishi mumkin va unga turli xil quyi darajalardan kirish mumkin. Istisno holatlarga javob berishning quyidagi "tuzilmaviy bo'lmagan" amalga oshirilishi texnologik nuqtai nazardan juda maqbuldir. Istisno ishlov beruvchilar u yoki bu strukturaviy blokning oxiriga joylashtiriladi va har bir bunday ishlov beruvchi shunday dasturlashtiriladiki, u o‘z ishini tugatgandan so‘ng, oxirida joylashgan strukturaviy blokdan chiqadi. Bunday ishlov beruvchiga qo'ng'iroq o'tish operatori tomonidan berilgan strukturaviy birlikdan (shu jumladan, unda joylashgan har qanday tarkibiy birlikdan) amalga oshiriladi.
Do'stlaringiz bilan baham: |