Quyidagi kod ikkita tasdiqni o'z ichiga oladi, x> 0 va x> 1va ular haqiqatan ham ijro paytida ko'rsatilgan nuqtalarda to'g'ri keladi


Rivojlanish tsikli davomida tasdiqlash



Download 32,25 Kb.
bet3/4
Sana03.07.2022
Hajmi32,25 Kb.
#735304
1   2   3   4
Bog'liq
Dasturiy kodlarni tekshiruvchi kompilyator dasturini yaratish

Rivojlanish tsikli davomida tasdiqlash
Davomida rivojlanish tsikli, dasturchi odatda dasturni tasdiqlashlar yoqilgan holda boshqaradi. Tasdiqlashda xatolik yuz berganda, dasturchiga muammo haqida darhol xabar beriladi. Ko'pgina tasdiqlash dasturlari dasturning bajarilishini to'xtatadi: bu foydalidir, chunki agar dastur tasdiqlash buzilganidan keyin ishlashni davom ettirsa, bu uning holatini buzishi va muammo sababini topishni qiyinlashtirishi mumkin. Tasdiq etishmovchiligi bilan ta'minlangan ma'lumotdan foydalanish (masalan, xato joyi va ehtimol a stack iz, yoki hatto atrof-muhit qo'llab-quvvatlasa, to'liq dastur holati yadro chiqindilari yoki dastur a da ishlayotgan bo'lsa tuzatuvchi), dasturchi odatda muammoni hal qilishi mumkin. Shunday qilib, tasdiqlashlar disk raskadrovka jarayonida juda kuchli vositani taqdim etadi.
Ishlab chiqarish muhitidagi tasdiqlar
Agar dastur joylashtirilsa ishlab chiqarish, tasdiqlashlar, ular yuzaga kelishi mumkin bo'lgan ortiqcha va nojo'ya ta'sirlardan saqlanish uchun odatda o'chiriladi. Ba'zi hollarda, tasdiqlangan kodlar mavjud emas, masalan, makrolar orqali C / C ++ da. Boshqa holatlarda, masalan, Java, tasdiqlangan kodlarda mavjud va ularni disk raskadrovka uchun maydonda yoqish mumkin.[2]
Tasdiqlash, shuningdek, kompilyatorga berilgan chekka holatga erishish mumkin emasligini va'da berish uchun ham ishlatilishi mumkin va shu bilan ba'zi narsalarga ruxsat beradi. optimallashtirish aks holda buning iloji bo'lmaydi. Bunday holda, tasdiqlarni bekor qilish, aslida ish faoliyatini pasaytirishi mumkin.
Statik tasdiqlar
Kompilyatsiya vaqtida tekshiriladigan tasdiqlar statik tasdiqlar deyiladi.
Statik tasdiqlar kompilyatsiya vaqtida ayniqsa foydalidir shablonni metaprogramlash, lekin C kabi past darajadagi tillarda, agar tasdiq bajarilmasa (va faqatgina) noqonuniy kodni kiritish orqali ishlatilishi mumkin. C11 va C ++ 11 orqali to'g'ridan-to'g'ri statik tasdiqlarni qo'llab-quvvatlash statik_assert. Oldingi C versiyalarida statik tasdiqlash amalga oshirilishi mumkin, masalan:
#define SASSERT (pred) switch (0) {case 0: case pred :;}SASSERT( BOOLEAN ShART );
Agar (BOOLEAN SHART) qismi "false" deb baholanadi, keyin yuqoridagi kod kompilyatsiya qilinmaydi, chunki kompilyator ikkitasiga yo'l qo'ymaydi ish yorliqlari bir xil doimiylik bilan. Mantiqiy ifoda, masalan, kompilyatsiya vaqtining doimiy qiymati bo'lishi kerak (sizeof (int) == 4) bu kontekstda to'g'ri ifoda bo'lar edi. Ushbu qurilish fayl hajmida ishlamaydi (ya'ni funktsiya ichida emas) va shuning uchun uni funktsiya ichiga o'ralgan bo'lishi kerak.
Boshqa mashhur[3] tasdiqlovlarni C-da amalga oshirish usuli bu:
statik char konst statik_assertion[ (BOOLEAN ShART) ? 1 : -1 ] = {'!'};
Agar (BOOLEAN SHART) qismi noto'g'ri qiymatiga baho beradi, keyin yuqoridagi kod kompilyatsiya qilinmaydi, chunki massivlar salbiy uzunlikka ega bo'lmasligi mumkin. Agar aslida kompilyator salbiy uzunlikka yo'l qo'ysa, u holda initsializatsiya bayti ( '!' qismi) hatto bunday yengil kompilyatorlarning ham shikoyat qilishiga sabab bo'lishi kerak. Mantiqiy ifoda, masalan, kompilyatsiya vaqtining doimiy qiymati bo'lishi kerak (sizeof (int) == 4) bu kontekstda to'g'ri ifoda bo'lar edi.
Ushbu ikkala usul ham noyob nomlarni yaratish usulini talab qiladi. Zamonaviy kompilyatorlar a __COUNTER__ preprocessor har bir kompilyatsiya birligi uchun monotonik ravishda ko'payib boruvchi sonlarni qaytarib, noyob nomlarni yaratishni engillashtiradigan belgilaydi.[4]
D. dan foydalanish orqali statik tasdiqlarni beradi statik tasdiq.[5]

Download 32,25 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish