Penggunaan Simbol Operator

Operator adalah simbol yang memberi tahu compiler untuk melakukan manipulasi matematis atau logika tertentu. VB.Net memiliki banyak operator bawaan dan menyediakan jenis-jenis operator yang umum digunakan berikut ini:

  • Operator Aritmatika
  • Operator Perbandingan
  • Operator Logika/Bitwise
  • Operator Pergeseran Bit (Bit Shift)
  • Operator Penugasan (Assignment)
  • Operator Lain-lain (Miscellaneous)

Dari sini kita akan menjelajah lebih dalam… Okay!


Operator Aritmatika

Tabel berikut menunjukkan semua operator aritmatika yang didukung oleh VB.Net.
Misalkan variabel A bernilai 2 dan variabel B bernilai 7, maka:

OperatorDeskripsiContoh
^Mengangkat satu operand ke pangkat operand lainnyaB ^ A menghasilkan 49
+Menjumlahkan dua operandA + B menghasilkan 9
-Mengurangkan operand kedua dari yang pertamaA - B menghasilkan -5
*Mengalikan kedua operandA * B menghasilkan 14
/Membagi satu operand dengan operand lain dan menghasilkan angka pecahanB / A menghasilkan 3.5
\Membagi satu operand dengan operand lain dan menghasilkan angka bulat (integer)B \ A menghasilkan 3
MODOperator modulus; menghasilkan sisa pembagian bilangan bulatB MOD A menghasilkan 1

Contoh

Cobalah contoh berikut untuk memahami semua operator aritmatika yang tersedia di VB.Net:

Module operators
   Sub Main()
      Dim a As Integer = 21
      Dim b As Integer = 10
      Dim p As Integer = 2
      Dim c As Integer
      Dim d As Single
      
      c = a + b
      Console.WriteLine("Baris 1 - Nilai c adalah {0}", c)
      
      c = a - b
      Console.WriteLine("Baris 2 - Nilai c adalah {0}", c)
      
      c = a * b
      Console.WriteLine("Baris 3 - Nilai c adalah {0}", c)
      
      d = a / b
      Console.WriteLine("Baris 4 - Nilai d adalah {0}", d)
      
      c = a \ b
      Console.WriteLine("Baris 5 - Nilai c adalah {0}", c)
      
      c = a Mod b
      Console.WriteLine("Baris 6 - Nilai c adalah {0}", c)
      
      c = b ^ p
      Console.WriteLine("Baris 7 - Nilai c adalah {0}", c)
      Console.ReadLine()
   End Sub
End Module

Ketika kode di atas dikompilasi dan dijalankan, hasil yang ditampilkan adalah:

Baris 1 - Nilai c adalah 31
Baris 2 - Nilai c adalah 11
Baris 3 - Nilai c adalah 210
Baris 4 - Nilai d adalah 2.1
Baris 5 - Nilai c adalah 2
Baris 6 - Nilai c adalah 1
Baris 7 - Nilai c adalah 100

Operator Perbandingan (Comparison)

Tabel berikut menunjukkan semua operator perbandingan yang didukung oleh VB.Net.
Misalkan variabel A bernilai 10 dan variabel B bernilai 20, maka:

OperatorDeskripsiContoh
=Memeriksa apakah nilai dari dua operand sama; jika ya, maka kondisi menjadi benar.(A = B) hasilnya salah
<>Memeriksa apakah nilai dari dua operand tidak sama; jika ya, maka kondisi menjadi benar.(A <> B) hasilnya benar
>Memeriksa apakah nilai operand kiri lebih besar dari operand kanan; jika ya, maka kondisi menjadi benar.(A > B) hasilnya salah
<Memeriksa apakah nilai operand kiri lebih kecil dari operand kanan; jika ya, maka kondisi menjadi benar.(A < B) hasilnya benar
>=Memeriksa apakah nilai operand kiri lebih besar atau sama dengan operand kanan; jika ya, maka kondisi menjadi benar.(A >= B) hasilnya salah
<=Memeriksa apakah nilai operand kiri lebih kecil atau sama dengan operand kanan; jika ya, maka kondisi menjadi benar.(A <= B) hasilnya benar

Contoh Program:

