Minggu, 24 November 2013

Operator pada Pemrograman C++

Setelah kita memahami mengenai Variabel dan Konstanta pada pembahasan sebelumnya, sekarang kita dapat memulai beroperasi dengannya.

Operator yang disediakan berupa keyword atau karakter khusus. Operator-operator ini cukup penting untuk diketahui, karena merupakan salah satu dasar bahasa C++. Tetapi tidak diharuskan untuk menghafalkan semuanya, gunakanlaman page ini sebagai rujukan saja, siapa tahu sobat membutuhkannya di kemudian hari.

Assignation ( = )


Operator Assignation digunakan untuk memberikan nilai ke suatu variabel. contohnya :

a=5

Pernyataan di atas berarti kita memberikan nilai integer 5 ke variabel a. Sisi kiri operator disebut lvalue (left value) dan sisi kanan disebut rvalue (right value). lvalue harus selalu berupa variabel dan rvalue atau sisi kanan dapat berupa konstanta, variabel, hasil dari suatu operasi atau kombinasi dari semuanya.

Aturan yang paling penting pada assigning (operasi sama dengan) adalah aturan kanan-ke-kiri: Operasi assignment selalu terjadi dari kanan ke kiri, dan tidak pernah sebaliknya.

a = b

Pernyataan ini memberikan arti variabel a (lvalue) di beri harga b (rvalue).
Contoh penerapannya begini :
a = 10; //berarti a bernilai 10
b = 4; //berarti a bernilai 10 dan b bernilai 4
a = b; //berarti a bernilai 4 dan b bernilai 4. Ingat aturannya, Kanan ke Kiri.
b = 7; //berarti a bernilai 4 dan b bernilai 7.
Bagaimana, sudah paham belum? jangan bilang tidak paham ya sobat. hehehe

Operator Aritmatika

Operator aritmatika yang dapat digunakan di C++ ada 5, yaitu :
  • + Penjumlahan
  • - Pengurangan
  • * Perkalian
  • / Pembagian
  • % Modulo atau modulus
Wah pasti tidak perlu di jelaskan satu persatu sobat juga pasti sudah paham. Mungkin yang sedikit bingung adalah operator ( % ) atau modulo. Modulo adalah operasi yang memberikan sisa dari pembagian dua nilai. Misalnya begini:
a = 11 % 3
Variabel a akan bernilai 2. Nilai 2 didapat dari sisa pembagian 11 dibagi 3. Coba saja di cek kalau tidak percaya. Tetapi jangan menggunakan kalkulator, karena hasilnya akan bilangan desimal. Capek deh.

Increase ( ++ ) and Decrease ( -- )


Di C++ kita dapat memperpendek operasi :
Increase (++)
a++;
a+=1;
a=a+1;
Decrease (--)
a--;
a-=1;
a=a-1;
Masih bingung? begini sobat. Misalnya a=3; a++; maka nilai a yang baru adalah 4. Nah paham kan?

Operator Increase (++) dan Decrease (--) dapat digunakan sebagai prefix atau suffix. Dengan kata lain dapat dituliskan sebelum identifier variabel (++a) atau sesudahnya (a++). Operator increase yang digunakan sebagai prefix (++a), begini perbedaannya:

Contoh 1
(Prefix)
Contoh 2
(Surfix)
B = 3; 
A = + + B; 
// A berisi 4, B berisi 4
B = 3; 
A = B + +; 
// A berisi 3, B berisi 4

Pada contoh 1, B ditambahkan sebelum nilainya diberikan ke A. Sedangkan contoh 2, Nilai B diberikan terlebih dahulu ke A dan B ditambahkan kemudian.

Relational operators ( ==, !=, >, <, >=, <= )


Untuk mengevaluasi antara 2 ekspresi, dapat digunakan operator Relasional di atas. Hasil dari operator ini adalah nilai Boolean yaitu hanya berupa True atau False, atau dapat juga dalam nilai int, 0 untuk mereprensentasikan "false" dan 1 untuk merepresentasikan "true".

