متغیر یا variable چیست؟

متغیر یا Variable در برنامه نویسی چیست؟

در حالت کلی متغیر، یعنی چیزی که قابلیت تغییر در آن وجود دارد. در برنامه نویسی هم به مقادیری که میتوانیم آن ها را تغییر بدیم، variable گفته میشود. نرم افزار ها مجموعه ای از دستورات مختلف و داده ها هستند که میتوانند وظیفه های مختلفی را انجام بدهند. داده هایی که درون نرم افزار وجود دارند به دو دسته داده های ثابت (Constants) و متغیر ها (Variables) تقسیم میشوند.

داده های ثابت اطلاعاتی هستند که هیچوقت تغییر نمیکنند و همیشه مقدار مشخصی خواهند داشت. مانند نام نرم افزار یا آدرس Url سروری که نرم افزار ما با آن در ارتباط است. داده های متغیر هم اطلاعاتی هستند که هر لحظه میتوانند تغییر کنند، مانند موجودی حساب، نام کاربری، رمز عبور و غیره. پس میتوان گفت قسمت بزرگی از وظیفه نگهداری و استفاده از داده ها در نرم افزار به عهده variable ها میباشد.

برای فهم ساده تر این مفهوم میتوانیم متغیر ها را مانند ظرف نگهدارنده در نظر بگیریم و اطلاعاتی که درون آنها ذخیره میشود را مانند هرچیزی که قرار است درون این ظرف ها ریخته بشود. همانطور که برای نگهداری مواد مختلف، از ظرف های مخصوص استفاده میکنیم، variable ها هم برای انواع داده های مختلف، دارای مدل های گوناگونی هستند. مثلا داده های عددی، متنی، شرطی و انواع دیگر، نیاز به متغیرهایی مخصوص خودشان دارند. هدف متغیر ها این است که داده ها را نام گذاری و ذخیره کنند. سپس نرم افزار میتواند داده ای که درون variable وجود دارد را بخواند، یا آن را تغییر بدهد.

چرا از متغیر استفاده میکنیم؟

فرض کنید بدون متغیر ها بخواهیم یک نرم افزار را بسازیم. نرم افزار معمولا دارای داده های زیادی است که در دستورات مختلف از این داده ها استفاده میشود. به عنوان مثال یک صفحه فروشگاه را در نظر بگیرید که تعدادی محصول درون آن نمایش داده میشود. این محصولات از سمت سرور برای ما ارسال شدند و توسط فرانت اند به ما نشان داده میشوند (برای آشنایی با فرانت اند و بک اند این مقاله رو حتما بخونین).

به نظر شما چگونه میتوانیم نرم افزاری بنویسیم که این داده ها را از سرور دریافت کند و آن ها را بصورت مرتب روی صفحه بچیند؟ باید این نکته را در نظر داشته باشید که قیمت، توضیحات، عکس ها، اسم، دسته بندی و همه مواردی که یک محصول در فروشگاه اینترنتی دارد، میتوانند هر لحظه تغییر کنند. حتی اگر صفحه بندی وجود داشته باشد و شما به صفحه بعدی بروید، باز هم داده های جدید باید نمایش داده شوند.

  1. آیا فکر میکنید راه حل درست و بهینه این است که برای هر محصول که درون صفحه نمایش داده میشود یک تکه کد اختصاصی بنویسیم؟ در این صورت اگر کاربر تعداد محصولات در یک صفحه را افزایش بدهد، یا با استفاده از فیلتر ها بخواهد گرانترین محصولات را اول ببیند، چطور باید این تغییرات را مدیریت کنیم؟
  2. سوال دوم اینکه وقتی اطلاعات از سمت سرور به دست ما میرسد، از کجا باید بفهمیم نام محصول کدام است، توضیحات کدام است و هرکدام از این داده ها باید در کدام قسمت نمایش داده بشوند؟
متغیر در برنامه نویسی

جواب هر دوی این مشکلات استفاده از متغیر است. variable ها در اولین مرحله میتوانند داده های ما را نام گذاری کنند و آنها را بر اساس نوعی که دارند دسته بندی نمایند (درباره انواع مختلف متغیر ها توی همین مقاله صحبت کردیم). پس میدانیم که کدام داده چه اسم و نوعی دارد و برای کدام قسمت باید استفاده شود.

دومین مشکلی که با استفاده از متغیر ها از بین میرود، این است که ما جایگاه یا ظرف مخصو داده ها را مشخص میکنیم و محتوای درون این ظرف میتواند هر بار تغییر کند. پس وقتی مثلا تعریف میکنیم که variable نام محصول در بالای صفحه نمایش داده شود، هر بار که نام محصول جدیدی درون متغیر بریزیم، نام نمایش داده شده تغییر میکند. پس میتوانیم یک بار کدهای خودمان را بنویسیم و داده هایی که درون variable های آن وجود دارد را هرچقدر که دوست داریم تغییر بدیم.