Module operators
   Sub Main()
      Dim a As Integer = 21
      Dim b As Integer = 10

      If (a = b) Then
         Console.WriteLine("Baris 1 - a sama dengan b")
      Else
         Console.WriteLine("Baris 1 - a tidak sama dengan b")
      End If

      If (a < b) Then
         Console.WriteLine("Baris 2 - a lebih kecil dari b")
      Else
         Console.WriteLine("Baris 2 - a tidak lebih kecil dari b")
      End If

      If (a > b) Then
         Console.WriteLine("Baris 3 - a lebih besar dari b")
      Else
         Console.WriteLine("Baris 3 - a tidak lebih besar dari b")
      End If

      ' Ubah nilai a dan b
      a = 5
      b = 20

      If (a <= b) Then
         Console.WriteLine("Baris 4 - a lebih kecil atau sama dengan b")
      End If

      If (b >= a) Then
         Console.WriteLine("Baris 5 - b lebih besar atau sama dengan a")
      End If

      Console.ReadLine()
   End Sub
End Module

Hasil Ketika Kode Dijalankan:

Baris 1 - a tidak sama dengan b  
Baris 2 - a tidak lebih kecil dari b  
Baris 3 - a lebih besar dari b  
Baris 4 - a lebih kecil atau sama dengan b  
Baris 5 - b lebih besar atau sama dengan a  

Operator Perbandingan Tambahan di VB.Net:

Selain operator di atas, VB.Net juga menyediakan tiga operator perbandingan tambahan yang akan dibahas pada bab berikutnya, tetapi dijelaskan secara singkat di sini:

  • Is Operator
    Membandingkan dua variabel referensi objek dan menentukan apakah keduanya merujuk ke objek yang sama persis.
    Jika object1 dan object2 merujuk ke instansi objek yang sama, hasilnya True, jika tidak maka False.
  • IsNot Operator
    Kebalikan dari Is. Membandingkan dua referensi objek dan menentukan apakah mereka berbeda.
    Jika object1 dan object2 berbeda objek, hasilnya True, jika sama maka False.
  • Like Operator
    Digunakan untuk membandingkan string terhadap sebuah pola (pattern).

Operator Logika/Bitwise

Tabel berikut menunjukkan semua operator logika yang didukung oleh VB.Net. Misalkan variabel A bernilai Boolean True dan variabel B bernilai Boolean False, maka −

OperatorDeskripsiContoh
AndIni adalah operator logika sekaligus bitwise AND. Jika kedua operand bernilai true, maka kondisi menjadi true. Operator ini tidak melakukan short-circuiting, artinya mengevaluasi kedua ekspresi.(A And B) adalah False.
OrIni adalah operator logika sekaligus bitwise OR. Jika salah satu dari dua operand bernilai true, maka kondisi menjadi true. Operator ini juga tidak melakukan short-circuiting.(A Or B) adalah True.
NotIni adalah operator logika sekaligus bitwise NOT. Digunakan untuk membalik keadaan logika dari operand-nya. Jika kondisi true, maka operator NOT akan membuatnya menjadi false.Not(A And B) adalah True.
XorIni adalah operator logika sekaligus bitwise Logical Exclusive OR. Menghasilkan False jika kedua ekspresi True atau kedua ekspresi False; jika tidak, menghasilkan True. Tidak melakukan short-circuiting.A Xor B adalah True.
AndAlsoIni adalah operator logika AND. Hanya bekerja pada data Boolean dan melakukan short-circuiting.(A AndAlso B) adalah False.
OrElseIni adalah operator logika OR. Hanya bekerja pada data Boolean dan melakukan short-circuiting.(A OrElse B) adalah True.
IsFalseMenentukan apakah sebuah ekspresi bernilai False.
IsTrueMenentukan apakah sebuah ekspresi bernilai True.

Cobalah contoh berikut untuk memahami semua operator logika/bitwise yang tersedia di VB.Net:

Module logicalOp
   Sub Main()
      Dim a As Boolean = True
      Dim b As Boolean = True
      Dim c As Integer = 5
      Dim d As Integer = 20
      
      'Pengecekan logika And, Or dan Xor
      If (a And b) Then
         Console.WriteLine("Baris 1 - Kondisi benar")
      End If
      If (a Or b) Then
         Console.WriteLine("Baris 2 - Kondisi benar")
      End If
      If (a Xor b) Then
         Console.WriteLine("Baris 3 - Kondisi benar")
      End If
      
      'Pengecekan bitwise And, Or dan Xor
      If (c And d) Then
         Console.WriteLine("Baris 4 - Kondisi benar")
      End If
      If (c Or d) Then
         Console.WriteLine("Baris 5 - Kondisi benar")
      End If
      If (c Or d) Then
         Console.WriteLine("Baris 6 - Kondisi benar")
      End If
      
      'Hanya operator logika
      If (a AndAlso b) Then
         Console.WriteLine("Baris 7 - Kondisi benar")
      End If
      If (a OrElse b) Then
         Console.WriteLine("Baris 8 - Kondisi benar")
      End If

      'ubah nilai dari a dan b
      a = False
      b = True
      If (a And b) Then
         Console.WriteLine("Baris 9 - Kondisi benar")
      Else
         Console.WriteLine("Baris 9 - Kondisi tidak benar")
      End If
      If (Not (a And b)) Then
         Console.WriteLine("Baris 10 - Kondisi benar")
      End If

      Console.ReadLine()
   End Sub
