Operator Aritmatik Pada C++


Operator aritmatik yang dipakai dalam C++ adalah :

+          tambah

–          kurang

*           kali

/           bagi

%         modulus

Operator-operator di atas dikenal sebagai binary operators artinya operator-operator ini memerlukan dua operan. Operator +, -, * dan / telah jelas artinya, yang perlu dijelaskan adalah operator modulus (%), operator ini dipakai untuk mencari sisa dan pembagian antar bilangan bulat, misalnya 20 % 8 menghasilkan 4 karena sisa pembagian dari 20 dibagi 8 adalah 4. Operator + dan – dapat dipakai sebagai unary operator, artinya operator-operator  ini hanya memerlukan satu operan saja. Suatu variabel dapat dinyatakan positip atau negatip dengan unary operator + atau -, misalnya:

a = -25;

b = +25;

c = -a+b;    .

Suatu ekpresi dapat mengandung lebih dari satu jenis operator, C++ mengartikannya berdasar order of precedence dari operator-operator tersebut. Order of precedence dari operator menunjukkan hirarki matematis dari suatu operator misalnya:

2 + 3 * 2;

C++ akan menghitung 3*2 dulu karena operator kali (*) hirarkinya lebih tinggi dari operator + sehingga ekpresi di atas hasilnya adalah 8, bukan 10. Untuk operator aritmatik order of precedence-nya yang tinggi adalah kali (*), bagi (/) dan modulus (%) sedang yang rendah adalah tambah (+) dan kurang (-),Jadi C++ selalu melakukan kali, bagi dan modulus lalu diikuti tambah dan kurang. Operator-operator dalam C++ terdistribusi dalam 15 hirarki precedence yang dapat dilihat pada tabel di bawah ini.

Tabel Precedence dari Operator dalam C++

Precedence Level

Symbol

Description

Associativity

1

++

Prefex increment Left to right

Prefex decrement

()

Function call and subexpression

[]

Array subscript

->

Structure pointer

.

Structure member
2

!

Logical negation Right to left

~

1’s complement

Unary negation

+

Unary plus

(type)

Type cast

*

Pointer  deference

&

Address of

Sizeof

Size of
3

*

Multiplication Left to right

/

Division

%

Modulus
4

+

Addtion Left to right

Subtraction
5

<<

Bitwise left shift Left to right

>>

Bitwise right right shift
6

<

Less than Left to right

<=

Less than or equal to

>

Greater than

>=

Greater than or equal to
7

==

Equal test Left to right

!=

Not equal to
8

&

Bitwise AND Left to right
9

^

Bitwise exclusive OR Left to right
10

|

Bitwise inclusive OR Left to right
11

&&

Logical AND Left to right
12

||

Logical inclusive OR Left to right
13

?:

Conditional test Left to right
14

=

Assigment Left to right

+=

Compound add

-=

Compound substract

*=

Compound multiply

/=

Compound divide

%=

Compound modulus

<<=

Compound bitwise left shift

>>=

Compound bitwise right shift

&=

Compound bitwise AND

^=

Compound bitwise exclusive OR

|=

Compound bitwise inclusive OR
15

,

Sequence point Left to right

++

Postfix increment

Postfix decrement

Berdasar table of precedence di atas assignment berlipat banyak dapat dimengerti dengan mudah, misalnya :

       A = b = c = d = e = 100;

dalam hal ini assosiativitasnya adalah dari kanan ke kin, jadi 100 dipasangkan di variabel e, lalu dari variabel  e  ke variabel  d  demikian seterusnya sampai akhirnya  n, sehingga setelah selesai dieksekusi variabel-variabel a, b, c, d, e mempunyai nilai 100. Bahkan kita dapat menulis ekpresi sebagai berikut :

       x = 5 + (y = 9 – z);

Order of precedence dari operator dapat di bypass dengan tanda kurung,karena tingkatan precedence dari tanda kurung adalah di atas operator kali, bagi dan modulus sehingga ekpresi tadijika ditulis (2+3)*2 akan menghasilkan 10. Contoh lain adalah :

Contoh program berikut ini menjelaskan pemakaian tanda kurung untuk mencari rata-rata:

//C1_2.CPP

#include <iostream.h>

#include <iomanip.h>

 

main()

{

float nilai_1, nilai_2, nilai_3, rata2;

nilai_1 = 85.0;

nilai_2 = 80.0;

nilai_3 = 75.0;

// rata2 = nilai_1 + nilai_2 + nilai_3 / 3.0;

/* Perhatikan tanda kurung diperlukan untuk mengubah

order of precedence supaya rata-ratanya benar */

rata2 = (nilai_1 + nilai_2 + nilai_3) / 3.0;

cout << “Rata-rata nilai adalah : ” << setprecision(2) << rata2;

return 0;

}

Operator-operator aritmatik ini dapat digabungkan untuk membentuk operator gabungan (compound operator). Dari tabel of precedence tampak bahwa tingkatan precedence dari operator gabungan ini rendah sehingga pada suatu ekpresi yang mengandung banyak operator, operator gabungan ini pada umumnya dievaluasi pada saat-saat akhir.  Contoh pemakaian operator gabungan:

Operator

Contoh

Ekivalen

+= bonus += 500; bonus = bonus + 500;
-= budget -= 50; budget = budget •- 50;
*= gaji *= 1.2; gaji=gaji * 1.2;
/= faktor/= 50; faktor= faktor/.50;
%=  jml_hari %=7; jml_hari =jml_hari % 7;

Contoh program berikut ini akan memperjelas pengertian mengenai operator gabungan dan tingkatan precedence nya.

// C2_2.CPP

#include <iostream.h>

main()

{

int i  = 4;

int j  = 8;

int k = 12;

int jwb;

jwb = I + j;

cout << jwb << “\n”;      //12

jwb += k;

cout << jwb << “\n”;      //24

jwb /= 3;

cout << jwb << “\n”;      //8

jwb -= 5;

cout << jwb << “\n”;      //3

jwb *= 2;

cout << jwb << “\n”;      //6

jwb %= 4;

cout << jwb << “\n”;      //2

//  Order of precedence berpengaruh

jwb *= 5+3;

cout << jwb << “\n”;      //16

jwb += 4-2;

cout << jwb << “\n”;      //18

return 0;

}

Pada suatu ekpresi dalam C++ tipe data tidak harus sama. Kalau suatu bilangan bulat ditambah dengan suatu bilangan pecahan maka C++ akan mengkonversi tipe yang lebih kecil ke tipe yang lebih besar. Konversi ini, yang hanya bersifat sementara pada saat ekpresi dievalusi saja, pada umumnya akan memberikan hasil yang lebih teliti. Jika konversi dilakukan sebaliknya maka terjadi pemotongan pada tipe data yang lebih besar sehingga mengurangi ketelitian. Konversi yang bersifat otomatis ini dapat di bypass dengan type casting, yaitu kita memaksa compiler untuk mengkonversi menjadi tipe data yang kita inginkan. Tipe data yang di type cast ini berubah menjadi tipe baru hanya pada saat ekpresi dievaluasi, jadi sifatnya sementara. Format dari suatu type cast adalah:

(tipe data) ekspresi

dalam hal ini tipe data adalah tipe data yang ada di C++, dan  ekspresi dapat berupa variabel, konstanta atau kombinasinya. Program berikut ini memakai suatu type cast untuk menghitung bunga pinjaman.

// C3_2.CPP

#include <iostream.h>

#include <iomanip.h>

main ()

{

int      jml_hari =45;

float   jml_pinjaman = 2000000.00;

float    bunga_tahunan =0.155;

float   bunga_harian, bunga_pinjaman;

 

// Type cast jumlah hari dalam 1 tahun menjadi tipe float

bunga_harian = bunga_tahunan / (float)365;

//Karena jml_hari adalah integer, konversikan menjadi float

bunga_pinjaman =jml_pinjaman * bunga_harian * (float)jml_hari;

 

jml_pinjaman += bunga_pinjaman;

 

cout << “Total liutang anda adalah ”

<< setioflags(ios::fixed) << setprecision(2)

<<jml_pinjaman;

return 0;

}


Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *