Belajar Operator Aritmetika ---Pemrograman C---

Operator Aritmetika

Dalam setiap bahasa pemrograman selalu memiliki operator yang berguna untuk melakukan suatu operasi (sehingga dinamakan operator) dengan menggunakan simbol-simbol tertentu. Dalam bab ini akan dibahasa operator-operator dalam C yang dikelompokkan dalam katagori operasionalnya.

C mendukung operator untuk operasi artimetika seperti dalam tabel :



Perhatikan cuplikan program berikut ,
Listing 3.1. Oprs.C
int main(void)
{
  int i = 5, j = 4, k;
  double f = 5.0, g = 4.0 , h;

  k = i / j;
  h = f / g;
  h = i / j;

  return 0;
}
Pada baris k = i / j, compiler akan menggunakan pembagian integer karena kedua operandadalah tipe integer.

Pada baris h = f / g, compiler menggunakan pembagian double karena jelas kedua operandadalah tipe double.

Pada baris h = i / j, compiler tetap menggunakan pembagian integer dengan mengabaikan bahwa variabel untuk menampung hasilnya adalah tipe double. Hasil yang diperoleh akan disimpan dalam bentuk double.

Casting Operator

Istilah casting sering diartikan sebagai berperilaku seperti sesuatu yang lain dan untuk tujuan tertentu. Perhatikan baris program berikut :

Listing 3.2. Cast.C

int main(void)
{
  int i = 5, j = 4, k;
  double f;

  f = (double)i / j;
  f = i / (double)j;
  f = (double)i / (double)j;
  f = (double) (i / j);

  return 0;
}


Pada baris f = (double)i / jf = i / (double)j dan f = (double)i / (double)j, compiler menggunakan pembagian tipe double karena salah satu operand adalah tipe double yang secara otomatis operand yang berukuran lebih kecil akan diubah sementara menjadi double. Operasi ini disebut type promotion.

Sedangkan pada f = (double) (i / j), compilertetap menggunakan pembagian integer namun hasilnya diubah ke double.

Operator Increment dan Decrement

C sebagai tersed-language (bahasa yang ringkas) memiliki operator khusus yang digunakan untuk menambah (increment) dan mengurangi (decrement) suatu variabel dengan bentuk yang unik namun sangat ringkas yaitu ++ dan --.

Ada dua versi untuk masing-masing operator ini yang biasa disebut prefix dan postfix sesuai dengan letak penulisannya.

Prefix ++ dan –

Dengan prefix operator, operator-operator ini ditempatkan sebelum sebuah variabel yang akan dioperasikan misalnya :

int  x = 5;
y = ++x;
z = --x;

Prefix operator ini bekerja dengan prinsip

Tambahkan (untuk ++) atau kurangkan (untuk --) nilai sebuah variabel dengan satu dan simpan nilai itu dalam sebuah variabel yang diletakkan di sebelah kiri jika ada.

Jadi untuk contoh ini, nilai x yang semula bernilai 5 akan ditambahkan dengan satu (menjadi 6) dan disimpan dalam y, selanjutnya dikurangi satu dan disimpan dalam z (nilai 5);

Posfix ++ dan –

Operator ini bekerja dengan mengambil data sebelum dilakukan operasi postfix.

int x = 5;
y = x++;
z = x--;

 

Operator Komparasi

Bahasa C dalam melakukan operasi logika menggunakan dua logika yaitu benar (true) atau salah (false) namun C tidak memiliki kata kunci khusus untuk true/false. Semua nilai yang tidak nol (non-zero) akan dianggap true dan nilai nol akan dianggap false.

Logika benar dan salah ini digunakan untuk melakukan operasi perbandingan dengan berbagai kondisi yang dalam C dapat dilakukan dengan operator- operator seperti dalam tabel :


Perhatikan contoh program berikut ,

int i = 10, j, k;
j = i > 5;
k = i < 2;
 
Hasil dari baris program ini akan membuat j bernilai 1 (true) karena i memang lebih besar dari 5 dan k bernilai 0 (false) karena i lebih besar dari 2.

Operator Logika

Dalam melakukan operasi pembandingan atau komparasi seringkali dilakukan untuk dua atau lebih pernyataan logika untuk mengambil sebuah keputusan. C menyediakan operator untuk melakukan pembandingan logika :