پس عملا بدون استفاده از متغیر ها، هیچ کاری با داده ها نمیتوانیم انجام بدهیم. به همین دلیل یکی از مهمترین قسمت های هر نرم افزار، variable های آن هستند.

انواع مختلف متغیر ها (Data Type)

همانطور که در ابتدای مقاله توضیح دادیم، برای هر نوع داده، باید variable مخصوص خودش را به کار ببریم. همه انواع متغیر هایی که در این قسمت معرفی میشوند ممکن است در همه زبان های برنامه نویسی وجود نداشته باشند، معروف ترین این انواع داده ای را بصورت خلاصه با هم بررسی میکنیم:

نوع متغیرتوضیحات
Integer یا intاین نوع داده رایج ترین نوع داده عددی میباشد که برای ذخیره سازی اعداد صحیح منفی و مثبت (بدون اعشار) از آن استفاده میشود.
Floating Point یا floatاین نوع داده هم یکی از انواع داده عددی است که میتواند اعداد اعشاری را درون خود ذخیره کند.
Stringاین نوع داده برای ذخیره سازی مقادیر متنی کاربرد دارد.
Booleanاین نوع داده فقط میتواند مقادیر true و false را درون خود ذخیره کند و برای ساختار های کنترلی (مانند حلقه ها و شرط ها) از آن استفاده میشود.

قوانین نام گذاری variable ها

برای تعریف یک متغیر باید قبل از هر چیز چند مورد کوچک درباره استاندارد نام گذاری variable ها بدانیم. انتخاب اسم مناسب رای متغیر ها معمولا یکی از کارهایی است که اکثر برنامه نویس ها حوصله انجام آن را ندارند. اما اگر همه variable های پروژه ما اسم های استانداردی داشته باشند، برای نگهداری و آپدیت های بعدی پروژه با مشکلات بسیار کمتری روبرو خواهیم بود. تعدادی از قوانین نام گذاری متغیرها را با هم مرور میکنیم:

  • معنی دار بودن: اسمی که برای متغیر انتخاب میکنیم در درجه اول باید دارای معنی باشد. معنی اسم هم باید نزدیکترین مفهوم به داده ای که قرار است درون آن ذخیره کنیم انتخاب شود. یعنی شما با خواندن اسم یک variable باید بتوانید تشخیص بدهید که چه داده ای قرار است درون آن قرار بگیرد.
  • ثبات در نام گذاری: همیشه به حروف بزرگ و کوچک دقت کنید. اسم name با Name و یا NAME یکسان نیستند و هرکدام باید در جای مناسبی به کار برده شوند.
  • فاصله گذاری: نام متغیر نباید هیچ فاصله ای درون خودش داشته باشد. برای اسم های چند کلمه ای میتوانید از خط فاصله بزرگ (همون آندرلاین یا Under score) استفاده کنید. یکی دیگر از راه های رایج تر، به کار بردن حروف بزرگ و کوچک با استفاده از قاعده نام گذاری camelCase است. طبق این قاعده اسم هایی که از چندکلمه تشکیل شده اند پشت سرهم نوشته میشوند و حرف ابتدایی همه کلمه ها با حروف بزرگ نوشته میشود، به جز کلمه اول. مثلا theVariableName.
  • استفاده از اعداد: نام variable نمیتواند با عدد شروع شود.
variable در برنامه نویسی

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

نام variableتوضیح
lیک انتخاب ضعیف – هیچ معنی خاصی ندارد
lengthاسم خوبی است اما زیاد قابل فهم نیست
side_lengthیک اسم خوب
sideLengthیک اسم خوب
side lengthاشتباه – شما نمیتوانید در نام گذاری از فاصله (Space) استفاده کنید

تعریف متغیر ها

حالا که با همه موارد مورد نیاز برای تعریف یک متغیر آشنا شدید، بیایید با هم یک variable بسازیم و از همه این نکته ها در عمل استفاده کنیم. تعریف متغیر در زبان های مختلف برنامه نویسی ممکن است روش های گوناگونی داشته باشد. اما قاعد کلی آنها تقریبا یکسان است. برای این کار باید نوع و نام variable را انتخاب کنیم و در نهایت به آن مقدار بدهیم.

//JAVA, C, C++, C#

int count = 25;

//formula: type name = value

//JAVASCRIPT

let count =6;
var count =7;
count = 7;

//formula: keyword name = value
//formula: name = value

//PYTHON

count = 25

//formula: name = value

مقدار دهی variable ها

تا اینجای مقاله چند بار این نکته را با هم مرور کردیم که هر متغیر برای یک نوع خاص از داده ها باید استفاده شود. برای همین وقتی که میخواهیم مقداری را درون یک متغیر بریزیم، باید به نوع variable توجه کنیم و داده ای مناسب به آن ارائه بدهیم. بصورت خلاصه برای ذخیره یک مقدار درون متغیر، باید عملگر انتصاب، که با علامت = تعریف میشود را به کار ببریم.

