انواع خطا در برنامه نویسی C

مطالب کاربردی برای یادگیری مهارت، شناخت بهتر بازار کار و تصمیمگیری دقیقتر درباره آینده حرفهای.

خطای(Error) برنامه نویسی، مشکلی در برنامه است که باعث عملکرد غلط آن و بروز رفتاری غیر طبیعی در اجرای برنامه میشود. این خطاها آنقدر رایج اند که حتی برنامه نویسان باتجربه بارها دچار آن میشوند. خطاهای برنامه نویسی را عموما با عنوان bug نیز میشناسند. از این رو به فرآیند رفع خطاهای برنامه نویسی debugging میگویند.
این خطاها یا در زمان کامپایل(Compile) و یا در زمان اجرای برنامه(Execution) ممکن است رخ دهد.
به طور کلی در برنامه نویسی C پنج نوع خطا ممکن است رخ دهد:
در این مقاله میخواهیم با چند نوع رایج آن یعنی Syntax، Run-time، Logical و Semantic error آشنا شویم.
خطای syntax با عنوان خطای کامپایل(Compile error) نیز شناخته میشود. همانطور که از نام آن پیداست، این خطا موقع کامپایل برنامه رخ میدهد؛ در واقع کامپایلر، این خطا را تولید میکند. این خطاها معمولا زمانی بوجود میآیند که کلمهای از لحاظ املایی و حروف بزرگ-کوچک درست نباشد و یا دستورات را به نحو صحیح به کار نبریم. برای مثال اگر برای تعریف متغیر x از نوع integer (عدد صحیح) از عبارت Int x به جای int x استفاده کنیم(حرف i را به صورت بزرگ بنویسیم)، این یک خطای سینتکس است و قبل از اجرای برنامه، کامپایلر خطا را تشخیص میدهد.
به مثال دیگری توجه کنید:

در قطعه کد بالا در خط پنجم نوع متغیر a مشخص نشده بنابراین هنگام کامپایل برنامه، این خطا تشخیص داده شده و در خروجی به صورت پیام زیر نمایش داده میشود:

مثال دیگر:

در این مثال به جای اینکه شرط if داخل پرانتز قرار گیرد، یک نقطه گذاشته شده و خطای سینتکس رخ میدهد. این خطا نشان میدهد از دستور if به صورت صحیح استفاده نشده.

به طور کلی خطاهای سینتکس در شرایط زیر رخ میدهند:
قرار ندادن سمیکالن “;” در انتهای دستورات
بعضی اوقات در زمان اجرای برنامه حتی پس از اینکه کامپایل برنامه با موفقیت انجام شد، برنامه قادر به اجرای برخی دستورات نیست و عملکرد صحیحی نخواهد داشت. از این رو خطای زمان اجرا(Run-time error) رخ میدهد. برای مثال تقسیم بر صفر، از جمله خطاهای رایج زمان اجراست. پیدا کردن این نوع خطاها و رفع آنها معمولا بسیار مشکل است زیرا کامپایلر آنها را تشخیص نمیدهد.
برای مثال:

خطای منطقی یا logical error، خطایی است که منجر به خروجی نامطلوب میشود. در واقع این نوع خطاها مشکلی در کامپایل و اجرای برنامه ایجاد نمیکنند بلکه اشتباهاتی هستند که برنامه نویس هنگام کد زدن مرتکب میشود و منجر به خروجی نامطلوبی میشود که هدف برنامه نویس از نوشتن آن قطعه کد چیز دیگری بوده. به مثال زیر توجه کنید:

در مثال بالا هدف برنامه نویس محاسبه مجموع اعداد طبیعی از ۱ تا ۱۰ میباشد. اما به علت سمیکالنی که در انتهای حلقه for (خط ۶) قرار داده، مرتکب یک خطای منطقی شده است. وجود سمیکالن در انتهای حلقه for باعث میشود تنها یک بار دستورات داخل بلوک for(خطوط ۸ و ۹) اجرا شوند و حلقه متوقف شود؛ بنابراین عبارت sum = sum + k تنها یکبار اجرا شده و مقدار sum برابر ۱ میشود و در خروجی داریم:

این خطا هنگامی رخ میدهد که یک جمله برای کامپایلر نامفهوم باشد. موارد زیر میتوانند از عوامل بروز semantic error باشند:
int i;
i = i + 2;
int b = “javapoint”;
int a,b,c;
a + b = c;
int a[10];
a[10] = 34;
به یک مثال توجه کنید:

در قطعه کد بالا از جمله a + b = c استفاده شده که غلط است زیرا نمیتوان دو عملگر را در سمت چپ یک تساوی قرار داد.

برای ورود به حساب کاربری، شماره موبایل ثبتشده خود را وارد کنید.
حساب نداری؟ ثبت نام کن