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.
1 Sintaksis xatolik. Kompilyator tomonidan aniqlangan xatoliklar sintaksis xatoliklar yoki kompilyatsiya xatoliklari deyiladi.
Sintaksis xatolik dastur kodini mashina kodiga kompilyatsiya qilish jarayonida kompilyator tomonidan aniqlanadi. Sintaksis xatolik kod tuzilishi buzilganda, kalit so‘zlardagi xatolik, zaruriy belgilarni tashlab ketish, qo‘llanilishi mumkin bo‘lmagan belgilar yozilganda, faqat dastur kodini terishda ishlatiladigan kalit so‘zlar dastur ichida oddiy so‘z sifatida qo‘llanilganda va boshqa shu kabi hollarda yuz beradi.
Sintaksis xatolikka quyidagi dastur va xatolik to‘g‘risidagi kompilyator uzatgan ma’lumotni taqdim etamiz:
1 #include
2 using namespace std;
3
4 int main ()
5 {
6 cout << “Dasturlash kursi << endl;
7
8 return 0;
9 }
Ushbu dastur Visual C++ muhitida kompilyatsiya qilinsa, u quyidagi xatoliklarni ko‘rsatadi:
1>Test.cpp(4): error C2144: syntax error : ‘int’ should be preceded by ‘;’
1> Test.cpp(6): error C2001: newline in constant
1>Test.cpp(8): error C2143: syntax error : missing ';' before 'return'
Bu yerda asosiy ikki xatolik yuz bergan. Birinchidan, 4-satrning so‘ngida “;” belgisi tushirib qoldirilgan. Ikkinchidan, 6-satrda ochilgan qo‘shtirnoq yopilmagan.
Do'stlaringiz bilan baham: |