End Module

Ketika kode di atas dikompilasi dan dijalankan, akan menghasilkan output sebagai berikut:

Baris 1 - Kondisi benar  
Baris 2 - Kondisi benar  
Baris 3 - Kondisi benar  
Baris 4 - Kondisi benar  
Baris 5 - Kondisi benar  
Baris 6 - Kondisi benar  
Baris 7 - Kondisi benar  
Baris 8 - Kondisi benar  
Baris 9 - Kondisi tidak benar  
Baris 10 - Kondisi benar

Operator Pergeseran Bit (bit shift)

Misalkan variabel A bernilai 60 dan variabel B bernilai 13, maka −

OperatorDeskripsiContoh
AndOperator AND bitwise menyalin bit ke hasil jika bit tersebut ada di kedua operand.(A AND B) akan menghasilkan 12, yaitu 0000 1100
OrOperator OR biner menyalin bit jika bit tersebut ada di salah satu operand.(A Or B) akan menghasilkan 61, yaitu 0011 1101
XorOperator XOR biner menyalin bit jika bit tersebut ada di salah satu operand saja tetapi tidak di keduanya.(A Xor B) akan menghasilkan 49, yaitu 0011 0001
NotOperator komplemen satu biner (Unary) yang membalik semua bit.(Not A) akan menghasilkan -61, yaitu 1100 0011 dalam bentuk komplemen dua karena bilangan biner bertanda.
<<Operator Pergeseran Kiri Biner. Nilai operand kiri digeser ke kiri sebanyak jumlah bit yang ditentukan oleh operand kanan.A << 2 akan menghasilkan 240, yaitu 1111 0000
>>Operator Pergeseran Kanan Biner. Nilai operand kiri digeser ke kanan sebanyak jumlah bit yang ditentukan oleh operand kanan.A >> 2 akan menghasilkan 15, yaitu 0000 1111

Coba contoh berikut untuk memahami semua operator bitwise yang tersedia di VB.Net:

Module BitwiseOp
   Sub Main()
      Dim a As Integer = 60       ' 60 = 0011 1100   
      Dim b As Integer = 13       ' 13 = 0000 1101
      Dim c As Integer = 0

      c = a And b       ' 12 = 0000 1100 
      Console.WriteLine("Baris 1 - Nilai c adalah {0}", c)

      c = a Or b        ' 61 = 0011 1101 
      Console.WriteLine("Baris 2 - Nilai c adalah {0}", c)

      c = a Xor b       ' 49 = 0011 0001 
      Console.WriteLine("Baris 3 - Nilai c adalah {0}", c)

      c = Not a         ' -61 = 1100 0011 
      Console.WriteLine("Baris 4 - Nilai c adalah {0}", c)

      c = a << 2        ' 240 = 1111 0000 
      Console.WriteLine("Baris 5 - Nilai c adalah {0}", c)

      c = a >> 2        ' 15 = 0000 1111 
      Console.WriteLine("Baris 6 - Nilai c adalah {0}", c)

      Console.ReadLine()
   End Sub
End Module

Ketika kode di atas dikompilasi dan dijalankan, hasil yang dihasilkan adalah:

Baris 1 - Nilai c adalah 12  
Baris 2 - Nilai c adalah 61  
Baris 3 - Nilai c adalah 49  
Baris 4 - Nilai c adalah -61  
Baris 5 - Nilai c adalah 240  
Baris 6 - Nilai c adalah 15  

Operator Penugasan (assignment)

VB.Net mendukung operator penugasan (assignment operators) berikut:

