استفاده از متغیرها
در مثال زیر نحوه تعریف و مقدار دهی متغیرها نمایش داده شده است :
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
اونجا که گفته ” در حالت پیشفرض و بدون ذکر نوع متغیر عدد اعشاری، کامپایلر عدد را از نوع صحیح(Double) در نظر میگیرد.” فکر کنم به جای صحیح باید یا دابل بنویسید یا اعشار.