8.2. Tarkibiy dasturlash.
Modulni dasturlashda shuni yodda tutish kerakki, dastur nafaqat kompyuter uchun, balki inson uchun ham tushunarli bo'lishi kerak: modulni ishlab chiquvchi ham, modulni tekshiradigan shaxslar ham, modulni disk raskadrovka uchun testlar tayyorlaydiganlar va modulga kerakli o'zgartirishlarni kiritgan PS-xizmatchilari. modul mantig'ini qayta-qayta tahlil qiladi. Zamonaviy dasturlash tillarida ushbu mantiqni xohlagancha chalkashtirib yuborish uchun etarli vositalar mavjud, shu bilan modulni odamlar tushunishi qiyinlashadi va natijada uni ishonchsiz yoki saqlashni qiyinlashtiradi. Shuning uchun tegishli til vositalarini tanlash va aniq dasturlash intizomiga rioya qilish choralarini ko'rish zarur. Shu munosabat bilan Dijkstra dasturni mantiqiy tushunchalarini sezilarli darajada oshirishi mumkin bo'lgan bir necha turdagi boshqaruv tuzilmalari (tuzilmalari) ning tarkibi sifatida dastur tuzishni taklif qildi. Faqat shunday konstruktsiyalardan foydalangan holda dasturlash chaqirildi tizimli.
Shakl: 8.1. Strukturaviy dasturlashning asosiy boshqaruv konstruktsiyalari.
Tarkibiy dasturlashning asosiy konstruktsiyalari quyidagilardan iborat: amal qilish, bo'linish va takrorlash (8.1-rasmga qarang). Ushbu konstruktsiyalarning tarkibiy qismlari umumlashtirilgan operatorlar (ishlov berish tugunlari) S, S1, S2 va shart (predikat) P. Umumlashtirilgan operator yoki ishlatilgan dasturlash tilining oddiy operatori (tayinlash, kiritish, chiqish, protsedurani chaqirish operatorlari) yoki dastur bo'lagi bo'lishi mumkin. , bu asosiy tuzilgan dasturlashni boshqarish konstruktsiyalarining tarkibi. Ushbu dizaynlarning har biri boshqarish uchun faqat bitta kirish va bitta chiqishga ega bo'lishi juda muhimdir. Shunday qilib, umumlashtirilgan operatorda faqat bitta kirish va bitta chiqish mavjud.
Ushbu konstruktsiyalar allaqachon matematik ob'ektlar bo'lishi juda muhimdir (bu mohiyatan tizimli dasturlash muvaffaqiyatining sababini tushuntiradi). Har bir tuzilmagan dastur uchun funktsional ekvivalenti (ya'ni bir xil masalani echish) tuzilgan dasturni qurish mumkinligi isbotlangan. Tuzilmaviy dasturlar uchun siz ba'zi xususiyatlarni matematik ravishda isbotlashingiz mumkin, bu dasturdagi ba'zi xatolarni aniqlashga imkon beradi. Ushbu masalaga alohida ma'ruza bag'ishlanadi.
Strukturaviy dasturlash ba'zan "no-GO TO dasturlash" deb nomlanadi. Biroq, gap GO TO bayonotida emas, balki uning tartibsiz ishlatilishida. Ko'pincha, ba'zi dasturlash tillarida (masalan, FORTRAN-da) tizimli dasturlashni amalga oshirishda tuzilgan konstruktsiyalarni amalga oshirish uchun o'tish operatori (GO TO) ishlatiladi, bu esa tuzilgan dasturlash tamoyillarini buzmaydi. Aynan "tizimli bo'lmagan" o'tish operatorlari dasturni chalkashtirmoqda, ayniqsa yuqoridagi modul matnida joylashgan operatorga o'tish (oldinroq) o'tish operatori bajarilmoqda. Shunga qaramay, ba'zi bir oddiy holatlarda filial operatoridan qochishga urinish juda noqulay 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 etamiz, ammo dasturning aniqligi evaziga emas.
O'tish operatoridan foydalanishning foydali holatlari orasida tsikl yoki protseduradan ma'lum bir tsikl yoki berilgan protsedura ishini "erta" tugatadigan, ya'ni ba'zi bir tarkibiy bo'linmaning (umumlashtirilgan operator) ishini tugatadigan va shu bilan dasturning tuzilishini faqat mahalliy darajada buzadigan maxsus shart bilan chiqish kiradi. Katta qiyinchiliklar (va strukturaning murakkablashishi) paydo bo'ladigan istisno (ko'pincha noto'g'ri) holatlarga reaktsiyani tizimli ravishda amalga oshirish natijasida yuzaga keladi, chunki bu nafaqat strukturaviy bo'linmadan erta chiqib ketishni, balki ushbu vaziyatni zarur qayta ishlashni (chiqarib tashlashni) ham talab qiladi (masalan, tegishli diagnostika berish) ma `lumot). Istisno ishlovchisi dastur tuzilishining istalgan darajasida bo'lishi mumkin va unga har xil quyi darajalardan kirish mumkin. Istisno holatlarga javobni quyidagi "tarkibiy bo'lmagan" amalga oshirish texnologik nuqtai nazardan juda maqbuldir. Istisno ishlovchilari u yoki bu konstruktiv blokning oxiriga joylashtiriladi va har bir ishlov beruvchini shunday qilib dasturlash kerakki, u ishni tugatgandan so'ng u joylashtirilgan struktura bo'linmasidan chiqadi. Bunday ishlov beruvchiga qo'ng'iroqni ushbu operator birligidan o'tish operatori amalga oshiradi (shu jumladan, unda joylashgan har qanday tarkibiy bo'linma).
Do'stlaringiz bilan baham: |