Dasturdagi umumiy xatolar. 1. Vazifani noto’g’ri qo’yilishi Noto’g’ri berilgan vazifani to’g’ri echish.
2. Noto’g’ri algoritm Vazifani noto’g’ri yoki samarasiz echishga olib keluvchi algoritm.
3. Tahlildagi xato. Algoritmni noto’g’ri dasturlash.
4. Semantiq xato. Buyruqni tansiflash tartibini tushunmaslik.
5. Sintaktik xato. Dasturlash tili yordamida aniqlangan qoidani buzish.
6. Jarayon bahsdagi xatolar. Hisoblashdagi chegaralovchi shartlarga ko’rsatmalarning yo’qligi.
7. Malumotdagi xatolar. Ma`lumotda hosil bo’luvchi o’zgarishlarni noto’g’ri aniqlash.
8. Hujjatdagi xatolar. Foydalanuvchining hujjatlari xaqiqiy dasturga mos kelmasligi.
Sodda dasturlash. Dasturni qoniqarli sozlashda kodlashni oddiyligi va to’g’riligi katta ta`sir ko’rsatadi. Shuning uchun har xil ramz belgiyu va h. k. lardan foydalanmaslik kerak. Chunki ular dasturni sozlashda katta to’sqinlar hosil qiladi. Murakkab dasturning boshlangich bosqichlarida oddiy va kichkina bloklar, uni soddalashtirish uchun qo’shib yoziladi. Dasturni qulay o’qishligi sozlashni ham osonlashtiradi.
Xamma dasturlar mantiqan olib qaraganda ayrim bir ma`lumotlar ta`sir ko’rsatuvchi xududlarni aniq ko’rsatishi, ya`ni dastur ish bajarish qobiliyatiga ega bo’lishi, malumotlarni ko’rsatilgan chegaralarda turganligini aniqlash uchun operatorlarni kiritish imkoniga ega bo’lishi kerak.
Dasturni foydalanishga berishdan oldin uni to’g’riligigi ishonch hosil qilish kerak. Noto’g’rilikni aniqlashni ikkita usuli bor:
1. Dasturni konstruktciyasi sintaktik xato.
2. Dastur noto’g’ri natijalar ko’rsatmoqda.
Sintaktik xato. Traslyator yordamida sintaktik xatolarni aniqlash dasturni sozlashda eng kerakli va muhim o’rinlarni egallaydi. chunki qancha ko’p xato bo’lsa shu bosqichda aniqlanib to’g’rilansa, keyinchalik sozlashda va testdan o’tkazishda ish oson bo’ladi. Yana bu xatolarni aniqlashning muximligi shundaki, agar ular aniqlanmasa. keyinchalik dasturni bajarishda katta qiyinchiliklarga olib keladi.
Kompilyator uchun bu xatolar dasturni sinash uchun ko’rib o’tishdan oldin bartaraf etilishi lozim. Berilgan operatorlardagi sintaksis xatolar sifatida quyidagilarni misol qilib ko’rsatishimiz mumkin:
-Tinish belgilarini qo’yishda kerakli belgilarni tashlab ketish.
-Kelishilmagan holda qavslarni qo’yish.
-Kerakli qavslarni tashlab ketish.
-Operatorni noto’g’ri shakllantirish.
-O’zgaruvchilar nomini noto’g’ri shakllash.
-Arifmetik operatorlardan noto’g’ri foydalanish.
-Olib qo’yilgan yoki ajratib qo’yilgan so’zlarni noto’g’ri yozish.
Ikkita yoki undan ortiq operatorlarni egallab oluvchi sintaktik xatolarga quyidagilar kiradi:
-Karamaqarshi buyruq.
-Tcikl oxirini ko’rsatuvchi shartlar yo’qligi
-Belgilar yo’qligi.
-Massvlarni tavsifini yo’qligi.
-Taqiqlangan o’tishlar.
Agar komplyator ikkita yoki undan ortiq buyruqlarni birma-bir tekshirib chiqmasa unda yuqorida ko’rsatilgan xatolar aniqlanmay qolib ketadi. Bir xilgi vaqtda yaxshi sozlovchi komplyator tekshirishga ketadigan vaqtni teng yarmini meyorlab qoladi. Maxsus sozlovchi ko’ramalar oddiysiga nisbatan sintaktik xatolarni yaxshi aniqlaydi.
Chunki u o’zaro ta`sir etuvchi buyruqlarni va sintaktik tizimni birma-bir tekshirib chiqadi. Sozlovchi ko’ramalar EVM bilan birgalikda keltirilmaydi. Ularni alohida sotib olish kerak.
Agar sozlash dasturchining ishchi vaqtini 70% ni va mashina vaqtini ko’p qismni egallasa, demak, sozlovchi zarur va u tez orada o’z-o’zini qoplaydi.
Barcha asosiy dasturlash tillarini sozlovchi komplyator bilan ta`minlangan bo’ladi. Agar dasturda mos keluvchi operatorlar to’g’ri shakllantirilgan bo’lsa, u xolda komplyator ayrim xatolarni aniqlay olmaydi.
Bir qator komplyator dastur ob`ektini yordamchi bloklarini keltirib chiqaradi. (Masalan, diapazonlarni va indekslarni o’zlashtirish tekshiruvchi bloklar). Bu bloklar dasturni bajarishda ayrim tafsifga ega bo’lgan xatolarni nazorat qiladi. Bunday bloklar qanchalik ko’p bo’lsa xatolarni ushlash jarayoni shuncha oson kechadi.