استفاده از متغیرها

در مثال زیر نحوه تعریف و مقدار دهی متغیرها نمایش داده شده است :

  1: fun main(args: Array<String>)
  2: {
  3:     //Declare variables
  4:     val num1: Int
  5:     val num2: Int
  6:     val num3: Double
  7:     val num4: Double
  8:     val boolVal: Boolean
  9:     val myChar: Char
 10: 
 11:     //Assign values to variables
 12:     num1 = 1
 13:     num2 = 2
 14:     num3 = 3.54
 15:     num4 = 4.12
 16:     boolVal = true
 17:     myChar = 'R'
 18: 
 19:     //Show the values of the variables
 20:     println("num1    = $num1")
 21:     println("num3    = $num3")
 22:     println("num4    = $num4")
 23:     println("boolVal = $boolVal")
 24:     println("num2    = $num2")
 25:     println("myChar  = $myChar")
 26: }
num1    = 1
num3    = 3.54
num4    = 4.12
boolVal = true
num2    = 2
myChar  = R

تعریف متغیر

برای تعریف متغیر از دو کلمه var و یا val به صورت زیر استفاده می شود:

val identifier
//or
var identifier

identifier نامی است که برای متغیر انتخاب می کنیم. تفاوت بین var و val را در ادامه توضیح می دهیم. به تعریف دو متغیر توجه کنید:

val myString = "Hello World!"
val myNumber = 10

در کد بالا myString یک متغیر از نوع رشته و myNumber یک متغیر از نوع صحیح یا Int است. ما در کد بالا نوع متغیرها را صراحتا اعلام نکرده ایم و این کار را بر عهده کامپایلر گذاشته ایم. روش دیگر تعریف متغیر این است که صراحتا نوع متغیر را ذکر کنیم:

val myString: String = "Hello World!"
val myNumber: Int = 10

حال اجازه دهید که کد بالا را توضیح دهیم.

تعریف متغیر

در خطوط 9-4 متغیرهایی با نوع و نام متفاوت تعریف شده‌اند. ابتدا باید یکی از کلمات var یا val، سپس نام متغیر و علامت : و در نهایت نوعی که این متغیرها قرار است در خود ذخیره کنند را مشخص کنیم . همیشه به یاد داشته باشید که قبل از مقدار دهی و استفاده از متغیر باید آن را تعریف کرد.

val num1: Int
val num2: Int
val num3: Double
val num4: Double
val boolVal: Boolean
val myChar: Char

نحوه تعریف متغیر به صورت زیر است :

var/val identifier: data_type

date_type همان نوع داده است مانند Int ،Double و…. . identifier نیز نام متغیر است که به ما امکان استفاده و دسترسی به مقدار متغیر را می‌دهد.

نامگذاری متغیرها

  • نام متغیر باید با یک حرف یا زیرخط و به دنبال آن حرف یا عدد شروع شود.
  • نمی‌توان از کاراکترهای خاص مانند # ،% ،& یا عدد برای شروع نام متغیر استفاده کرد مانند 2numbers.
  • نام متغیر نباید دارای فاصله باشد. برای نام‌های چند حرفی می‌توان به جای فاصله از علامت زیرخط یا _ استفاده کرد.

نامهای مجاز :

num1  myNumber  studentCount  total       first_name    _minimum
num2  myChar    average       amountDue   last_name     _maximum
name  counter   sum           isLeapYear  color_of_car  _age

نامهای غیر مجاز :

123        #numbers#  #ofstudents  1abc2
123abc     $money     first name   ty.np  
my number  this&that  last name    1:00

اگر به نامهای مجاز در مثال بالا توجه کنید متوجه قراردادهای به کار رفته در نامگذاری آن‌ها خواهید شد. یکی از روشهای نامگذاری، نامگذاری کوهان شتری است. در این روش که برای متغیرهای دو کلمه‌ای به کار می‌رود، اولین حرف اولین کلمه با حرف کوچک و اولین حرف دومین کلمه با حرف بزرگ نمایش داده می‌شود مانند : myNumber توجه کنید که اولین حرف کلمه Number با حرف بزرگ شروع شده است. مثال دیگر کلمه numberOfStudents است. اگر توجه کنید، بعد از اولین کلمه، حرف اول سایر کلمات با حروف بزرگ نمایش داده شده است.

