8.2. Strukturaviy dasturlash.
Modulni dasturlashda shuni yodda tutish kerakki, dastur nafaqat kompyuter uchun, balki inson uchun ham tushunarli bo'lishi kerak: modulni ishlab chiquvchisi ham, modulni tekshiradigan shaxslar ham, testlarni tayyorlaydigan testerlar ham. modulni disk raskadrovka qilish va modulga kerakli o'zgartirishlarni kiritgan PS ta'minotchilari modul mantiqini qayta-qayta tahlil qilishga majbur bo'ladilar. Zamonaviy dasturlash tillarida ushbu mantiqni xohlagancha chalkashtirib yuborish uchun etarli vositalar mavjud, bu esa modulni odamlar uchun tushunishni qiyinlashtiradi va natijada uni ishonchsiz yoki xizmat qilishni qiyinlashtiradi. Shuning uchun tegishli til vositalarini tanlash va ma'lum bir dasturlash intizomiga rioya qilish choralarini ko'rish kerak. Shu munosabat bilan, Deykstra 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 deyilgan strukturaviy.
Guruch. 8.1. Strukturaviy dasturlashning asosiy boshqaruv konstruksiyalari.
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 yoki foydalaniladigan dasturlash tilining oddiy operatori (topshiriq, kiritish, chiqish, protsedura chaqiruvi operatorlari) bo‘lishi mumkin. , 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 yechish) 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) tizimli dasturlashni amalga oshirishda tizimli konstruktsiyalarni amalga oshirish uchun o'tish operatori (GO TO) ishlatiladi, bu tizimli dasturlash tamoyillarini buzmaydi. 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, imkon qadar o'tish operatoridan foydalanishdan qochishni tavsiya qilishimiz mumkin, lekin dasturning aniqligi hisobiga emas.
O'tish operatoridan foydalanishning foydali holatlari qatoriga yoki protseduradan maxsus shart bilan chiqishni o'z ichiga oladi, bu "muddatidan oldin" ma'lum bir tsikl yoki ma'lum protsedura ishini tugatadi, ya'ni biron bir tarkibiy bo'linma (umumiy operator) ishini tugatadi va shu bilan faqat mahalliy darajada dastur tuzilishini buzadi. 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 reaktsiyaning quyidagi "tuzilmaviy bo'lmagan" amalga oshirilishi texnologik nuqtai nazardan juda maqbuldir. Istisno ishlov beruvchilar u yoki bu konstruktiv birlikning oxiriga joylashtiriladi va har bir bunday ishlov beruvchi o'z ishini tugatgandan so'ng u oxirida joylashgan strukturaviy birlikdan chiqib ketadigan tarzda dasturlashtirilgan. 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: |