درس ۱۹ از ۲۵ · برنامه‌های بزرگ‌تر

قواعد مترجم

مترجم سلام خیلی از اشتباه‌ها را پیش از اجرا می‌گیرد و پیامش را به فارسی و همراه راه‌حل می‌دهد. این درس رایج‌ترین آن‌ها را نشان می‌دهد.

چرا این‌قدر سخت‌گیر؟

هر خطایی که مترجم بگیرد، خطایی است که هرگز به دست کاربر نمی‌رسد. سلام برای همین چیزهایی را که در زبان‌های دیگر فقط هشدارند، خطا می‌داند. هر پیام خطا جای دقیق خطا را با شماره‌ی خط و ستون نشان می‌دهد.

رایج‌ترین خطاها

کدپیام مترجم
عدد := ۵ و به‌کارنبردن آنمتغیر استفاده‌نشده 'عدد': پس از تعریف هیچ‌جا به کار نرفته است
عدد := ۵ سپس عدد = ۶نمی‌توان متغیر تغییرناپذیر 'عدد' را دوباره مقداردهی کرد؛ برای این کار آن را 'ناپایا' تعریف کنید
ناپایا عدد := ۵ بدون تغییرمتغیر 'عدد' با کلیدواژه‌ی 'ناپایا' تعریف شده اما هرگز تغییر نکرده است
اگر عدد:شرط 'اگر' باید بولی باشد، اما 'صحیح' دریافت شد
اگر نادرست:شرط 'اگر' همیشه نادرست است: بدنه‌ی آن هرگز اجرا نمی‌شود
شاخه‌ی خالی اگربدنه‌ی 'اگر' خالی است: دستوری به آن بیفزایید یا 'اگر' را حذف کنید
عدد = "پنج"نمی‌توان 'رشته' را به 'صحیح' نسبت داد
پایا پس از یک روالپایا «نرخ» باید پیش از هر تعریف روال یا گونه اعلام شود
روالی که صدا زده نمی‌شودروال 'کمکی' استفاده نشده است: خصوصی است و هیچ‌جا فراخوانی نمی‌شود

چند راهنمایی

  • اگر چیزی را عمداً به کار نمی‌برید، نامش را با _ شروع کنید.
  • پیام خطا معمولاً راه‌حل را هم می‌گوید؛ بخش «راهنما» را در پایان پیام بخوانید.
  • سلام استثنا (exception) ندارد؛ شکست را با مقدار برگشتی مثل منطقی یا جداشمار نشان دهید.