OperatorDeskripsiContoh
=Operator penugasan sederhana, menetapkan nilai dari operand kanan ke operand kiri.C = A + B akan menetapkan hasil dari A + B ke C
+=Operator penambahan dan penugasan. Menambahkan operand kanan ke operand kiri dan menetapkan hasilnya ke operand kiri.C += A sama dengan C = C + A
-=Operator pengurangan dan penugasan. Mengurangi operand kanan dari operand kiri dan menetapkan hasilnya ke operand kiri.C -= A sama dengan C = C - A
*=Operator perkalian dan penugasan. Mengalikan operand kanan dengan operand kiri dan menetapkan hasilnya ke operand kiri.C *= A sama dengan C = C * A
/=Operator pembagian dan penugasan. Membagi operand kiri dengan operand kanan dan menetapkan hasilnya ke operand kiri (pembagian pecahan).C /= A sama dengan C = C / A
\=Operator pembagian bulat dan penugasan. Membagi operand kiri dengan operand kanan secara integer dan menetapkan hasilnya ke operand kiri.C \= A sama dengan C = C \ A
^=Operator perpangkatan dan penugasan. Menaikkan operand kiri ke pangkat operand kanan dan menetapkan hasilnya ke operand kiri.C ^= A sama dengan C = C ^ A
<<=Operator pergeseran kiri dan penugasan.C <<= 2 sama dengan C = C << 2
>>=Operator pergeseran kanan dan penugasan.C >>= 2 sama dengan C = C >> 2
&=Menggabungkan ekspresi string ke variabel atau properti string dan menetapkan hasilnya.Str1 &= Str2 sama dengan Str1 = Str1 & Str2

Contoh

Coba contoh berikut untuk memahami semua operator penugasan yang tersedia di VB.Net:

Module assignment
   Sub Main()
      Dim a As Integer = 21
      Dim pow As Integer = 2
      Dim str1 As String = "Hello! "
      Dim str2 As String = "VB Programmers"
      Dim c As Integer

      c = a
      Console.WriteLine("Baris 1 - Contoh Operator =, Nilai c = {0}", c)

      c += a
      Console.WriteLine("Baris 2 - Contoh Operator +=, Nilai c = {0}", c)

      c -= a
      Console.WriteLine("Baris 3 - Contoh Operator -=, Nilai c = {0}", c)

      c *= a
      Console.WriteLine("Baris 4 - Contoh Operator *=, Nilai c = {0}", c)

      c /= a
      Console.WriteLine("Baris 5 - Contoh Operator /=, Nilai c = {0}", c)

      c = 20
      c ^= pow
      Console.WriteLine("Baris 6 - Contoh Operator ^=, Nilai c = {0}", c)

      c <<= 2
      Console.WriteLine("Baris 7 - Contoh Operator <<=, Nilai c = {0}", c)

      c >>= 2
      Console.WriteLine("Baris 8 - Contoh Operator >>=, Nilai c = {0}", c)

      str1 &= str2
      Console.WriteLine("Baris 9 - Contoh Operator &=, Nilai str1 = {0}", str1)

      Console.ReadLine()
   End Sub
End Module

Ketika kode di atas dikompilasi dan dijalankan, maka akan menghasilkan output berikut:

Baris 1 - Contoh Operator =, Nilai c = 21  
Baris 2 - Contoh Operator +=, Nilai c = 42  
Baris 3 - Contoh Operator -=, Nilai c = 21  
Baris 4 - Contoh Operator *=, Nilai c = 441  
Baris 5 - Contoh Operator /=, Nilai c = 21  
Baris 6 - Contoh Operator ^=, Nilai c = 400  
Baris 7 - Contoh Operator <<=, Nilai c = 1600  
Baris 8 - Contoh Operator >>=, Nilai c = 400  
Baris 9 - Contoh Operator &=, Nilai str1 = Hello! VB Programmers  


Operator Lain-Lain (miscellanous)

Beberapa operator penting lainnya yang didukung oleh VB.Net:

OperatorDeskripsiContoh
AddressOfMengembalikan alamat dari sebuah prosedur. Digunakan untuk menunjuk ke prosedur saat menetapkan event handler.AddHandler Button1.Click, AddressOf Button1_Click
AwaitDiterapkan pada operand di dalam metode atau ekspresi lambda asinkron, untuk menunda eksekusi metode hingga tugas (Task) yang ditunggu selesai.vb Dim result As res = Await AsyncMethodThatReturnsResult() Await AsyncMethod()
GetTypeMengembalikan objek Type untuk tipe yang ditentukan. Objek Type menyediakan informasi seperti properti, metode, dan event dari tipe tersebut.MsgBox(GetType(Integer).ToString())
Ekspresi Fungsi (Function Expression)Mendeklarasikan parameter dan kode yang mendefinisikan ekspresi lambda fungsi (fungsi anonim).vb Dim add5 = Function(num As Integer) num + 5 Console.WriteLine(add5(5)) ' hasilnya 10
IfMenggunakan evaluasi pendek (short-circuit) untuk secara kondisional mengembalikan salah satu dari dua nilai. Dapat dipanggil dengan dua atau tiga argumen.vb Dim num = 5 Console.WriteLine(If(num >= 0, "Positif", "Negatif"))