سمت راست علامت مساوی باید متغیر و نوع آن را بنویسیم و سمت چپ مساوی، مقداری که قرار است درون آن بریزیم. دقت داشته باشید هرچیزی که سمت چپ علامت مساوی نوشته شود، درون variable ما قرار میگیرد و به همین خاطر به این کار، انتصاب مقدار یا مقدار دهی متغیر گفته میشود. مثال های زیر را مشاهده کنید:

حوزه دید متغیر ها

در یک پروژه واقعی نرم افزاری، تعداد زیادی فایل، کلاس و متد داریم که درون هرکدام از اینها تعدادی متغیر در وجود دارند و داده های خاصی درون آنها ذخیره میشود. حالا اگر همه این variable ها از همه کلاس ها قابل دسترسی باشند و بتوانیم هرجایی آنها را تغییر بدهیم، عملا برای منظم کردن نرم افزار و تداخل نداشتن داده ها، باید قواعد سخت گیرانه ای برای نام گذاری متغیر ها اعمال کنیم.

مثلا فرض کنید درون کلاس پروفایل یک متغیر به اسم توضیحات وجود دارد و در کلاس محصول هم یک variable دیگر دقیقا به اسم توضیحات داریم. اگر متغیر ها از همه جا قابل دسترسی بودند هربار که توضیحات محصول را تغییر بدهیم، دقیقا همان متن در توضیحات پروفایل کاربری هم نشان داده میشد. (برای جا افتادن بیشتر یعنی میرفتی توی پروفایل کاربر می دیدی اسم رو نوشته علی خانقلی و توضیحات رو مثلا نوشته ایشون ساخت ژاپن هست، سی کیلو وزن داره و تا سه سال هم گارانتیش میکنیم :دی)

متغیر یا variable

برای جلوگیری از این مشکلات و منظم کردن پروژه نرم افزاری، هر متغیر دارای ویژگی خاصی به اسم حوزه دید یا Scope هست. با استفاده از این ویژگی میتوانیم مشخص کنیم متغیر ما در کدام قسمت های نرم افزار قابل مشاهده و دسترسی باشد.

اسکوپ variable با توجه به مکانی که آن را تعریف میکنیم تغییر میکنیم. همانطور که در مقاله کلاس ها و متد ها توضیح داده شده است، ساختار کلاس های برنامه نویسی به این شکل است که متد ها و بلوک های کد درون کلاس قرار میگیرند و زیر مجموعه های آن حساب میشوند. حالا انواع مختلف Scope های متغیر را با هم بررسی میکنیم:

Global Scope

اگر متغیر خودمان را درون بدنه اصلی کلاس و خارج از همه متدهای آن تعریف کنیم، حوزه دید متغیر ما Global تعریف میشود. متغیر های Global از تمام متد ها و بلوک های درون همان کلاس قابل دسترس هستند. یعنی اگر یک variable را درون بدنه کلاس تعریف کنید میتوانید هرجایی داخل همان کلاس به آن دسترسی داشته باشید و مقدار آن را تغییر بدهید.

export class {
globalVariable: number = 0;

//global variable is available here

methodOne() {

//globalVariable is available here

this.globalVariable = 12;
}
}

Function Scope یا Local Scope

اگر متغیر خودمان را داخل بدنه یک متد تعریف کنیم، فقط و فقط درون بدنه همان متد به آن دسترسی داریم. یعنی از بقیه کلاس یا متد ها و بلوک های دیگر قابل دسترسی و تغییر نیست (میتونیم بگیم از متد های دیگه دیده نمیشه).

export class {

//local variable is NOT available here

methodOne() {
let localVariable: number = 10;

//localVariable is available here

localVariable = 20;
}
}

Block Scope

بلوک کد به کدهایی گفته میشود که درون یک آکولاد باز و بسته نوشته میشود و بدون اسم تعریف میشود. بلوک کد هم دقیقا مانند متد است و اگر variable را درون بلوک کد تعریف کنیم، فقط درون همان بلوک قابل دسترسی و استفاده میباشد.

export class {

//block variable is NOT available here

{
let blockVariable: number = 10;

//blockVariable is available here

blockVariable = 20;
}
}

البته دقت داشته باشید که قوانین هر زبان برای تعریف حوزه دید متغیر ها متفاوت است و باید این قوانین را در سینتکس هر زبانی که در حال استفاده از آن هستید پیدا کنید (مثلا برای بلوک های جاوا اسکریپت دو کلمه کلیدی let و var رو داریم که میتونه اسکوپ variable رو عوض کنه و بیرون بلوک هم اون رو قابل دسترسی کنه).

خلاصه و منابع

بصورت خلاصه متغیر یک ظرف برای اطلاعات است که انواع مختلفی برای داده های گوناگون دارد. انواع variable ها و نحوه تعریف و مقدار دهی آن ها را بصورت کامل در مقاله توضیح دادیم. برای مطالعه بیشتر درباره این موضوع میتوانید از لینک های زیر استفاده کنید.

درباره نویسنده

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

اسکرول به بالا