background codoloper

ثابت های نمادین Symbolic Constants

قبل از اینکه برای همیشه با بحث تبدیل دما خداحافظی کنیم، بیایم یه نکته‌ی مهم رو بررسی کنیم.
تا حالا دیدی داخل کد از اعدادی مثل 300 یا 20 استفاده بشه؟ به این اعداد اصطلاحاً عدد جادویی (magic numbers) می‌گن.

چرا استفاده از عدد جادویی کار درستی نیست؟

  • چون وقتی کسی بعداً کد رو بخونه، معنی خاصی از عدد 300 یا 20 نمی‌فهمه.

  • تغییر دادن این اعداد توی کل برنامه هم سخت می‌شه.

راه‌حل چیه؟
اینه که به این اعداد اسم‌های معنادار بدیم. برای این کار توی زبان C از دستور #define استفاده می‌کنیم.

ساختارش اینطوریه:

#define name replacement
  • به جای name یه اسم انتخاب می‌کنیم (مثل یه متغیر، اما ثابت).

  • به جای replacement مقداری که می‌خوایم جایگزین بشه رو می‌نویسیم.

حالا یه مثال با برنامه‌ی جدول دما:

#include <stdio.h>

#define LOWER 0     /* حد پایین جدول */
#define UPPER 300   /* حد بالا */
#define STEP 20     /* اندازه‌ی گام */

/* چاپ جدول فارنهایت به سلسیوس */
int main() {
    int fahr;

    for (fahr = LOWER; fahr <= UPPER; fahr = fahr + STEP)
        printf("%3d %6.1f\n", fahr, (5.0/9.0) * (fahr - 32));

    return 0;
}

توضیحات:

  • به جای استفاده مستقیم از عدد، ثابت‌های نمادین LOWER، UPPER و STEP تعریف کردیم.

  • این‌ها متغیر نیستند، پس توی قسمت declaration (تعریف متغیرها) نمیان.

  • به صورت قراردادی، اسم ثابت‌های نمادین رو با حروف بزرگ می‌نویسن تا راحت‌تر از متغیرهای معمولی تشخیص داده بشن.

  • خط #define در پایان خودش سمیکالن ; نداره.