Contoh

Contoh berikut menunjukkan penggunaan beberapa operator di atas:

Module assignment
   Sub Main()
      Dim a As Integer = 21
      
      ' Menampilkan tipe data menggunakan GetType
      Console.WriteLine(GetType(Integer).ToString())
      Console.WriteLine(GetType(Double).ToString())
      Console.WriteLine(GetType(String).ToString())
      
      ' Fungsi lambda untuk mengalikan angka dengan 5
      Dim multiplywith5 = Function(num As Integer) num * 5
      Console.WriteLine(multiplywith5(5))
      
      ' Menggunakan operator If untuk mengevaluasi nilai a
      Console.WriteLine(If(a >= 0, "Positif", "Negatif"))
      
      Console.ReadLine()
   End Sub
End Module

Ketika kode di atas dikompilasi dan dijalankan, hasilnya adalah:

System.Int32  
System.Double  
System.String  
25  
Positif  

Mantap kan yaa? Jadi kita bisa explorasi lagi lebih dalam untuk implementasinya sebentar lagi. Oopps, ada 1 lagi…

Precedensi Operator di VB.Net

Precedensi operator menentukan pengelompokan istilah dalam sebuah ekspresi. Ini memengaruhi bagaimana ekspresi tersebut dievaluasi. Beberapa operator memiliki precedensi yang lebih tinggi dibandingkan operator lainnya; misalnya, operator perkalian memiliki precedensi yang lebih tinggi daripada operator penjumlahan.

Sebagai contoh, dalam ekspresi x = 7 + 3 * 2; di sini, x akan diberi nilai 13, bukan 20, karena operator * memiliki precedensi lebih tinggi daripada +, sehingga operasi perkalian 3 * 2 dilakukan terlebih dahulu, kemudian hasilnya ditambahkan ke 7.

Di sini, operator dengan precedensi tertinggi muncul di bagian atas tabel, sementara operator dengan precedensi terendah muncul di bagian bawah. Dalam sebuah ekspresi, operator dengan precedensi lebih tinggi akan dievaluasi terlebih dahulu.

OperatorPrecedensi
AwaitTertinggi
Exponentiation (^)
Unary identity and negation (+, -)
Multiplication and floating-point division (*, /)
Integer division ()
Modulus arithmetic (Mod)
Addition and subtraction (+, -)
Arithmetic bit shift (>)
All comparison operators (=, <>, <, <=, >, >=, Is, IsNot, Like, TypeOf…Is)
Negation (Not)
Conjunction (And, AndAlso)
Inclusive disjunction (Or, OrElse)
Exclusive disjunction (Xor)Terendah

Contoh

Contoh berikut menunjukkan precedensi operator dengan cara yang sederhana:

Module assignment
   Sub Main()
      Dim a As Integer = 20
      Dim b As Integer = 10
      Dim c As Integer = 15
      Dim d As Integer = 5
      Dim e As Integer
      e = (a + b) * c / d      ' ( 30 * 15 ) / 5
      Console.WriteLine("Value of (a + b) * c / d is : {0}", e)
      
      e = ((a + b) * c) / d    ' (30 * 15 ) / 5
      Console.WriteLine("Value of ((a + b) * c) / d is  : {0}", e)
      
      e = (a + b) * (c / d)    ' (30) * (15/5)
      Console.WriteLine("Value of (a + b) * (c / d) is  : {0}", e)
      
      e = a + (b * c) / d      '  20 + (150/5)
      Console.WriteLine("Value of a + (b * c) / d is  : {0}", e)
      
      Console.ReadLine()
   End Sub
End Module

Ketika kode di atas dikompilasi dan dijalankan, hasil yang dihasilkan adalah sebagai berikut:

Value of (a + b) * c / d is : 90
Value of ((a + b) * c) / d is  : 90
Value of (a + b) * (c / d) is  : 90
Value of a + (b * c) / d is  : 50

Okay alhamdulillah operator kelar juga! Next … move ‘on!