رفتن به محتوای اصلی

مجله مسیر حرفه‌ای کارجویا

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

۱۴۰۰/۰۵/۱۸ مهندسی کامپیوتر ۱ دقیقه زمان مطالعه

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

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

خطای(Error) برنامه نویسی، مشکلی در برنامه است که باعث عملکرد غلط آن و بروز رفتاری غیر طبیعی در اجرای برنامه می‌شود. این خطاها آنقدر رایج اند که حتی برنامه نویسان باتجربه بارها دچار آن می­‌شوند. خطاهای برنامه نویسی را عموما با عنوان bug نیز می­‌شناسند. از این رو به فرآیند رفع خطاهای برنامه نویسی debugging می­‌گویند.

این خطاها یا در زمان کامپایل(Compile) و یا در زمان اجرای برنامه(Execution) ممکن است رخ دهد.

به طور کلی در برنامه نویسی C پنج نوع خطا ممکن است رخ دهد:

  • Syntax error
  • Run-time error
  • Linker error
  • Logical error
  • Semantic error

در این مقاله می‌خواهیم با چند نوع رایج آن یعنی Syntax، Run-time، Logical و Semantic error آشنا شویم.

Syntax error

خطای syntax با عنوان خطای کامپایل(Compile error) نیز شناخته می‌­شود. همانطور که از نام آن پیداست، این خطا موقع کامپایل برنامه رخ می‌­دهد؛ در واقع کامپایلر، این خطا را تولید می­‌کند. این خطاها معمولا زمانی بوجود می­‌آیند که کلمه­‌ای از لحاظ املایی و حروف بزرگ-کوچک درست نباشد و یا دستورات را به نحو صحیح به کار نبریم. برای مثال اگر برای تعریف متغیر x از نوع integer (عدد صحیح) از عبارت Int x به جای int x استفاده کنیم(حرف i را به صورت بزرگ بنویسیم)، این یک خطای سینتکس است و قبل از اجرای برنامه، کامپایلر خطا را تشخیص می‌­دهد.
به مثال دیگری توجه کنید:

c1 کارجویا

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

c2 کارجویا

مثال دیگر:

c3 کارجویا

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

c4 کارجویا

به طور کلی خطاهای سینتکس در شرایط زیر رخ می­‌دهند:

  • فراموش کردن پرانتز و آکولاد در نوشتن کد
  • تخصیص مقدار به یک متغیر بدون مشخص کردن نوع آن(undeclared variable)

قرار ندادن سمیکالن “;” در انتهای دستورات

Run-time error

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

برای مثال:

c5 کارجویا c6 کارجویا

Logical error

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

c7 کارجویا

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

c8 کارجویا

Semantic error

این خطا هنگامی رخ می‌­دهد که یک جمله برای کامپایلر نامفهوم باشد. موارد زیر می­توانند از عوامل بروز semantic error باشند:

  • استفاده از یک متغیر بدون مقدار اولیه

int i;
i = i + 2;

  • همخوان نبودن نوع و مقدار متغیر

int b = “javapoint”;

  • خطا در توصیف عبارت­ها

int a,b,c;
a + b = c;

  • استفاده از اندیس خارج از محدوده آرایه

int a[10];
a[10] = 34;

به یک مثال توجه کنید:

c9 کارجویا

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

c10 کارجویا

آیا محتوا مفید بود؟

نویسنده مقاله

علی منصوری

کارجویا

ورود به کارجویا

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

حساب نداری؟ ثبت نام کن