محدوده متغیر

متغیرهای ابتدای درس در داخل متد main() تعریف شده‌اند. در نتیجه، این متغیرها فقط در داخل متد main() قابل دسترسی و استفاده هستند. محدوده یک متغیر مشخص می‌کند که متغیر در کجای کد قابل دسترسی است. هنگامیکه برنامه به پایان متد main() می‌رسد متغیرها از محدوده خارج و بدون استفاده می‌شوند تا زمانی که برنامه در حال اجراست. محدوده متغیرها انواعی دارد که در درسهای بعدی با آنها آشنا می‌شوید. تشخیص محدوده متغیر بسیار مهم است چون به وسیله آن می‌فهمید که در کجای کد می‌توان از متغیر استفاده کرد. باید یاد آور شد که دو متغیر در یک محدوده نمی‌توانند دارای نام یکسان باشند. مثلاً کد زیر در برنامه ایجاد خطا می‌کند :

val num1: Int
val num1: Int

از آنجاییکه کاتلین به بزرگی و کوچک بودن حروف حساس است، می‌توان از این خاصیت برای تعریف چند متغیر هم نام ولی با حروف متفاوت (از لحاظ بزرگی و کوچکی) برای تعریف چند متغیر از یک نوع استفاده کرد مانند :

val num1: Int
val Num1: Int
val NUM1: Int

مقداردهی متغیرها

می‌توان فوراً بعد از تعریف متغیرها مقادیری را به آنها اختصاص داد. این عمل را مقداردهی می‌نامند. در زیر نحوه مقدار دهی متغیرها نشان داده شده است :

var/val identifier: data_type = value

به عنوان مثال :

val myNumber: Int = 7;

تعریف متغیر با مقدار دهی متغیرها متفاوت است. تعریف متغیر یعنی انخاب نوع و نام برای متغیر ولی مقدار دهی یعنی اختصاص یک مقدار به متغیر.

اختصاص مقدار به متغیر

در زیر نحوه اختصاص مقادیر به متغیرها نشان داده شده است:

num1 = 1
num2 = 2
num3 = 3.54
num4 = 4.12
boolVal = true
myChar = 'R' 

به این نکته توجه کنید که شما به متغیری که هنوز تعریف نشده، نمی‌توانید مقدار بدهید. شما فقط می‌توانید از متغیرهایی استفاده کنید که هم تعریف و هم مقدار دهی شده باشند. مثلاً متغیرهای بالا همه قابل استفاده هستند. در این مثال num1 و num2 هر دو تعریف شده‌اند و مقادیری از نوع صحیح به آنها اختصاص داده شده است. اگر نوع داده با نوع متغیر یکی نباشد برنامه پیغام خطا می‌دهد. به خطوط 25-20 می باشد. وجود علامت $ قبل از نام متغیر در اصل به منزله مقداری است که متغیر در خود ذخیره کرده است. مثلا $num1 در خط 20، یعنی مقدار این متغیر که همان عدد 1 در 12 است. حال همین علامت $ در خطوط 25-20 را حذف کرده و برنامه را اجرا و نتیجه را مشاهده نمایید. البته از این علامت زمانی استفاده می شود که شما بخواهید در داخل رشته یعنی علامت “” مقدار متغیر را چاپ کنید:

println("$num1")

ولی اگر بخواهید خارج از علامت “” مقدار یک متغیر را چاپ کنید، دیگر احتیاجی به علامت $ نیست:

println(num1)

در حالت پیشفرض و بدون ذکر نوع متغیر عدد اعشاری، کامپایلر عدد را از نوع صحیح (Double) در نظر می‌گیرد. شما می‌توانید برای نشان دادن اعداد اعشاری Float از کاراکتر f در آخر عدد استفاده نمایید:

val number1 = 1.23    //Double
val number2 = 1.23f   //Float

تفاوت var و val

تفاوت این دو کلمه در این است که اگر یک متغیر را با کلمه val تعریف و مقدار دهی کنیم، دیگر نمی توانیم در طول برنامه مقدار متغیر را تغییر دهیم و اگر این کار را انجام دهیم برنامه با خطا مواجه می شود :

val number = 10
    number = 5

ولی اگر از کلمه var استفاده کنیم، می توانیم بعدا مقدار متغیر را تغییر دهیم.

var number = 10
    number = 5