==Sama dengan
! =Tidak sama dengan
>Lebih besar dari
<Kurang dari
> =Lebih besar dari atau sama dengan
<=Kurang dari atau sama dengan

Contoh :
(7 == 5) // evaluates to false atau hasil perbandingan salah.
(5 > 4) // evaluates to true atau hasil perbandingan benar.
(3 != 2) // evaluates to true atau hasil perbandingan benar.
(6 >= 6) // evaluates to true atau hasil perbandingan benar.
(5 < 5) // evaluates to false atau hasil perbandingan salah.

Selain menggunakan konstanta numerik seperti di atas, kita dapat menggunakan ekspresi yang valid, termasuk variabel. Misalkan a = 2, b = 3 dan c = 6 :

(a == 5) // "evaluates to false" karena a tidak samadengan 5.
(a*b >= c) // "evaluates to true" karena (2*3 >= 6) adalah benar.
(b+4 > a*c) // "evaluates to false" karena (3+4 > 2*6) adalah salah.
((b=2) == a) // "evaluates to true".

Hati-hati! Operator = (satu tanda sama) adalah tidak sama dengan operator == (dua tanda yang sama), yang pertama adalah operator penugasan (memberikan nilai pada haknya untuk variabel di sebelah kiri) dan yang lainnya (= =) adalah operator kesetaraan yang membandingkan apakah kedua ekspresi dalam dua sisi itu adalah sama satu sama lain.

Logic operators ( !, &&, || )


Operator Logika digunakan untuk menghubungkan dua buah operasi relasi menjadi sebuah ungkapan kondisi. Hasil dari operator logika ini menghasilkan nilai numerik 1 (True) atau 0 (False).


!Operator logika NOT
&&Operator logika AND
||Operator logika OR

Operator logika NOT ( ! )
Operator logika NOT akan memberikan nilai kebalikkan dari ekspresi yang disebutkan. Jika nilai yang disebutkan bernilai BENAR maka akan menghasilkannilai SALAH, begitu pula sebaliknya.
Misalnya :
Jika nilai a = 3 pada a + 4 < 10 :
Pada ekspresi relasi akan bernilai 1 (true), karena 7 < 10, sedangkan jika digunakan operator NOT akan menjadi !(a + 4 < 10) dan bernilai 0 (false).

Operator logika AND ( && )
Operator logika AND digunakan untuk menghubungkan dua atau lebih ekspresi relasi, akan dianggap BENAR, bila semua ekspresi relasi yang dihubungkan bernilai BENAR.
Lihat :
Operator &&
aba && b
truetruetrue
truefalsefalse
falsetruefalse
falsefalsefalse

Contohnya :
Ada 3 relasi, yaitu a + 4 < 10 ;  b > a + 5 ; c - 2 >= 4 ; . Jika a = 3 ; b = 3 ; c = 7 ; . maka penggunaan operator logika AND seperti berikut :
  • a + 4 < 10  ==>  3 + 4 < 10  ==>  7 < 10 ==> Benar
  • b > a + 5  ==>  3 > 3 + 5  ==>  3 > 8  ==> Salah
  • c - 2 >= 4  ==>  7 - 2 >= 4  ==>  5 >= 4 ==> Benar
Jika menggunakan Operator Logika AND pada ketiga relasi di atas akan bernilai Salah ( 0 ), karena ada satu relasi yang bernilai Salah, maka semuanya akan bernilai Salah.
a + 4 < 10 && b > a + 5 && c - 2 >= 4  ==> Salah ==> 0 nol

Operator logika OR ( || )
Operator logika OR digunakan untuk menghubungkan dua atau lebih ekspresi relasi, akan dianggap BENAR, bila salah satu ekspresi relasi yang dihubungkan bernilai BENAR dan bila semua ekspresi relasi yang dihubungkan bernilai SALAH,maka akan bernilai SALAH.
Operator ||
aba || b
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse

