مدیریت خطا و اشکال‌زدایی

انواع خطاهای کامپایل و اجرا در پاسکال و تکنیک‌های سیستماتیک دیباگ.

خطاها دوست شما هستند!

هیچ برنامه‌نویسی بدون خطا کد نمی‌نویسد. حرفه‌ای کسی است که خطاها را سریع پیدا و رفع کند.

دو نوع خطا

۱. خطاهای کامپایل (Compile Errors)

قبل از اجرا گرفته می‌شوند — پاسکال در این کار عالی است:

خطاعلت رایجراه‌حل
«;» expectedنقطه‌ویرگول جا افتادهانتهای دستورها را چک کنید
«.» expectedend. بدون نقطهآخرین end باید end. باشد
Undefined symbolمتغیر تعریف‌نشده یا غلط املاییبخش var را چک کنید
Type mismatchمقدار نامناسب برای نوعمثل متن در integer
Unexpected endbegin/end نامتوازنبلوک‌ها را بشمارید

۲. خطاهای اجرا (Runtime Errors)

کامپایل می‌شود اما موقع اجرا خراب می‌شود:

خطاعلتپیشگیری
Division by zeroتقسیم بر صفرقبل از div/mod مقسوم را چک کنید
Range checkایندکس خارج از آرایهحلقه‌ها را با محدوده تطبیق دهید
Stack overflowبازگشت بی‌نهایتشرط پایه را چک کنید
Invalid opcodeمنطق غلطکد را بازبینی کنید

تکنیک‌های دیباگ

۱. پیام‌های چاپی (ساده‌ترین!)

var
  i, sum: integer;
begin
  sum := 0;
  for i := 1 to 5 do
  begin
    sum := sum + i;
    writeln('DEBUG: i=', i, ' sum=', sum);   { موقت! }
  end;
end;

۲. بازبینی منطقی

کد را خط به خط «مثل کامپیوتر» اجرا کنید — روی کاغذ مقادیر را بنویسید:

i=1: sum=0+1=1
i=2: sum=1+2=3
i=3: sum=3+3=6 ...

۳. کوچک کردن مسئله

اگر ورودی ۱۰۰۰ تایی خراب است، با ۳ عنصر تست کنید — خطا زودتر دیده می‌شود.

۴. نصف کردن کد

نصف اول را کامنت کنید — اگر خطا ماند، در نصف دوم است؛ وگرنه در اول!

مثال: شکار باگ

{ باگ: میانگین غلط! }
program Bug;
var
  a, b: integer;
  avg: real;
begin
  a := 3;
  b := 4;
  avg := a + b / 2;      { ❌ فقط b تقسیم شده! }
  writeln(avg:0:2);      { 5.0 — غلط! }

  avg := (a + b) / 2;    { ✅ پرانتز! }
  writeln(avg:0:2);      { 3.5 — درست }
end.

چک‌لیست باگ‌های رایج پاسکال

خلاصه

این مبحث بخشی از دوره آموزش کامل پاسکال است.

ابزارهای مرتبط