Friday, October 2, 2015

Macam-macam Ekspresi dalam bahasa pemrograman c-sharp

Ekspresi terbentuk dari rangkaian operator dan operand. Operator yang terdapat dalam suatu ekpresi menyatakan proses apa yang akan dilakukan pada suatu operand. Contoh dari operator adalah +, -, *, / dan new. Sedangkan contoh dari operand adalah literal, fields, variabel lokal dan ekpresi, suatu ekspresi dapat digunakan untuk membentuk ekspresi yang lain yang lebih besar.

C# memiliki tiga macam operator: operator unary, binary dan ternary. Operator unary memiliki satu buah operand dan menggunakan notasi prefix atau postfix (misalnya --x atau x++). Operator binary menggunakan dua buah operand dan menggunakan notifikasi infix (misalnya x + y). C# hanya memiliki satu buat operator ternary yaitu, ? :, operator ini memerlukan tiga buah operand dan menggunakan notasi infix (misalnya x ? y : z).
Dalam pengoperasiannya operator memiliki tingkatan, misalnya jika kita memiliki ekspresi x + y * z, maka ekspresi ini akan di eksekusi dengan urutan x + (y * z) karena operator * memiliki tingkatan yang lebih tinggi dibandingkan dengan operator +. Jika kita ingin mengubah urutan eksekusinya, kita dapat menggunakan tanda kurung. Bahasa pemrograman C# memiliki kemampuan untuk melakukan overload terhadap operator yang berarti setiap operator bisa memiliki fungsi yang berbeda untuk object yang berbeda.

Tabel berikut menunjukan tingkat dari operator dari level yang tinggi ke level terendah, operator dalam kategori yang sama memiliki tingkat yang sama pula.
Kategori
Ekspresi
Keterangan
Primary
x.m
Mengakses member


x(...)
Pemanggilan methon dan delegate


x[.. .]
Mengakses array dan indexer


x++
Post-increment (Penjumlahan dengan 1 setelah x dievaluasi)


x--
Post-decrement (Pengurangan dengan 1 setelah x dievaluasi)
Kategori
Ekspresi
Keterangan

new T(...)
Pembuatan object dan delegate


new T[...]
Pembuatan array


typeof(T)
Mendapatkan object System.Type dari T


checked(x)
Pengecekan ekspresi dalam konteks checked


unchecked(x)
Pengecekan ekspresi dalam konteks unchecked
Unary
+x
Identity


-x
Negation


!x
Logical negation


~x
Bitwise negation


++x
Pre-increment (Penjumlahan dengan 1 sebelum x dievaluasi)


--x
Pre-decrement (Pengurangan dengan 1 sebelum x dievaluasi)


(T)x
Mengkonversi x kedalam tipe T secara eksplisit
Multiplicative
x * y
Perkalian


x / y
Pembagian


x % y
Sisa pembagian
Additive
x + y
Penjumlahan, pengabungan string, kombinasi delegate


x y
Pengurangan, penghapusan delegate
Shift
x << y
Shift left


x >> y
Shift right
Relational and type testing
x < y
Lebih kecil dari


x > y
Lebih besar dari


x <= y
Lebih kecil atau sama dengan


x >= y
Lebih besar atau sama dengan


x is T
Return true jika x adalah T, atau false jika sebaliknya


x as T
Return x sebagai tipe T; atau null jika x tidak bertipe T
Equality
x == y
Sama


x != y
Tidak sama
Logical AND
x & y
Integer bitwise AND, boolean logical AND
Logical XOR
x A y
Integer bitwise XOR, boolean logical XOR
Logical OR
x | y
Integer bitwise OR, boolean logical OR
Conditional AND
x && y
y akan dievaluasi jika x bernilai true
Conditional OR
x || y
y akan dievaluasi jika x bernilai false
Conditional
x ? y : z
y akan dievaluasi jika x bernilai true dan z akan dievaluasi jika x bersinal false
Assignment
x = y
Pemberian suatu nilai


x op= y
Compound assignment. Bisa digunakan pada operator *= /= %= += -= <<= >>=
&= ^= |=

a. Checked vs Unchecked
Operator checked dan unchecked dapat digunanakan dalam konteks operasi aritmatika untuk bilangan bulat. Jika kita membuat suatu program kemudiankita memberikan nilai yang lebih besar dari apa yang dapat di tampung oleh variabel tersebut maka error akan terjadi pada program kita. Ada saatnya dimana kita ingin supaya kompiler tidak memberikan error pada saat kita melakukan operasi ini, untuk itu kita dapat menggunakan operator unchecked.
Dalam konteks checked, System.OverflowException akan terjadi pada saat runtime jika kita memberikan nilai yang lebih besar kedalam suatu variabel, atau akan terjadi kesalahan pada waktu kompilasi jika operasi yang dievaluasi berupa ekspresi konstan.
public static void Main()
        {
            int i = int.MaxValue;
            checked
            {
                Console.Out.WriteLine(i + 1); // Exception
            }
            unchecked
            {
                Console.Out.WriteLine(i + 1); // Overflow } }
            }
        }
Jika program diatas dijalankan blok checked akan menghasilkan kesalahan karena mencoba untuk memberikan nilai sebesar nilai maksimal untuk tipe int ditambah satu.
Unhandled   Exception:   System.OverflowException:   Arithmetic operation resulted in an overflow.
Sedangkan blok unchecked tidak akan mengahasilkan kesalahan. Operasi unchecked ini mirip dengan cara kerja ordometer pada kendaraan kita, jika nilai maksimumnya sudah tercapai maka dia akan mulai lagi dari awal, misalnya jika nilai maksimumnya adalah 999,999 maka berjalan sejauh 1 kilometer lagi ordometer akan menunjukan nilai 000,000, yang merupakan nilai minimal ordometer. Demikian juga dengan int.MaxValue + 1 akan menjadi nilai int.MinValue (-2147483648) yang merukan nilai minimal dari tipe data int.

0 komentar

Post a Comment