Contonya saya buat masih sama seperti pada kasus Operator Logika AND ( && ).

  • a + 4 < 10  ==>  3 + 4 < 10  ==>  7 < 10 ==> Benar
  • b > a + 5  ==>  3 > 3 + 5  ==>  3 > 8  ==> Salah
  • c - 2 >= 4  ==>  7 - 2 >= 4  ==>  5 >= 4 ==> Benar
Jika menggunakan Operator Logika OR pada ketiga relasi di atas akan bernilai Benar ( 1 ), karena jika ada satu relasi saja yang bernilai Benar, maka semuanya akan bernilai Benar.
a + 4 < 10 || b > a + 5 || c - 2 >= 4  ==> Benar ==> 1

Conditional operator ( ? )


Conditional operator atau operator bersyarat akan mengevaluasi ekspresi dan memberikan hasil tergantung dari hasil evaluasi (true atau false). Sintaks :

condition ? result1 : result2

Jika kondisi true maka akan menghasilkan result1 , jika tidak akan menghasilkanresult2

Perhatikan :
7==5 ? 4 : 3 // hasil 3, karena 7 tidak sama dengan 5.
7==5+2 ? 4 : 3 // hasil 4, karena 7 sama dengan 5+2.
5>3 ? a : b // hasil bernilai a, karena 5 lebih besar dari 3.
a>b ? a : b // hasil tergantung nilai variabel mana yang lebih besar, a atau b.

Bitwise Operators ( &, |, ^, ~, <<, >>)


Operator Bitwise memodifikasi variabel menurut bit yang merepresentasikan nilai yang disimpan, atau dengan kata lain dalam representasi binary.

operatorasm equivalentKeterangan
&ANDBitwise AND
|ORBitwise Inclusive OR
^XORBitwise Exclusive OR
~NOTUnary complement (bit inversion)
<<SHLShift Left
>>SHRShift Right


Explicit type casting operators


Type casting operators memungkinkan untuk mengkonversikan tipe data yang sudah diberikan ke tipe data yang lain. Ada beberapa cara yang dapat dilakukan dalam C++, yang paling popular yaitu tipe baru dituliskan dalam tanda kurung ().

Contoh :
int i; float f = 3.14; i = ( int ) f;
Contoh diatas, mengkonversikan nilai 3.14 menjadi nilai integer (3). Type casting operator yang digunakan ( int ).

Precedence of operators ( Prioritas pada operator )


Maksudnya operasi yang di dahulukan terlebih dahulu. Misal :

a = 4 + 8 / 2 ;
Jawaban atau nilai a adalah 8. Mengapa bukan 6 ? Ya karena pada C++ pengerjaan operasi di lakukan dari level yang tinggi ke level yang lebh rendah.

Berikut ini adalah prioritas operator dari tinggi ke rendah :
LevelOperatorDescriptionGrouping
1::scopeLeft-to-right
2() [] . -> ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeidpostfixLeft-to-right
3++ -- ~ ! sizeof new deleteunary (prefix)Right-to-left
* &indirection and reference (pointers)
+ -unary sign operator
4(type)type castingRight-to-left
5.* ->*pointer-to-memberLeft-to-right
6* / %multiplicativeLeft-to-right
7+ -additiveLeft-to-right
8<< >>shiftLeft-to-right
9< > <= >=relationalLeft-to-right
10== !=equalityLeft-to-right
11&bitwise ANDLeft-to-right
12^bitwise XORLeft-to-right
13|bitwise ORLeft-to-right
14&&logical ANDLeft-to-right
15||logical ORLeft-to-right
16?:conditionalRight-to-left
17= *= /= %= += -= >>= <<= &= ^= |=assignmentRight-to-left
18,commaLeft-to-right

0 komentar:

Posting Komentar