متغیر در برنامهنویسی: جعبههای حافظه رایانه
متغیر چیست و چرا به آن نیاز داریم؟
در دنیای برنامهنویسی، متغیر1 یک مکان نامگذاریشده در حافظه اصلی رایانه (RAM) است که میتوانیم دادهای را در آن ذخیره کنیم و بعداً به آن دسترسی پیدا کنیم. تصور کنید قصد دارید مسئلهای ریاضی را حل کنید: معمولاً اعداد موقتی را روی کاغذ یادداشت میکنید. متغیرها در برنامهنویسی همان نقش یادداشتهای موقت را ایفا میکنند، با این تفاوت که درون حافظه رایانه قرار دارند.
هر متغیر سه ویژگی اصلی دارد: نام (برای شناسایی)، نوع (برای مشخص کردن ماهیت داده) و مقدار (دادهای که در آن ذخیره شده). وقتی برنامهای مینویسید، رایانه بخشی از حافظه خود را به آن متغیر اختصاص میدهد و از طریق نام متغیر میتوانید به آن بخش دسترسی داشته باشید.
انواع دادهای که در متغیرها ذخیره میشوند
در برنامهنویسی، متغیرها انواع مختلفی دارند تا بتوانند دادههای گوناگون را نگهداری کنند. هر نوع داده، حجم مشخصی از حافظه را اشغال میکند و عملیات مجاز روی آن متفاوت است. رایجترین انواع داده عبارتند از:
| نوع داده | توضیح | مثال |
|---|---|---|
| عدد صحیح | اعداد بدون اعشار، مثبت یا منفی | -5 , 0 , 42 , 1000 |
| عدد اعشاری | اعداد دارای اعشار (نقطه شناور) | 3.14 , 0.5 , -7.2 |
| رشته | دنبالهای از کاراکترها (متن) | "سلام" , "علیرضا" , "۱۳۹۰" |
| منطقی | تنها دو مقدار درست یا نادرست | true , false |
نکته جالب این است که در برخی زبانهای برنامهنویسی، متغیرها «نوع ثابت» دارند (مانند زبان C و جاوا) و در برخی دیگر «نوع پویا» (مانند پایتون و جاوااسکریپت). در نوع ثابت، پس از تعریف متغیر نمیتوان نوع آن را تغییر داد؛ اما در نوع پویا، یک متغیر میتواند اول عدد باشد و بعداً به رشته تبدیل شود.
قوانین نامگذاری متغیرها و قراردادهای رایج
برای نامگذاری متغیرها قوانین مشخصی وجود دارد که در همه زبانها تقریباً یکسان است. رعایت این قوانین باعث میشود برنامهتان بدون خطا اجرا شود و خوانایی کد افزایش یابد.
- نام متغیر باید با حرف (الفبای انگلیسی) یا زیرخط (_) شروع شود، نه با عدد.
- نام متغیر نمیتواند شامل فاصله یا کاراکترهای خاص مانند @ , # , $ (به جز زیرخط) باشد.
- نام متغیر نباید با کلمات کلیدی زبان برنامهنویسی (مانند if , while , for) یکی شود.
- زبان برنامهنویسی به بزرگ و کوچک بودن حروف حساس است؛ یعنی age و Age دو متغیر متفاوت هستند.
برای نامگذاری متغیرها قراردادهای زیباییشناسی نیز وجود دارد. رایجترین روش، «شترنویسی»2 است که در آن هر کلمه پس از کلمه اول با حرف بزرگ شروع میشود، مانند firstName یا studentAge. روش دیگر «زیرخطنویسی» است، مانند first_name یا student_age.
کاربرد عملی متغیرها در محاسبات و حل مسئله
فرض کنید برنامهای مینویسید که مساحت یک مستطیل را محاسبه میکند. بدون متغیر، شما مجبورید طول و عرض را بارها و بارها در کد بنویسید. اما با متغیرها، کافی است یک بار آنها را تعریف کنید و سپس در فرمول استفاده کنید:
$عرض = 3$
$مساحت = طول \times عرض$
$مساحت = 5 \times 3 = 15$
اگر بعداً بخواهید مساحت مستطیل دیگری با ابعاد متفاوت محاسبه کنید، فقط کافی است مقدار دو متغیر اول را تغییر دهید و بقیه برنامه بدون هیچ تغییری کار میکند. این انعطافپذیری بزرگترین مزیت استفاده از متغیرهاست.
در برنامهنویسی واقعی، متغیرها کاربردهای بسیار گستردهتری دارند. از نگهداری امتیاز بازیکنان در بازیهای رایانهای گرفته تا ذخیرهسازی اطلاعات کاربران در نرمافزارهای بانکی، همگی از متغیرها استفاده میکنند. حتی سیستمعامل ویندوز یا اندروید که با آنها کار میکنید، در هسته خود از هزاران متغیر برای مدیریت منابع استفاده میکند.
چالشهای مفهومی در درک متغیرها
خیر، متغیرها موقتی هستند. وقتی برنامه اجرای خود را پایان میدهد، تمام متغیرهایی که در آن تعریف شده بودند از حافظه پاک میشوند. به همین دلیل است که اگر برنامهای را ببندید و دوباره باز کنید، اطلاعات قبلی در آن وجود ندارد (مگر اینکه آن اطلاعات قبلاً در فایل یا پایگاه داده ذخیره شده باشد).
بسیاری از زبانهای برنامهنویسی اگر متغیری بدون مقدار تعریف شود، به آن یک مقدار پیشفرض (مانند صفر برای اعداد یا خالی برای رشتهها) اختصاص میدهند. اما برخی زبانها مقدار پیشفرض ندارند و استفاده از متغیر بدون مقدار اولیه باعث ایجاد خطا میشود. مقداردهی اولیه عادت خوبی است زیرا از بروز خطاهای پیشبینینشده جلوگیری میکند.
متغیر مقداری است که در طول اجرای برنامه میتواند تغییر کند. اما ثابت3 مقدار ثابتی دارد که پس از تعریف قابل تغییر نیست. برای مثال، عدد پی ($\pi \approx 3.14$) یک ثابت ریاضی است و نباید در برنامه تغییر کند. استفاده از ثابتها باعث امنیت بیشتر برنامه میشود و از تغییر اشتباهی مقادیر مهم جلوگیری میکند.
جمعبندی مفاهیم
پاورقی
[1] متغیر (Variable): مکانی نامگذاریشده در حافظه رایانه که برای ذخیره یک مقدار قابل تغییر استفاده میشود.
[2] شترنویسی (Camel Case): روشی در نامگذاری که در آن کلمه اول با حرف کوچک و هر کلمه بعدی با حرف بزرگ شروع میشود.
[3] ثابت (Constant): نوعی از متغیرها که مقدار آن پس از تعریف در طول اجرای برنامه تغییر نمیکند.