|
51. Dasturda yuz beradigan xatoliklar. Sintaktik xatolar
|
bet | 1/4 | Sana | 19.02.2023 | Hajmi | 30.3 Kb. | | #42795 |
Bog'liq 51. Dasturda yuz beradigan xatoliklar. Sintaktik xatolar approk, Fotometrik usulda nodir metallar aniqlash, Estetik tarbiya, k1323, 12121212
51. Dasturda yuz beradigan xatoliklar.Sintaktik xatolar
Xatolarni borligini aniqlab ularni to‘g‘rilash - sozlash deb
ataladi. Dasturlarni u yeki bu xatolarda sozlash majburiydir. Aks xolda biz uni testdan o‘tkazishimiz kerak bo‘ladi. Jarayonni sozlash dasturni ishlash usuliga bog‘liq, yaoni foydalaniladigan mashinaga, jarayon sistemasiga, dasturlash tiliga, beriladigan vazifa tarkibiga va xattoki dasturni muayyan xususiyatiga xam boulik bo‘ladi. Yana shuni aniq aytish mumkinki, xar birxil,qurilma va mashinalar dastur kamchiliklari dasturlash xatolari bilan uzluksiz bog‘liq.
Masalan: Sintaksis xatolar bo‘lganda dasturlashni aniq tili orkali oldindan bilib yeki aniqlab olinadi.
area() funksiyasini quyidagicha chaqirsak nima sodir bo’ladi:
int s1 = area(7; // xato: qavs tushirib qoldirilgan )
int s2 = area(7) // xato: nuqta vergul tushirib qoldirilgan ;
Int s3 = area(7); // xato: Int — tur emas
int s4 = area('7); // xato: tirnoqcha tushirib qoldirilgan '
Xar bir qator sintaktik xatoga ega, boshqacha qilib aytganda ular C++ grammatikasiga to’g’ri kelmaydi. Afsuski barcha hollarda ham xatolarni dasturchi tushinishiga oson qilib ifodalash qiyin. Natijada eng oddiy sintaktik xatolar xam tushunarsiz ifodalanadi, bundan tashqari xatolikka ko’rsatayotgan qator ham bir oz uzoqroqda joylashgan bo’ladi. Shuning uchun kompilyator ko’rsatayotgan qatorda hech qanday xatolik ko’rmayotgan bo’lsangiz biroz yuqoriroq qatorlarni tekshirib chiqing.
52. Dasturda yuz beradigan xatoliklar.Semantik xatolar
52 51 bilan bir xil ekan
53. Dasturda yuz beradigan xatoliklar.Mantiqiy xatolar
Mantiqiy xatoliklar. Dasturda mantiqiyxatoliklar kutilgan natija olinmaganda sodir bo‘ladi. Bu holat turli sabablarga ko‘ra yuzaga keladi. Misol tariqasida quyidagi dasturni ko‘ribchiqamiz:
1 #include
2 using namespace std;
3
4 int main()
5 {
6 cout << "Selsiy 35 darajasining Farangeytdagi ko‘rsatkichi" << endl;
7 cout << (9 / 5) * 35 + 32 << endl;
8
9 return 0; 10 }
Natija: Selsiy 35 darajasining Farangeytdagi ko‘rsatkichi
67
Dastur Selsiy 35 darajasi Farangeytning 67 darajasiga teng degan noto‘g‘ri natija berdi. Natija 95 bo‘lishi kerak edi. C++da butun qiymatlar o‘rtasida bo‘lish amali bajarilganda natijaning butun qismigina uzatiladi: 9/5=1. To‘g‘ri natijani olish uchun esa 9.0/5 ko‘rinishda kiritilishi lozim.
Umuman olganda, sintaksis xatolikni aniqlash juda oson, chunki uni kompilyator ko‘rsatib beradi. Runtime xatoligi ham u qadar murakkab emas, unda dastur strukturasi yoki qaysidir operatorning noto‘g‘ri kiritilganlini dastur kodini qaytadan ko‘rib chiqish orqali aniqlash mumkin. Mantiqiy xatolikni aniqlash esa umuman boshqa masala. Bu turli vaziyatlarda sodirbo‘lishi lozim. Mantiqiy xatolikni aniqlash uchun bajarilishi lozim bo‘lgan masalaning nazariyasi va dasturlash tili qonuniyatlarining mutanosibligini ko‘rib chiqish, fikrlash orqali aniqlash mumkin bo‘ladi.
|
| |