آموزش زبان کاتلین – درس ۳ (عملگرها)

سید ایوب کوکبی شنبه ۲۸ مهر ۱۳۹۷

آموزش زبان کاتلین - درس 3 (عملگرها)

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

۱- عملگرهای ریاضی

لیست پایین فهرست عملگرهای ریاضی را در کاتلین نشان می‌دهد:

  • + : جمع (همچنین برای اتصال رشته‌ها به کار می‌رود)؛
  • – : تفریق
  • * : ضرب
  • / : تقسیم
  • % : باقی‌مانده

مثال:

fun main(args: Array<String>) {

val number1 = 12.5
val number2 = 3.5
var result: Double

result = number1 + number2
println(“number1 + number2 = $result”)

result = number1 – number2
println(“number1 – number2 = $result”)

result = number1 * number2
println(“number1 * number2 = $result”)

result = number1 / number2
println(“number1 / number2 = $result”)

result = number1 % number2
println(“number1 % number2 = $result”)
}

 

خروجی:

number1 + number2 = 16.0
number1 – number2 = 9.0
number1 * number2 = 43.75
number1 / number2 = 3.5714285714285716
number1 % number2 = 2.0

 

عملگر + برای اتصال رشته‌ها نیز به کار می‌رود. مثال:

fun main(args: Array<String>) {

val start = “Talk is cheap. ”
val middle = “Show me the code. ”
val end = “- Linus Torvalds”

val result = start + middle + end
println(result)
}

 

خروجی:

Talk is cheap. Show me the code. – Linus Torvalds

 

عملگرهای ریاضی چگونه در کاتلین کار می‌کنند؟

