8.3. Psevdokod haqida asta-sekin batafsil ma'lumot va tushuncha.
Tarkibiy dasturlash modul matni qanday bo'lishi kerakligi to'g'risida ko'rsatmalar beradi. Bunday matnni tuzishda dasturchi qanday harakat qilishi kerakligi savol tug'iladi. Ko'pincha, modulni dasturlash uning blok diagrammasini tuzishdan boshlanadi, bu tasvirlangan umumiy ma'noda uning ishining mantiqi. Biroq, zamonaviy dasturlash texnologiyasi buni tegishli kompyuter yordamisiz qilishni tavsiya etmaydi. Blok-diagrammalar modulning ishlash mantig'ini juda aniq aks ettirishga imkon beradigan bo'lsa-da, dasturlash tilida ularni qo'l bilan kodlashda xatolarning o'ziga xos manbai paydo bo'ladi: modulni aks ettiruvchi chiziqli matnga asosan ikki o'lchovli tuzilmalarni, masalan, blok diagrammalarini xaritalash, modulning ishlash mantig'ini buzish xavfini o'z ichiga oladi. yana ham psixologik jihatdan uni qayta ko'rib chiqishda yuqori darajadagi e'tiborni saqlab qolish juda qiyin. Blok-diagrammalar tuzishda grafik muharrirdan foydalanilganda va dasturlash tilidagi matn avtomatik ravishda ulardan hosil bo'ladigan qilib rasmiylashtirilganda (masalan, R-texnologiyada) istisno bo'lishi mumkin.
Modul matnini qurishning asosiy usuli sifatida zamonaviy dasturlash texnologiyasi tavsiya qiladi bosqichma-bosqich tafsilotlar ... Ushbu usulning mohiyati modul matnini ishlab chiqish jarayonini bir necha bosqichlarga ajratishdan iborat. Birinchisida
qadam tasvirlangan umumiy sxema kuzatiladigan chiziqli matn shaklida (ya'ni juda katta tushunchalardan foydalangan holda) modulning ishlashi va bu tavsif to'liq rasmiylashtirilmagan va inson idrokiga yo'naltirilgan. Har bir keyingi bosqichda tushunchalardan biri takomillashtirilgan va batafsil bayon qilingan (biz uni chaqiramiz) aniqlik kiritildi), oldingi bosqichlardan birida ishlab chiqilgan har qanday tavsifda. Ushbu qadam natijasida tanlangan aniq kontseptsiyaning tavsifi yoki asosiy dasturlash tili nuqtai nazaridan (ya'ni taqdimot uchun tanlangan modul) yoki yangi takomillashtirilgan tushunchalar yordamida birinchi bosqichdagi kabi shaklda yaratiladi. Ushbu jarayon barcha aniq tushunchalar bo'lganda tugaydi tushuntirish (ya'ni oxir-oqibat asosiy dasturlash tilida ifodalanadi). So'nggi qadam, modulning matnini asosiy dasturlash tilida olish, aniqlangan tushunchalarning barcha ko'rinishini ularning berilgan tavsiflari bilan almashtirish va ushbu dasturlash tili yordamida tuzilgan dasturlash konstruktsiyalarining barcha hodisalarini ifodalash orqali amalga oshiriladi.
Bosqichma-bosqich detallashtirish belgilangan tavsiflarni ifodalash uchun qisman rasmiylashtirilgan tildan foydalanish bilan bog'liq bo'lib, u psevdokod ... Ushbu til rasmiylashtirilgan barcha tuzilgan dasturlash konstruktsiyalaridan va umumiy operatorlar va shartlarni ifodalash uchun tabiiy tildagi norasmiy qismlardan foydalanishga imkon beradi. Dasturlashning asosiy tilidagi tegishli qismlar umumlashtirilgan operatorlar va shartlar sifatida ham ko'rsatilishi mumkin.
· Tayanch tilida modulning boshlanishi, ya'ni ushbu modulning birinchi jumlasi yoki sarlavhasi (spetsifikatsiyasi);
Asosiy tilda tavsiflar bo'limi (to'plami), protseduralar va funktsiyalar tavsiflari o'rniga - faqat ularning tashqi dizayni;
· Modul tanasi operatorlari ketma-ketligini bitta umumlashtirilgan operator sifatida norasmiy belgilash (quyida ko'rib chiqing), shuningdek protsedura yoki funktsiyalarning har bir tavsifining tanasini bitta umumlashtirilgan operator sifatida norasmiy belgilash;
· Modulning tayanch tilidagi oxirgi jumlasi (oxiri).
Protsedura yoki funktsiya tavsifining ko'rinishi o'xshash. Ammo, agar siz Dijkstra-ga ergashsangiz, bu erda tavsiflar bo'limini norasmiy belgi sifatida taqdim etib, uni alohida tavsif sifatida batafsil bayon qilish yaxshiroqdir.
Psevdokodda umumlashtirilgan operatorning norasmiy belgilanishi tabiiy tilda uning mazmunini aks ettiruvchi ixtiyoriy jumla bilan amalga oshiriladi. Bunday belgini loyihalashtirish uchun yagona rasmiy talab quyidagilardan iborat: ushbu jumla bir yoki bir nechta grafik (bosma) satrlarni to'liq egallashi va nuqta (yoki buning uchun maxsus ajratilgan boshqa belgi) bilan tugashi kerak.
Shakl: 8.2. Psevdokodda tuzilgan dasturlashning asosiy konstruktsiyalari.
Har bir norasmiy umumlashtirilgan operator uchun tuzilgan dasturlash va boshqa umumlashtirilgan operatorlarning asosiy tuzilmalari tarkibidan foydalangan holda uning ishlash mantig'ini ifodalovchi (uning mazmuni batafsil bayon qilingan) alohida tavsifni yaratish kerak. Bunday tavsifning nomi batafsil umumiy operatorning norasmiy belgisi bo'lishi kerak. Strukturaviy dasturlashning asosiy tuzilmalari quyidagi shaklda ifodalanishi mumkin (8.2-rasmga qarang). Bu erda, shart mantiqiy ifoda sifatida asosiy dasturlash tilida aniq ko'rsatilishi mumkin yoki u tabiiy sharoitda ushbu shartning ma'nosini aks ettiruvchi ba'zi bir qism bilan norasmiy ravishda ifodalanishi mumkin. Ikkinchi holda, ushbu shartni (tabiiy tilda parcha) sarlavha sifatida belgilashni ko'rsatadigan ushbu shartni batafsil tavsiflash kerak.
Takrorlashdan chiqish (loop):
Jarayondan chiqish (funktsiya):
|
J. Xyuz, J. Mikt. Dasturlash uchun tizimli yondashuv. - M.: Mir, 1980. - bet. 29-71.
V. Turskiy. Dasturlash metodikasi. - M.: Mir, 1981. - 90-164 betlar.
E.A. Zhogolev. Modulli dasturlashning texnologik asoslari // Programming, 1980, no. - 44-49 betlar.
R. Xolt. Kompyuter dasturlarining tuzilishi: So'rovnoma // IEEE ishlari, 1975, 63 (6). - p. 879-893.
G. Myers. Dasturiy ta'minotning ishonchliligi. - M.: Mir, 1980. - bet. 92-113.
Ya Pyle. ADA - bu o'rnatilgan tizimlarning tili. M.: Moliya va statistika, 1984. - s. 67-75.
M. Zelkovets, A. Shou, J. Gannon. Dasturiy ta'minotni ishlab chiqish tamoyillari. - M.: Mir, 1982, s. 65-71.
A.L.Fuksman. Yaratilishning texnologik jihatlari dasturiy ta'minot tizimlari... M.: Statistika, 1979. - s. 79-94.
Ma'ruza 8. Dasturiy modulni ishlab chiqish
Dasturiy modulni ishlab chiqish tartibi. Strukturaviy dasturlash va bosqichma-bosqich detallashtirish. Psevdokod haqida tushuncha. Dastur modulini boshqarish.
8.1. Dasturiy modulni ishlab chiqish tartibi.
Dasturiy modulni ishlab chiqishda quyidagi tartibga rioya qilish tavsiya etiladi:
modul spetsifikatsiyasini o'rganish va tekshirish, tilni tanlash
dasturlash;
algoritm va ma'lumotlar tuzilishini tanlash;
modullarni dasturlash;
modul matnini sayqallash;
modulni tekshirish;
modulni kompilyatsiya qilish.
Dasturiy ta'minot modulini ishlab chiqishdagi birinchi qadam, asosan, dastur tuzilmasini pastdan tutashgan boshqarishdir: modulning spetsifikatsiyasini o'rganib chiqib, dasturchi ushbu modulni ishlab chiqish uchun tushunarli va etarli ekanligiga ishonch hosil qilishi kerak. Ushbu qadam oxirida dasturlash tili tanlanadi: garchi dasturlash tili allaqachon butun dasturiy ta'minot tizimi uchun oldindan belgilab qo'yilgan bo'lsa ham, ba'zi hollarda (agar dasturlash tizimi ruxsat bersa) ushbu modulni amalga oshirish uchun ko'proq mos keladigan boshqa tilni tanlash mumkin (masalan, yig'ilish tili).
Dasturiy modulni ishlab chiqishning ikkinchi bosqichida, qo'yilgan muammoni hal qilish uchun yoki unga yaqin bo'lgan algoritmlar allaqachon ma'lum yoki yo'qligini aniqlash kerak. Agar mos algoritm topilsa, undan foydalanish maqsadga muvofiqdir. Modul o'z funktsiyalarini bajarganda foydalaniladigan ma'lumotlarning mos tuzilmalarini tanlash asosan ishlab chiqilayotgan modulning mantiqiy va sifat ko'rsatkichlarini oldindan belgilab beradi, shuning uchun bu juda mas'uliyatli qaror sifatida qaralishi kerak.
Uchinchi bosqichda modul matni tanlangan dasturlash tilida tuziladi. Modul spetsifikatsiyasida ko'rsatilgan funktsiyalarni amalga oshirishda hisobga olinishi kerak bo'lgan har xil tafsilotlarning ko'pligi osongina juda ko'p xato va noaniqliklarni o'z ichiga olgan juda chalkash matn yaratilishiga olib kelishi mumkin. Bunday modulda xatolarni topish va unga kerakli o'zgarishlarni kiritish juda ko'p vaqt talab qiladigan vazifa bo'lishi mumkin. Shuning uchun modul matnini qurish uchun texnologik jihatdan asosli va amalda tasdiqlangan dasturlash intizomidan foydalanish juda muhimdir. Dijkstra birinchi marta bunga e'tiborni qaratdi, tuzilgan dasturlashning asosiy tamoyillarini shakllantirdi va asoslab berdi. Amaliyotda keng qo'llaniladigan ko'plab dasturiy fanlar ushbu printsiplarga asoslanadi. Eng keng tarqalgan intizom - bu bosqichma-bosqich takomillashtirish, bu 8.2 va 8.3-bo'limlarda batafsil muhokama qilinadi.
Modulni rivojlantirishning navbatdagi bosqichi dasturiy ta'minot tizimining sifat spetsifikatsiyasiga muvofiq modul matnini to'liq shaklga keltirish bilan bog'liq. Modulni dasturlashda ishlab chiquvchi modul funktsiyalarini to'g'ri bajarilishiga e'tibor qaratadi, to'liq bo'lmagan sharhlarni qoldiradi va dastur uslubiga qo'yiladigan talablarning ayrim buzilishlariga yo'l qo'yadi. Modul matnini sayqallashda u talab qilinadigan sifatli ibtidoiylikni ta'minlash uchun unga matndagi mavjud sharhlarni tahrir qilishi va qo'shimcha izohlarni kiritishi kerak. Xuddi shu maqsadda dastur matni stilistik talablarga javob beradigan tarzda tahrirlangan.
Modulni tekshirish bosqichi - bu modulning ichki mantig'ini disk raskadrovka qilishdan oldin (kompyuterda bajarilishidan foydalangan holda) qo'lda tekshirish, muhokama qilingan dasturlash texnologiyasi uchun ishlab chiqilgan umumiy printsipni amalga oshirish, dasturiy ta'minotni ishlab chiqishning har bir bosqichida qabul qilingan qarorlarni nazorat qilish zarurligi to'g'risida (3-ma'ruzani ko'ring). Modulni tekshirish usullari 8.4-bo'limda muhokama qilinadi.
Va nihoyat, modulni ishlab chiqishdagi so'nggi qadam modulni tekshirishni yakunlash (kompilyator yordamida) va modulni disk raskadrovka jarayoniga o'tishni anglatadi.
8.2. Tarkibiy dasturlash.
Modulni dasturlashda dastur nafaqat kompyuter uchun, balki inson uchun ham tushunarli bo'lishi kerakligini yodda tutish kerak: ham modulni ishlab chiquvchi, ham modulni tekshiradigan shaxslar, shuningdek modulni disk raskadrovka uchun testlar tayyorlaydigan matnshunoslar va modulga kerakli o'zgarishlarni kiritadigan PS-xizmatchilari. modulning mantig'ini qayta-qayta demontaj qilish. 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. Dijkstra birinchi marta bunga e'tiborni qaratdi va dasturning mantiqiy tushunchalarini sezilarli darajada oshirishi mumkin bo'lgan bir necha turdagi boshqaruv tuzilmalari (tuzilmalari) tarkibida dastur tuzishni taklif qildi. Faqat shunday konstruktsiyalardan foydalangan holda dasturlash tizimli deb nomlangan.
Tarkibiy dasturlashning asosiy konstruktsiyalari quyidagilardan iborat: amal qilish, tarmoqlash 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.
Tarkibiy dasturlash ba'zan "GO TO-less 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, o'tish operatori (GO TO) strukturaviy dasturlarning asosiy afzalliklariga zarar etkazmasdan tuzilgan konstruktsiyalarni amalga oshirish uchun ishlatiladi. Aynan "tizimli bo'lmagan" o'tish operatorlari dasturni chalkashtirmoqda, ayniqsa yuqoridagi modul matnida joylashgan operatorga o'tish (oldinroq) o'tish operatori bajarilmoqda. Biroq, 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 dasturning ravshanligi evaziga emas, iloji bo'lsa, o'tish operatoridan foydalanishni oldini olish tavsiya qilinishi mumkin.
O'tish operatoridan foydalanishning foydali holatlariga tsikl yoki protseduradan maxsus shart bilan chiqish kiradi, bu "muddatidan oldin" ushbu tsikl yoki ushbu protsedura ishini tugatadi, ya'ni. ba'zi tarkibiy bo'linmalarning (umumlashtirilgan operator) ishini tugatish va shu bilan dasturning tuzilishini faqat mahalliy darajada buzish. Katta qiyinchiliklar (va strukturaning murakkablashishi) paydo bo'layotgan istisno (ko'pincha noto'g'ri) holatlarga reaktsiyani tizimli ravishda amalga oshirish natijasida yuzaga keladi, chunki bu nafaqat tarkibiy bo'linmadan erta chiqib ketishni, balki ushbu vaziyatni kerakli 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).
8.3. Psevdokod haqida asta-sekin batafsil ma'lumot va tushuncha.
Tarkibiy dasturlash modul matni qanday bo'lishi kerakligi to'g'risida ko'rsatma beradi. Bunday matnni tuzishda dasturchi qanday harakat qilishi kerakligi savol tug'iladi. Ba'zan modulni dasturlash uning ishlash mantig'ini aks ettiruvchi blok-sxemasini tuzishdan boshlanadi. Biroq, zamonaviy dasturlash texnologiyasi buni qilishni tavsiya etmaydi. Blok-diagrammalar modul ishining mantig'ini juda aniq aks ettirishga imkon beradigan bo'lsa-da, ular dasturlash tilida kodlanganida, xatolarning o'ziga xos manbai paydo bo'ladi: asosan ikki o'lchovli tuzilmalarni, masalan, blok diagrammalarni modulni ifodalaydigan chiziqli matnga xaritasi, modulning mantig'ini buzish xavfini o'z ichiga oladi, shuning uchun psixologik nuqtai nazardan, uni qayta ko'rib chiqishda yuqori darajadagi e'tiborni saqlab qolish juda qiyin. Blok-diagrammalar tuzishda grafik muharrirdan foydalanilganda va dasturlash tilidagi matn avtomatik ravishda ulardan hosil bo'ladigan tarzda rasmiylashtirilganda (masalan, buni P - texnologiyasida bajarish mumkin) istisno bo'lishi mumkin.
Modulning matnini qurishning asosiy usuli sifatida zamonaviy dasturlash texnologiyasi bosqichma-bosqich detallashtirishni tavsiya qiladi. Ushbu usulning mohiyati modul matnini ishlab chiqish jarayonini bir necha bosqichlarga ajratishdan iborat. Birinchi qadamda modul ishlashining umumiy sxemasi kuzatiladigan chiziqli matn shaklida (ya'ni juda katta tushunchalardan foydalangan holda) tavsiflanadi va bu tavsif to'liq rasmiylashtirilmagan va inson idrokiga yo'naltirilgan. Har bir keyingi bosqichda tushunchalardan biri takomillashtirilgan va batafsil bayon qilingan (biz uni tozalangan deb ataymiz), oldingi bosqichlardan birida ishlab chiqilgan har qanday tavsifda (qoida tariqasida, rasmiy ravishda emas) foydalaniladi. Ushbu qadam natijasida tanlangan aniq kontseptsiyaning tavsifi yoki asosiy dasturlash tili nuqtai nazaridan (ya'ni taqdimot uchun tanlangan modul) yoki yangi takomillashtirilgan tushunchalar yordamida birinchi bosqichdagi kabi shaklda yaratiladi. Ushbu jarayon barcha aniq tushunchalar oxir-oqibat asosiy dasturlash tilida ifodalanganida tugaydi. Oxirgi qadam, modulning matnini asosiy dasturlash tilida olish, aniqlangan tushunchalarning barcha ko'rinishini ularning berilgan tavsiflari bilan almashtirish va ushbu dasturlash tili yordamida tuzilgan dasturlash konstruktsiyalarining barcha hodisalarini ifodalash orqali amalga oshiriladi.
Bosqichma-bosqich detallashtirish psevdokod deb ataladigan, ko'rsatilgan tavsiflarni aks ettirish uchun qisman rasmiylashtirilgan tildan foydalanish bilan bog'liq. Ushbu til rasmiylashtirilgan barcha tuzilgan dasturlash konstruktsiyalaridan va umumiy operatorlarni va shartlarni ifodalash uchun tabiiy tildagi norasmiy qismlardan foydalanishga imkon beradi. Dasturlashning asosiy tilidagi tegishli qismlar umumlashtirilgan operatorlar va shartlar sifatida ham ko'rsatilishi mumkin.
Psevdokoddagi bosh tavsifini asosiy dasturlash tilida modulning tashqi dizayni deb hisoblash mumkin, bu
asosiy tilda modulning boshlanishi, ya'ni. ushbu modulning birinchi jumlasi yoki sarlavhasi (spetsifikatsiyasi);
asosiy tilda tavsiflar bo'limi (to'plami), protseduralar va funktsiyalar tavsiflari o'rniga - faqat ularning tashqi dizayni;
modul tanasi operatorlari ketma-ketligini bitta umumlashtirilgan operator sifatida norasmiy belgilash (quyida ko'rib chiqing), shuningdek protsedura yoki funktsiyalarning har bir tavsifining tanasi operatorlari ketma-ketligini bitta umumlashtirilgan operator sifatida norasmiy belgilash;
modulning tayanch tilidagi oxirgi jumlasi (oxiri).
Protsedura yoki funktsiya tavsifining ko'rinishi o'xshash. Ammo, agar siz Dijkstra-ga ergashsangiz, unda bu erda tavsiflar qismini norasmiy belgi bilan taqdim etib, uni alohida tavsif sifatida batafsil bayon qilish yaxshiroqdir.
Psevdokodda umumlashtirilgan operatorning norasmiy belgilanishi tabiiy tilda uning mazmunini aks ettiruvchi ixtiyoriy jumla bilan amalga oshiriladi. Bunday belgini loyihalashtirish uchun yagona rasmiy talab quyidagilardan iborat: ushbu taklif bir yoki bir nechta grafik (bosma) satrlarni to'liq egallashi va nuqta bilan tugashi kerak.
Har bir norasmiy umumlashtirilgan operator uchun tuzilgan dasturlash va boshqa umumlashtirilgan operatorlarning asosiy tuzilmalari tarkibidan foydalangan holda uning ishlash mantig'ini ifodalovchi (tarkibini batafsil bayon qiladigan) alohida tavsifni yaratish kerak. Bunday tavsifning nomi batafsil umumiy operatorning norasmiy belgisi bo'lishi kerak. Strukturaviy dasturlashning asosiy tuzilmalari quyidagi shaklda ifodalanishi mumkin (8.2-rasmga qarang). Bu erda shart bazaviy dasturlash tilida mantiqiy ifoda sifatida aniq o'rnatilishi mumkin yoki u tabiiy sharoitda norasmiy ravishda ushbu shartning ma'nosini ko'rsatadigan ba'zi bir qismlar bilan ifodalanishi mumkin. Ikkinchi holda, ushbu shartni (tabiiy tilda parcha) sarlavha sifatida belgilashni ko'rsatadigan ushbu shartni batafsil tavsiflash kerak.
Shakl: 8.2. Psevdokodda tuzilgan dasturlashning asosiy konstruktsiyalari.
Shakl: 8.3. Umumlashtirish operatori sifatida o'tish operatorining alohida holatlari.
Psevdokod bo'yicha umumlashtirilgan operator sifatida o'tish operatorining yuqoridagi alohida holatlaridan foydalanish mumkin (8.3-rasmga qarang). Istisno ishlovchilarining ketma-ketligi (istisnolar) modul yoki protsedura (funktsiya) tavsifining oxirida ko'rsatiladi. Har bir bunday ishlov beruvchi quyidagicha ko'rinadi:
EXCEPTION exception_name
generic_operator
HAMMA CHIQARILAR
Istisno ishlov beruvchisi bilan parametrlarsiz protsedura o'rtasidagi farq quyidagicha: protsedura bajarilgandan so'ng, boshqaruv unga qo'ng'iroqdan so'ng operatorga qaytadi va istisno bajarilgandan so'ng boshqaruv modulga yoki protsedura (funktsiyaga) chaqirilgandan so'ng operatorga qaytadi, uning oxirida ( qaysi) ushbu istisno joylashtirilgan.
Tafsilotlarning har bir bosqichida matnning bitta sahifasiga joylashtirilishi uchun etarlicha mazmunli, ammo oson ko'rinadigan (tavsiflovchi) tavsifni yaratish tavsiya etiladi. Odatda, bu shuni anglatadiki, bunday tavsif beshdan oltitagacha tuzilgan dasturlash konstruktsiyalaridan iborat bo'lishi kerak. Ichki tuzilmalarni bir nechta pozitsiyalar bilan o'ngga siljish bilan joylashtirish tavsiya etiladi (8.4-rasmga qarang). Natijada, aniqlik nuqtai nazaridan ish mantig'ining tavsifini olish mumkin, bu blok-sxemalar bilan ancha raqobatdosh, ammo sezilarli ustunlikka ega - tavsifning chiziqliligi saqlanib qoladi.
BIRINChIDAN FAYLDAGI YO'QLARNI O'CHIRING
QONIQTIRISH FILTRASI:
Fayl boshlanishini sozlang.
Agar muntazam ravishda kirish qoniqsa
FILTRE
Fayldan muntazam kirishni o'chirish.
HAMMA
Xayr
Agar yozuvlar o'chirilmasa
"KIRISHLAR O'CHIRILMAYDI" PRINT.
"O'chirilgan n yozuvlar" ni chop eting.
HAMMA
|
Shakl: 8.4. Psevdokodda bitta burg'ulash qadamiga misol.
Dijkstra ba'zan bosqichma-bosqich detallashtirish g'oyasiga ega. Shu bilan birga, Dijkstra modulning matnini tuzishning tubdan boshqacha uslubini taklif qildi, biz uni chuqurroq va istiqbolli deb hisoblaymiz. Birinchidan, operatorlarni tushuntirish bilan birga u foydalanilgan ma'lumotlar tuzilmalarini takomillashtirishni (batafsil) bosqichma-bosqich (bosqichma-bosqich) taklif qildi. Ikkinchidan, har bir qadamda u tafsilotlar uchun virtual mashinani yaratishni va uning so'zlari bilan aytganda, ushbu mashina buni amalga oshirishga imkon beradigan barcha aniq tushunchalarni batafsil bayon qilishni taklif qildi. Shunday qilib, Dijkstra o'z mohiyatini gorizontal qatlamlar bo'yicha batafsil bayon qilishni taklif qildi, bu uning qatlamli tizimlar haqidagi g'oyasini (qarang: 6-ma'ruzani) modulni ishlab chiqish darajasiga o'tkazish. Ushbu modulni ishlab chiqish usuli hozirda ADA tili paketlari va ob'ektga yo'naltirilgan dasturlash vositalari tomonidan qo'llab-quvvatlanmoqda.
8.4. Dastur modulini boshqarish.
Dasturiy modulni boshqarish uchun quyidagi usullardan foydalaniladi:
modul matnini statik tekshirish;
oxiridan oxirigacha kuzatib borish;
dastur moduli xususiyatlarining isboti.
Modul matnini statik tekshirishda modulda xatolarni topish uchun ushbu matn boshidan oxirigacha o'qiladi. Odatda, bunday tekshiruvga modul ishlab chiquvchisidan tashqari bir yoki hatto bir nechta dasturchilar jalb qilinadi. Bunday tekshirish paytida aniqlangan xatolarni darhol emas, balki modul matnini o'qish tugagandan so'ng tuzatish tavsiya etiladi.
Kuzatuv - bu dinamik modulni boshqarish turlaridan biri. Bunga modulning bajarilishini qo'lda aylantiradigan bir nechta dasturchilar kiradi (operator tomonidan operator tomonidan modulning ishlash mantig'idan kelib chiqadigan ketma-ketlikda) ma'lum testlar to'plamida.
Keyingi ma'ruza dasturlarning xususiyatlarini isbotlashga bag'ishlangan. Shuni ta'kidlash kerakki, bu usul hali ham juda kam qo'llaniladi.
8-ma'ruza uchun adabiyot.
8.2. E. Dijkstra. Strukturaviy dasturlash bo'yicha eslatmalar // U.Dahl, E. Dijkstra, K. Hoore. Tarkibiy dasturlash. - M.: Mir, 1975. - S. 24-97.
8.3. N. Virt. Tizimli dasturlash. - M.: Mir, 1977. - S. 94-164.
Ma'ruza 9. Dastur xususiyatlarini isbotlash
Dasturni asoslash tushunchasi. Dastur xususiyatlarini rasmiylashtirish, Xor uchligi. Topshirish operatori, shartli va birikma operatorlarning xususiyatlarini belgilash qoidalari. Loop operatorining xususiyatlarini o'rnatish qoidalari, tsiklning o'zgarmasligi tushunchasi. Dasturning bajarilishining to'liqligi.
9.1. Dasturlarning asoslanishi. Dastur xususiyatlarini rasmiylashtirish.
Dasturiy ta'minotning ishonchliligini oshirish uchun dasturlarni qo'shimcha ma'lumot bilan ta'minlash juda foydalidir, ulardan foydalanib siz dasturiy ta'minotni boshqarish darajasini sezilarli darajada oshirishingiz mumkin. Bunday ma'lumotlar dasturlarning turli qismlariga bog'langan norasmiy yoki rasmiylashtirilgan bayonotlar shaklida ko'rsatilishi mumkin. Biz bunday bayonotlarni dastur uchun asos deb ataymiz. Masalan, dasturlarning norasmiy asoslanishi, masalan, xatolarni qidirish va tuzatishni, shuningdek ularni saqlab qolish bilan birga dasturlarni o'rganishni sezilarli darajada osonlashtiradigan ba'zi qarorlarni qabul qilish sabablarini tushuntirishi mumkin. Rasmiylashtirilgan asoslashlar dasturlarning ba'zi xususiyatlarini qo'lda isbotlash va ularni avtomatik ravishda boshqarish (sozlash) imkonini beradi.
Hozirda dasturlarni rasmiy asoslash uchun ishlatilayotgan tushunchalardan biri bu Xor uchliklaridan foydalanishdir. S, IS, P va Q axborot muhiti bo'yicha ba'zi bir umumlashtirilgan operator bo'lsin - bu muhitga nisbatan ba'zi predikatlar (bayonotlar). U holda (P) S (Q) yozuv Xor uchligi deb ataladi, unda P predikati old shart, Q predikati esa S operatoriga nisbatan postkonditsiya deb ataladi. Operator (xususan, dastur) S (P) S (Q) xususiyatiga ega deyiladi. agar har doim S operator bajarilishidan oldin P predikat to'g'ri bo'lsa, ushbu S operator bajarilgandan keyin Q predikat to'g'ri bo'ladi.
Dastur xususiyatlarining oddiy misollari:
(9.1) (n \u003d 0) n: \u003d n + 1 (n \u003d 1),
(9.2) (n
(9.3) (n<3*(m+k)},<="" p="">
(9.4) (n\u003e 0) p: \u003d 1; m: \u003d 1;
M / \u003d n qilganda
Xayr
S dasturining xususiyatini isbotlash uchun dasturlash tilining sodda operatorlarining xossalaridan foydalaniladi (bu erda biz o'zimizni bo'sh operator va tayinlash operatori bilan cheklaymiz) va boshqaruvchi tuzilmalar (kompozitsiyalar) xossalari ishlatiladi, ular yordamida oddiy operatorlardan dastur tuziladi (biz bu erda o'zimizni tuzilgan dasturlashning uchta asosiy tarkibi bilan cheklaymiz, qarang Ma'ruza 8). Ushbu xususiyatlar odatda dasturni tekshirish qoidalari deb ataladi.
Do'stlaringiz bilan baham: |