Operator-operator ini juga menganggap nilai tidak nol sebagai nilai yang benar (true) dan nol sebagai nilai yang salah (false).

Beberapa hal yang perlu diketahui dari perilaku compiler dalam mengevaluasi sebuah pernyataan logika :

Evaluasi dilakukan dari kiri ke kanan
Evaluasi dilakukan dengan berpedoman pada prinsip “short circuit”.

int j = 5, k = 2;
if (j > 10 && k <= 2)

Untuk baris program ini, compiler tidak akan mengevaluasi k <= 2 karena operator && (and) yang akan bernilai benar hanya jika kedua operand yang dibandingkan bernilai benar (tidak nol). Jadi untuk hal ini karena j > 10 bernilai salah maka compiler sudah yakin bahwa pernyataan ini bernilai salah (false). Mekanisme ini disebut short-circuit. Dengan mekanisme ini juga, compiler dapat menghasilkan program yang lebih efisien.

Sebagai saran praktis, gunakan tanda kurung untuk memisahakan masing-masing kondisi agar alur program menjadi jelas.

Bitwise Operator

Operator-operator ini digunakan untuk memanipulasi bit-bit (bitwise) dalam sebuah variabel yang sering digunakan dalam bahasa assembly. Keberadaan operator ini sangat masuk akal karena C pertama kali dirancang untuk membuat abstraksi dari assembly dan dijuluki sebagai high level assembly.

Operator-operator yang disediakan antara lain :

Bagi anda yang tidak memiliki latar belakang pemrograman sama sekali, operator-operator ini perlu mendapat penjelasan lebih lanjut. Untuk memahami operator-operator ini perlu juga dijelaskan tentang tabel kebenaran untuk operasi-operasi andor dan xor. Untuk operator-operator yang lain dapat dipahami dengan mudah sesuai dengan namanya.

Operator ~ akan mengubah sebuat bit menjadi kebalikannya yaitu 1 menjadi 0 dan 0 menjadi 1. Operator >> akan mengeser bit-bit dalam sebuah operand ke kiri sebanyak angka yang diletakkan di sebelah kanan operator ini. Misalnya,

int a = 2;
a = 2 >> 1;

 

Assignment Operators

Operator ini berfungsi untuk mentransfer suatu nilai antara dua operand. Bentuk dari assigment dalam C adalah : 
ekspresi1 (operator)= ekspresi2 
yang ekuivalen dengan 
ekspresi1 = ekspresi1 (operator) ekspresi2

Jadi C menyedikan bentuk singkat untuk operasi assignment seperti dalam tabel :


Contoh :

int a = 10,b = 12.5;
a += b;
b /= 10;

Setelah program dijalankan akan membuat nilai-nilai variabel menjadi:
a = 22.5
b = 1.35

Seringkali kesalahan timbul karena salah menuliskan assignment dengan komparasi,
Ditulis,
if (a = b)
{
}
yang sebenarnya dimaksud,
if (a == b)
{
}

Yang paling menyulitkan adalah dengan “kesalahan” itu compiler tidak akan menginformasikan sebagai kesalahan sintak karena dianggap kita mengerti apa yang kita lakukan. Jadi tergantung pada konteks, kalau yang kita maksud adalah memang assignment, pernyataan itu menjadi benar dan sebaliknya.

Operator sizeof

Walaupun operator ini bukan termasuk dalam standar C namun hampir setiap compilermengimplementasikannya.Operator ini mempunyai bentuk yang sangat mirip dengan sebuah fungsi yang memungkinkan kita mengetahui jumlah bytes yang diperlukan sebuah tipe data atau variabel.

Penggunaan operator ini sangat mudah misalnya:

sizeof(double) ;
dapat juga ditulis
sizeof double;

Operator Kondisional

Operator ini berguna untuk menguji suatu kondisi. Operator ini mempunyai bentuk : 
kondisi ? ekspresi_jika_kondisi_benar : ekspresi_jika_kondisi_salah; 
yang sama jika ditulis,

if (kondisi)
  ekspresi_jika_kondisi_benar;
else
  ekspresi_jika_kondisi_salah;
 
Contoh :
int a,b = 20, c = -10;
a = (b > c) ? b : c;

Baris perintah itu membuat nilai a menjadi 20. Operator ini biasa disebut ternary operator.

Post a Comment

0 Comments