فرض کنید با عملگر + قصد دارید مجموع دو عدد a و b را محاسبه کنید. کاتلین در پشت صحنه، عبارت a+b را به صورت (a.plus(b فرخوانی می‌کند. plus تابعی است که در نسخه‌های مختلفی Overload شده است تا انواع عملوندها از جمله رشته‌ها را نیز قبول کند. (البته به جزء Char و Boolean).

// + operator for basic types
operator fun plus(other: Byte): Int
operator fun plus(other: Short): Int
operator fun plus(other: Int): Int
operator fun plus(other: Long): Long
operator fun plus(other: Float): Float
operator fun plus(other: Double): Double

// for string concatenation
operator fun String?.plus(other: Any?): String

 

بخوانید  آموزشِ زبانِ کاتلین (درس 1: آشناییِ اولیه)

شما نیز با Overload کردن تابع plus می‌توانید از عملگر + برای انواعی که خودتان تعریف کرده‌اید استفاده کنید. Overload کردن به صورت خلاصه یعنی تعریف چندین نسخه از یک تابع با نام یکسان ولی با تعداد یا پارامترهای مختلف (در بعضی از زبان‌ها با مقدار بازگشتی متفاوت). مثلا هر وقت کاربر تابع plus را با آرگومان Int فرخوانی کرد آن نسخه‌ای که پارامتر Int دریافت می‌کند را اجرا کن و هر موقع یک عدد Float وارد شد، نسخه‌‌ی Float آن تابع اجرا شود. در آینده راجع Overload کردن متدها بیشتر توضیح می‌دهم.

لیست عملگرهای ریاضی و توابع معادل:

کاربرد نام تابع تابع معادل
a + b plus a.plus(b)
a – b minus a.minus(b)
a * b times a.times(b)
a / b div a.div(b)
a % b mod a.mod(b)

۲- عملگرهای تخصیص

عملگرهای تخصیص برای تخصیص مقادیر به متغیرها به کار می‌روند. یکی از این عملگرها را قبلاً استفاده کرده‌ایم: عملگر =

val age = 5

 

در این مثال مقدار ۵ به متغیر age تخصیص داده شده که این کار توسط عملگر = صورت گرفته است.

فهرست کامل عملگرهای تخصیص:

عبارت حالت معادل تابع معادل
a +=b a = a + b a.plusAssign(b)
a += b a = a + b a.minusAssign(b)
a *= b a = a * b a.timesAssign(b)
a /= b a = a / b a.divAssign(b)
a %= b a = a % b a.modAssign(b)

مثال:

fun main(args: Array<String>) {
var number = 12

number *= 5 // number = number*5
println(“number = $number”)
}

 

خروجی:

number = 60

 

عملگرهای تخصیص را هم می‌توان Overload کرد که در درس‌های بعدی توضیح خواهم داد.

۳- عملگرهای یگانه

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

عملگر توضیح کاربرد تابع معادل
+ جمع تکی +a a.unaryPlus()
تفریق تکی -a a.unaryMinus()
! نفی !a a.not()
++ اضافه کردن عدد یک به عملوند ++a a.inc()
کاهش عدد یک از عملوند –a a.dec()
بخوانید  آموزش زبان کاتلین – درس 8 (شرط IF)

مثال:

fun main(args: Array<String>) {
val a = 1
val b = true
var c = 1

var result: Int
var booleanResult: Boolean

result = -a
println(“-a = $result”)

booleanResult = !b
println(“!b = $booleanResult”)

–c
println(“–c = $c”)
}

 

خروجی:

-a = -1
!b = false
–c = 0

 

۴- عملگرهای سنجش تساوی و مقایسه عملوندها

عملگر توضیح کاربرد تابع معادل
> بزرگتر از a > b a.compareTo(b) > 0
< کوچکتر از a < b a.compareTo(b) < 0
>= بزرگتر یا مساوی با a >= b a.compareTo(b) >= 0
<= کوچکتر یا مساوی با a < = b a.compareTo(b) <= 0
== مساوی با a == b a?.equals(b) ?: (b === null)
!= مساوی نیست با a != b !(a?.equals(b) ?: (b === null))

این عملگرها بیشتر برای کنترل جریان برنامه به کار می‌رود و در حلقه‌ها و عبارات شرطی کاربرد فراوان دارند.
مثال:

fun main(args: Array<String>) {

val a = -12
val b = 12

// use of greater than operator
val max = if (a > b) {
println(“a is larger than b.”)
a
} else {
println(“b is larger than a.”)
b
}

println(“max = $max”)
}

 

خروجی:

b is larger than a.
max = 12

 

۵- عملگرهای منطقی

در کاتلین دو عملگر منطقی || و && وجود دارد.

عملگر توضیح کاربرد تابع معادل
|| هر یک از دو عملوند true بود نتیجه true است (a>b)||(a<c) (a>b)or(a<c)
&& هرگاه دو عملوند true بودند نتیجه true خواهد بود (a>b)&&(a<c) (a>b)and(a<c)

این عملگرها نیز به وفور در عملیات شرطی و کنترل جریان برنامه کاربرد دارند.
مثال:

fun main(args: Array) {
val a = 10
val b = 9
val c = -1
val result: Boolean

// result is true is a is largest
result = (a>b) && (a>c) // result = (a>b) and (a>c)
println(result)
}

 

خروجی:

true

 

۶- عملگر in

این عملگر نشان می‌دهد که مقداری متعلق به یک مجموعه هست یا نه.

عملگر کاربرد تابع معادل
in a in b b.contains(a)
!in a !in b !b.contains(a)

مثال:

fun main(args: Array<String>) {

val numbers = intArrayOf(1, 4, 42, -3)

if (4 in numbers) {
println(“numbers array contains 4.”)
}
}

 

بخوانید  آموزش زبان کاتلین – درس 15 (توابع infix)

خروجی:

numbers array contains 4.

 

۷- عملگرهای index

این عملگرها در کاتلین به منظور دسترسی به مقادیر یک مجموعه استفاده می‌شوند. مثلاً دسترسی به عنصر پنجم یک آرایه.

کاربرد تابع معادل
a[i] a.get(i)
a[i, n] a.get(i, n)
a[i1, i2, ..., in] a.get(i1, i2, ..., in)
a[i] = b a.set(i, b)
a[i, n] = b a.set(i, n, b)
a[i1, i2, ..., in] = b a.set(i1, i2, ..., in, b)

مثال:

fun main(args: Array<String>) {

val a = intArrayOf(1, 2, 3, 4, – ۱)
println(a[1])
a[1]= 12
println(a[1])
}

 

خروجی:

۲
۱۲

 

۸- عملگرهای invoke

کاربرد تابع معادل
a() a.invoke()
a(i) a.invoke(i)
a(i1, i2, ..., in) a.inkove(i1, i2, ..., in)
a[i] = b a.set(i, b)

در کاتلین، پرانتز به تابع معادلش یعنی invoke ترجمه می‌شود.

عملگرهای بیتی

برخلاف جاوا، در کاتلین عملگرهای بیتی نداریم. برای اجرای این عملیات، توابعی تعریف شده که باید از آن‌ها استفاده کنیم:

  • shl: شیفت علامت‌دار به چپ
  • shr: شیفت علامت‌دار به راست
  • ushr: شیفت بی‌علامت به راست
  • and
  • or
  • xor
  • inv: معکوس‌ساز

عملگرهای بیتی به همراه مثال در درس‌های بعدی آموزش داده می‌شود.

دیدگاه شما :

بدون دیدگاه

    هنوز دیدگاهی ارسال نشده است.

عضویت در خبرنامه

عضویت در خبرنامه برای عضویت در خبرنامه پیامکی، عدد 1 را به شماره 30005563 پیامک کنید.