OPERATOR
5
Tujuan Instruksi Umum (TIU):
Mampu mengetahui operator yang disediakan oleh bahasa C, sehingga mampu menyelesaikan permasalahan dengan melakukan operasi yang tepat dan menggunkan operator yang sesuai.
Tujuan Instruksi Khusus (TIK):
• Mengetahui jenis operasi dan operator yang digunakan secara umum dalam pemrograman. • Mengetahui operator-operator yang disediakan oleh Bahasa C. • Mampu menggunakan operator yang tepat untuk berbagai operasi
• Mengetahui derajat operator sehingga mampu menganalisa hasil yang didapat dari sebuah ekspresi • Mampu menyelesaikan permasalahan yang lebih luas dengan menggunakan operator yang telah
disediakan oleh bahasa C
Pembahasan Materi:
• Jenis operator
• Operator aritmatika • Operator penugasan • Operator relasi • Operator logika
• Operator koma • Operator bitwise • Operator cast
• Operator sizeof • Derajat operator • Ekspresi
5.1 Operasi dan Operator
Operasi merupakan pengolahan yang dapat dilakukan dilakukan terhadap sebuah atau beberapa data, dalam bahasa C operasi hanya dapat dilakukan terhadap data sejenis (tipe data yang sama) jika operasi diberlakukan terhadap data tidak sejenis umumnya akan menghasilkan keluaran yang tidak sesuai. Simbol atau tanda yang digunakan untuk suatu operasi tertentu dinamakan operator . Sedangkan data (variabel atau konstanta) yang dioperasikan disebut operan .
Berdasarkan jumlah operan maka operator dibagi atas:
Unary operator; operasi yang dilakukan hanya melibatkan satu operan. Binary operator, operasi yang dilakukan melibatkan dua operan. Ternary operator, operasi yang dilakukan melibatkan tiga operan.
36
-----------------------------------------------------Page 1-----------------------------------------------------
Berdasarkan jenis operasinya maka operator dalam bahasa C terbagi atas:
Operator aritmatika Operator relasi Operator logika
Operator pengolahan bit ( bitwise )
Selain operator di atas bahasa C juga menyediakan operator khusus lainnya, yaitu:
Operator koma Operator cast
Operator penugasan Operator bersyarat Operator sizeof
5.2 Operator Aritmatika
Operator aritmatika adalah operator yang digunakan untuk pengolahan aritmatika seperti penjumlahan dua bilangan bulat atau penjumlahan dua bilangan pecahan, pengurangan dua bilangan bulat atau pengurangan dua bilangan pecahan, perkalian dua bilangan bulat atau perkalian dua bilangan pecahan, pembagian dua bialangan bulat atau pembagian dua bilangan pecahan, mencari sisa pembagian bilangan bulat ( modulo ), penambahan nilai variabel dengan satu ( increment ), dan pengurangan nilai variabel dengan satu ( decrement ). Operator aritmatika yang disediakan oleh bahasa C disajikan pada tabel 5.1.
Tabel 5.1 Operator Aritmatika dalam Bahasa C:
Catatan:
Operator
+
- * /
%
++
--
Arti
penjumlahan pengurangan perkalian
pembagian modulo
increment decrement
Tipe data
(bilangan bulat atau bilangan pecahan) (bilangan bulat atau bilangan pecahan) (bilangan bulat atau bilangan pecahan) (bilangan bulat atau bilangan pecahan) (bilangan bulat) (bilangan bulat) (bilangan bulat)
-
untuk operator ++ dan -- adalah salah satu contoh operator yang hanya memerlukan satu operan ( unary operator ). Operator ++ dan -- akan menyatakan operasi yang berbeda jika operator diletakkan sebelum atau sesudah operan. Contoh:
Operasi
B++ dan ++B. Pada B++ variabel B akan diproses terlebih dahulu baru kemudian variabel B
dijumlahkan dengan satu. Pada ++B variabel B akan dijumlahkan dengan satu terlebih dahulu baru variabel B diproses selanjutnya (misalnya memberikan nilai B ke variabel lain).
Kedua program di bawah ini akan memberikan penjelasan tentang perbedaan hasil yang akan didapatkan jika peletakan operator ++ sebelum dan sesudah operan.
37
-----------------------------------------------------Page 2-----------------------------------------------------
Listing program 5.1 Operator Increment setelah Operan
/* Program Operator increment setelah operan */
#include <stdio.h>
main() {
int B=5, A;
A= B++;
//variabel B diberi nilai awal = 5
/* nilai B diberikan terlebih dahulu ke A,
sehingga A bernilai 5, lalu B ditambahkan dengan 1,
nilai B sekarang sama dengan 6 */
printf("A = %d\n", A); printf("B = %d", B); return 0;
}
Listing program 5.2 Operator Increment sebelum Operan
#include <stdio.h>
main() {
A = 5 B = 6
int B=5, A;
A= ++B;
//variabel B diberi nilai awal = 5
/* nilai B dijumlahkan terlebih dahulu dengan 1, sehingga B bernilai 6, lalu diberikan ke A sehingga A sekarang bernilai 6 */
}
printf("A = %d\n", A); printf("B = %d", B); return 0;
A = 6 B = 6
-
Operator % adalah operator untuk operasi modulo, yaitu mencari sisa pembagian. Misalkan x = 9 % 2, maka nilai x yang didapat adalah 1 ( 9 dibagi 2 sama dengan 4 sisa 1).
Listing program 5.3 Program Operator %
#include <stdio.h>
main() {
int x, y; x= 9 % 2;
y= 102 % 7;
printf("x = %d\n", x); printf("y = %d", y);
x = 1 y = 4
}
5.3 Operator Relasi
Operator relasi atau operator hubungan adalah operator yang digunakan untuk membandingkan dua nilai sejenis. Kedua nilai tersebut dapat berupa komstanta ataupun variabel. Jika hasil perbandingan benar maka akan
38
-----------------------------------------------------Page 3-----------------------------------------------------
dikembalikan nilai numerik 1, jika salah akan dikembalikan nilai numerik 0. Jenis operator relasi yang dapat digunakan dalam bahasa C disajikan pada tabel 5.2.
Tabel 5.2 Operator Relasi dalam Bahasa C
Operator
<
<=
>
>= ==
!=
Arti
lebih kecil dari
lebih kecil atau sama dengan lebih besar dari
lebih besar atau sama dengan sama dengan
tidak sama dengan
Contoh
5<3 5<=5 4>4
4>=4
(3+2) ==(4+1)
(5 + 2) != (5 – 2)
Nilai
0 1 0 1 1 1
Operator relasi banyak digunakan untuk penyeleksian kondisi dengan statemen if , do-while dan while-do .
Listing program 5.4 Operator Relasi
#include <stdio.h>
main() {
int a=5, b=3;
printf("%d", a printf("\n%d", printf("\n%d", printf("\n%d", printf("\n%d", printf("\n%d",
> b);
a >= b+2);
a-2 == 2-b); a/2 <= b-1); b*2 < b/2); a*b != b*a);
// // // // // //
5 > 3
5 >= 3+2
3-2 == 2-3 5/2 <= 3-1 3*2 < 3/2
5*3 != 3*5
1 1 0 1 0 0
}
5.4 Operator Logika
Operator logika adalah operator yang digunakan untuk membandingkan dua buah nilai logika. Nilai logika adalah nilai benar atau salah. Jika sebelumnya pada operator relasi yang dibandingkan adalah nilai dari data apakah benar (1) ataukah salah (0), maka pada operator logika bisa dikatakan yang dibandingkan adalah logika hasil dari operator relasi. Operator-operator logika yang disediakan pada bahasa C disajikan pada tabel 5.3, dan tabel 5.4 akan menyajikan tabel hasil perbandingan logika.
Tabel 5.3 Operator Logika dalam Bahasa C
Operator
!
&&
Fungsi
NOT AND
Contoh ! (5 > 4)
(3 >= 3) && (2 != (4/2))
Hasil
0 (salah) 0 (salah)
Penjelasan
Fungsi NOT digunakan untuk membalik hasil logika. Fungsi AND akan memberikan nilai benar (1) jika kedua
nilai logika yang dibandingkan bernilai benar (1).
||
OR
(3 >= 3) || (2 != (4/2))
1(benar)
Fungsi OR akan memberikan nilai benar (1) jika salah
satu nilai logika yang dibandingkan bernilai benar (1).
39
-----------------------------------------------------Page 4-----------------------------------------------------
Tabel 5.4 Operator Logika dalam Bahasa C
A
B
!B
A && B
A || B
1
1
0
1
1
Catatan:
1 0 0
0 1 0
1 0 1
0 0 0
1 1 0
1 0
True / benar False/ salah
Listing program 5.5 Program Operator Logika
#include <stdio.h>
main()
{
printf("%d", ! (5 > 4));
printf("\n%d", (3 >= 3) && (2 != (4/2))); printf("\n%d",(3 >= 3) || (2 != (4/2)));
0 0 1
}
5.5 Operator Bitwise
Operator bitwise digunakan untuk memanipulasi bit-bit dari nilai data yang ada di memori. Operator bitwise
dan artinya disajikan pada tabel 5.5.
Tabel 5.5 Operator Logika dalam Bahasa C
Operator
&
|
^ ~
>> <<
Fungsi
AND OR
XOR
Complement 1 Shift right Shift left
Contoh
A&B A|B A^B ~A
A >> 2 B << 1
Penjelasan
AND bitwise dari A dan B OR bitwise dari A dan B XOR bitwise dari A dan B
Mengubah bit 0 menjadi 1, dan sebaliknya
Bit-bit dari A digeser ke kanan sebanyak 2 posisi bit Bit-bit dari B digeser ke kiri sebanyak 1 posisi bit
Catatan : untuk XOR akan menghasilkan nilai 1 jika nilai-nilai yang dibandingkan berbeda ( contoh 1 XOR 0 akan
bernilai 1, sedangkan 1 XOR 1 akan bernilai 0).
Listing program 5.6 Program Operator Bitwise
#include <stdio.h>
main() {
int a= 5, b=7;
/*konversi desimal ke bentuk biner (bit) 5 --> 101 , 7--> 111 */
printf("%d printf("%d printf("%d printf("%d
& % d = %d\n", a, b, a&b); | % d = %d\n", a, b, a|b); ^ % d = %d\n", a, b, a^b); >> 2 = %d\n", a, a>>2);
// // // /*
bit 101 & bit 111 bit 101 | bit 111 bit 101 ^ bit 111
bit 101 digeser ke kanan
5 5 5 5
& 7 = 5 | 7 = 7 ^ 7 = 2
>> 2 = 1
printf("%d << 1 = %d", b, b<<1);
2 posisi bit */
/* bit 111 digeser ke kiri
5
<< 1 = 14
1 posisi bit */
}
40
-----------------------------------------------------Page 5-----------------------------------------------------
Penjelasan:
a=5 b=7
00000101 00000111
a=5 b=7
00000101 00000111
a=5 b=7
00000101 00000111
a=5
00000101
--------------------------
--------------------------
--------------------------
a>>2
00000001 = 1
a&b
00000101 = 5
a | b
00000111 = 7
a^b
00000010 = 2
b=7
b<<1
00000111
00001110 = 14
5.6 Operator Koma
Operator koma digunakan untuk memisahkan sederetan variabel dalam sebuah deklarasi, memisahkan argument fungsi, menyatukan dua ekspresi menjadi sebuah pernyataan, dan memungkinkan pemberian lebih dari satu ekspresi pada inisialisasi nilai awal. Contoh pemakaian operator koma :
float x,y,z;
// operator koma digunakan untuk memisahkan 3 variabel dalam sebuah deklarasi.
int a= 5, b=7; // operator koma digunakan untuk memisahkan pemeberian nilai awal dari dua variabel.
x = y, y = z, z = x; a = (b=3, b+2);
// operator koma digunakan untuk menyatukan tiga ekspresi menjadi satu pernyataan. /* operator koma digunakan untuk menggabungkan beberapa ungkapan dengan proses yang berurutan dari ungkapan sebelah kiri koma kemudian ke ungkapan disebelah kanan koma */
Pernyataaan a = (b=3, b+2);
pertama nilai 3 akan diberikan kepada b , lalu variabel b yang bernilai 3
dijumlahkan dengan 2 dan diberikan kepada a , sehingga nilai akhir dari kedua variabel tersebut adalah a bernilai 5 dan b bernilai 3.
5.7 Operator Cast
Operator cast digunakan untuk memaksa sebuah nilai berubah tipe data secara ekplisit dalam satu pernyataan. Operator cast termasuk dari operator unary karena hanya membutuhkan satu operan untuk dioperasikan. Variabel yang dirubah dengan menggunakan operator cast hanya akan berubah pada statemen tersebut. Operator cast sangat diperlukan untuk mengoperasikan variabel-variabel yang bertipe data berbeda, karena dalam C jika menggunakan pengkonversian tipe data secara otomatis dapat menimbulkan hal-hal yang tidak diinginkan, misalnya pemotongan nilai. Symbol yang digunakan untuk operator cast adalah tanda kurung ( ) Contoh penggunaan operator cast :
Hasil = (int) 3.2 + 10
Nilai = int (4.56) + 11
nilai Hasil = 13
3.2 mendapatkan pemaksaan tipe data menjadi integer sehingga nilai 3.2 akan menjadi 3
nilai Nilai = 15
Tanda kurung dapat dituliskan pada tipe data ataupun pada nilai/variabel.
41
-----------------------------------------------------Page 6-----------------------------------------------------
Listing program 5.6 Program Operator Cast
#include <stdio.h>
main() {
int a=5, b=2; float x=2.5;
float hasil = int(3.2) + 10; printf("%f", hasil);
float nilai = 3.2 / a; printf("\n%f", nilai);
hasil= a * x;
//hasil = 3 + 10
13.000000
0.640000
printf("\n%d", (int) hasil);
hasil= a * x;
printf("\n%f", hasil);
/*hasil di rubah menjadi
bertipe integer */
//hasil tetap bertipe float
12
12.500000
}
5.8 Operator Penugasan (assignment)
Operator penugasan adalah operator yang berfungsi memberikan nilai kepada pengenal(identifier). Operator penugasan menggunakan symbol (=). Operan di sebelah kiri operator harus berupa variabel atau konstanta. Operan di sebelah kanan harus berupa ekspresi. Contoh penggunaan operator penugasan ‘=’ :
Luas = alas * tinggi / 2;
A = B = 12;
// nilai variabel Luas adalah nilai alas dikali dengan nilai tinggi dibagi 2 // nilai variabel A akan sama dengan nilai variabel B akan sama dengan 12
Selain operator ‘=’, bahasa C juga menyediakan operator penugasan yang lain, tabel 5.6 menyajikan
operator penugasan tersebut.
Tabel 5.6 Operator Logika dalam Bahasa C
Operator
+=
-= *= /=
%=
<<= >>=
&=
|=
^=
Contoh
x += y x -= y x *= y x /= y
x %= y x <<= y x >>= y x &= y x |= y x ^= y
Ekuivalen dengan
x=x+y x=x-y x=x*y x=x/y
x=x%y x = x << y x = x >> y x = x &y x=x|y x=x^y
42
-----------------------------------------------------Page 7-----------------------------------------------------
5.9
Operator Bersyarat
Operator bersyarat atau dikenal juga sebagai ekspresi bersyarat ( conditional expression ) merupakan satu- satunya operator ternary (memerlukan 3 operan untuk operasinya). Ketiga operan yang diperlukan tersebut terdiri dari satu ekspresi yang akan diuji dan dua ekspresi pilihan. Bentuk umum dari operator bersyarat adalah sebagai berikut:
Kondisi ? ekspresi1: ekspresi2;
Operator bersyarat akan menghasilkan satu dari dua pilihan. Misalnya x = y? nilai1: nilai2; Pertama ekspresi x= y akan diperiksa apakah bernilai benar atau salah , jika bernilai benar maka ekspresi nilai1 akan dievaluasi dan nilainya akan diberikan kepada x , jika salah maka ekspresi nilai2 yang akan dievaluasi dan nilainya diberikan kepada x .
Listing program 5.7 Program Operator Bersyarat
#include <stdio.h>
main()
{ int min, max, n1=10, n2=5;
min = n1<n2? n1: n2;
printf("Nilai yang lebih kecil dari %d dan %d = %d", n1, n2,min);
max= n1>n2? n1: n2;
printf("\nNilai yang lebih besar dari %d dan %d = %d", n1, n2,max);
}
Nilai yang lebih kecil dari 10 dan 5 = 5
Nilai yang lebih besar dari 10 dan 5 = 10
5.10 Operator sizeof
Operator sizeof digunakan untuk mengetahui ukuran dari operannya dalam satuan byte. Operator size of
hanya memerlukan satu operan sehingga termasuk dalam operator unary.
Listing program 5.8 Program Operator sizeof
#include <stdio.h>
int main(void)
{
long big;
printf("\"big\" is %u bytes\n", sizeof(big)); printf("a short is %u bytes\n", sizeof(short));
"big" is 4 bytes
a short is 2 bytes
a double is 8 bytes
printf("a double is %u bytes\n", sizeof(double)); return 0;
}
43
-----------------------------------------------------Page 8-----------------------------------------------------
5.11 Derajat Operator
Derajat operator menunjukkan tingkat atau level operator, misalnya operator ( ) memiliki derajat yang lebih tinggi dibandingkan dengan operator *, sehingga operator ( ) akan dikerjakan terlebih dahulu sebelum operator *, contohnya ekspresi: y = ( 5 + 3 ) * 2 akan menghasilkan nilai y sama dengan 16 , bandingkan dengan ekspresi kedua berikut: y = 5 + (3 * 2) akan menghasilkan nilai y sama dengan 11 . Meskipun elemen yang digunakan sama tetapi ada perbedaan peletakan tanda “( )” maka akan menyebabkan hasil yang berbeda, ini dikarenakan tingkatan atau derajat dari masing-masing operator berbeda.
Selain derajat operator jika dilihat ekspresi y = ( 5 + 3 ) * 2 maka kita dapat evaluasi arah proses operasi (asosiativitas), pertama akan dioperasikan nilai 5 dijumlahkan dengan 3, kemudian hasil penjumlahan tersebut dikalikan dengan 2 baru kemudian nilai yang didapat tersebut diberikan ke y , ini berarti operator ‘+’ dan ‘*’ memiliki arah operasi dari kiri ke kanan, sedangkan operator ‘=’ memiliki arah operasi dari kanan ke kiri.
Untuk mengetahui derajat atau tingkatan dari masing-masing operator dan arah proses operasi dapat
dilihat dari tabel 5.7
Tabel 5.7 Predensi dan Asosiativitas Operator
Kategori
Kurung, indeks array, dan elemen struktur data Operator unary
Operator aritmatika Operator aritmatika
Operator bitwise pergeseran bit Operator relasi Operator relasi
Operator bitwise AND Operator bitwise XOR Operator bitwise OR Operator kondisi AND Operator kondisi OR Operator bersyarat Operator penugasan Operator koma
Operator
() [] -> .
! ~ ++ -- - + (cast) * & sizeof */% +-
<< >>
< <= >= > == != & ^ |
&& ||
?:
= += -= *= /= %= ,
Arah Proses
(Asosiativitas) Kiri ke kanan Kanan ke kiri Kiri ke kanan Kiri ke kanan Kiri ke kanan Kiri ke kanan Kiri ke kanan Kiri ke kanan Kiri ke kanan Kiri ke kanan Kiri ke kanan Kiri ke kanan Kiri ke kanan Kanan ke kiri Kiri ke kanan
Derajat
(Predensi)
Tertinggi
Terendah
5.12 Ekspresi
Ekspresi adalah segala sesuatu yang bila dievaluasi akan menghasilkan suatu nilai. 1. Sebuah konstanta adalah sebuah ekspresi. 2. Sebuah variabel adalah sebuah ekspresi.
3. Sebuah ekspresi yang dioperasikan dengan operasi lain adalah sebuah ekspresi. 4. pemanggilan terhadap sebuah function adalah sebuah ekspresi.
44
-----------------------------------------------------Page 9-----------------------------------------------------
Latihan:
1. Tulislah empat pernyataan/ekspresi dalam bahasa C yang berbeda untuk menyatakan variabel x yang bertipe
integer ditambah 1.
2. Tulislah sebuah ekspresi dalam bahasa C untuk masing-masing pernyataan di bawah ini: a. Berikan nilai penjumlahan x dan y ke z dan nilai x bertambah 1 ( increment ) setelah operasi. b. Mengalikan variabel kali dengan 2 menggunakan operator *=
c.
Mengalikan variabel kali dengan 2 menggunakan operator * dan =
d. Decrement (mengurangi dengan 1) variabel z , lalu variabel z mengurangi variabel total dan nilai akhir
diberikan ke variabel total .
e. Jumlahkan variabel x dengan variabel total lalu berikan nilainya kepada variabel total, kemudian variabel x
berkurang ( decrement ) 1.
3. Berdasarkan derajat masing-masing operator, tentukanlah apakah ekspresi-ekspresi di bawah ini
menghasilkan nilai benar atau salah:
a.
5 < 4 * 2 || int (43 / 2) > 21 || 7 * 8 == 6 + 5 * 10
b. ! (5 > 4 * 2 && int (43 / 2) > 21 && 7 * 8 == 6 + 5 * 10)
c.
23 - 5 + 4 * 3 >= 40 - 5 * 2 && 23 * 2 == 93 / 3
Tugas Mandiri:
Berdasarkan program di bawah ini berapakah nilai akhir dari variabel-variabel yang terdapat dalam program?
#include <stdio.h>
main() {
int a,b,c,d,e;
float v, w, x, y, z ;
a= 5, b = 4, v = 1.5, w= 5.2;
a c d b d e x v w y z
+= b/(int)v;
= a > b*2 && a != w; = ++c;
= a + c / d; *= b * v;
= d /(int)w; = a % e;
*= d / x; += e * 2;
= v > w ? a + 2: b *2; = sizeof(a)+ sizeof(x);
}
printf("a= printf("b= printf("c= printf("d= printf("e= printf("v= printf("w= printf("x= printf("y= printf("z=
%d\n",a); %d\n",b); %d\n",c); %d\n",d); %d\n",e);
%.3f\n",v); %.3f\n",w); %.3f\n",x); %.3f\n",y); %.3f\n",z);
45
-----------------------------------------------------Page 10-----------------------------------------------------
Referensi:
Cheltenham Computer Training, C Programming , www.cctglobal.com , United Kingdom, 1997
Deitel & Deitel, C How to Program 3rd Edition , Prentice Hall, New Jersey, 2001
Jogiyanto, Konsep Dasar Pemrograman Bahasa C , Andi Offset, Yogyakarta, 1993
Thompson Susabda Ngoen, Pengantar Algoritma dengan Bahasa C , Salemba Teknika, Jakarta, 2004
☺☺☺
46
-----------------------------------------------------Page 11-----------------------------------------------------
5
Tujuan Instruksi Umum (TIU):
Mampu mengetahui operator yang disediakan oleh bahasa C, sehingga mampu menyelesaikan permasalahan dengan melakukan operasi yang tepat dan menggunkan operator yang sesuai.
Tujuan Instruksi Khusus (TIK):
• Mengetahui jenis operasi dan operator yang digunakan secara umum dalam pemrograman. • Mengetahui operator-operator yang disediakan oleh Bahasa C. • Mampu menggunakan operator yang tepat untuk berbagai operasi
• Mengetahui derajat operator sehingga mampu menganalisa hasil yang didapat dari sebuah ekspresi • Mampu menyelesaikan permasalahan yang lebih luas dengan menggunakan operator yang telah
disediakan oleh bahasa C
Pembahasan Materi:
• Jenis operator
• Operator aritmatika • Operator penugasan • Operator relasi • Operator logika
• Operator koma • Operator bitwise • Operator cast
• Operator sizeof • Derajat operator • Ekspresi
5.1 Operasi dan Operator
Operasi merupakan pengolahan yang dapat dilakukan dilakukan terhadap sebuah atau beberapa data, dalam bahasa C operasi hanya dapat dilakukan terhadap data sejenis (tipe data yang sama) jika operasi diberlakukan terhadap data tidak sejenis umumnya akan menghasilkan keluaran yang tidak sesuai. Simbol atau tanda yang digunakan untuk suatu operasi tertentu dinamakan operator . Sedangkan data (variabel atau konstanta) yang dioperasikan disebut operan .
Berdasarkan jumlah operan maka operator dibagi atas:
Unary operator; operasi yang dilakukan hanya melibatkan satu operan. Binary operator, operasi yang dilakukan melibatkan dua operan. Ternary operator, operasi yang dilakukan melibatkan tiga operan.
36
-----------------------------------------------------Page 1-----------------------------------------------------
Berdasarkan jenis operasinya maka operator dalam bahasa C terbagi atas:
Operator aritmatika Operator relasi Operator logika
Operator pengolahan bit ( bitwise )
Selain operator di atas bahasa C juga menyediakan operator khusus lainnya, yaitu:
Operator koma Operator cast
Operator penugasan Operator bersyarat Operator sizeof
5.2 Operator Aritmatika
Operator aritmatika adalah operator yang digunakan untuk pengolahan aritmatika seperti penjumlahan dua bilangan bulat atau penjumlahan dua bilangan pecahan, pengurangan dua bilangan bulat atau pengurangan dua bilangan pecahan, perkalian dua bilangan bulat atau perkalian dua bilangan pecahan, pembagian dua bialangan bulat atau pembagian dua bilangan pecahan, mencari sisa pembagian bilangan bulat ( modulo ), penambahan nilai variabel dengan satu ( increment ), dan pengurangan nilai variabel dengan satu ( decrement ). Operator aritmatika yang disediakan oleh bahasa C disajikan pada tabel 5.1.
Tabel 5.1 Operator Aritmatika dalam Bahasa C:
Catatan:
Operator
+
- * /
%
++
--
Arti
penjumlahan pengurangan perkalian
pembagian modulo
increment decrement
Tipe data
(bilangan bulat atau bilangan pecahan) (bilangan bulat atau bilangan pecahan) (bilangan bulat atau bilangan pecahan) (bilangan bulat atau bilangan pecahan) (bilangan bulat) (bilangan bulat) (bilangan bulat)
-
untuk operator ++ dan -- adalah salah satu contoh operator yang hanya memerlukan satu operan ( unary operator ). Operator ++ dan -- akan menyatakan operasi yang berbeda jika operator diletakkan sebelum atau sesudah operan. Contoh:
Operasi
B++ dan ++B. Pada B++ variabel B akan diproses terlebih dahulu baru kemudian variabel B
dijumlahkan dengan satu. Pada ++B variabel B akan dijumlahkan dengan satu terlebih dahulu baru variabel B diproses selanjutnya (misalnya memberikan nilai B ke variabel lain).
Kedua program di bawah ini akan memberikan penjelasan tentang perbedaan hasil yang akan didapatkan jika peletakan operator ++ sebelum dan sesudah operan.
37
-----------------------------------------------------Page 2-----------------------------------------------------
Listing program 5.1 Operator Increment setelah Operan
/* Program Operator increment setelah operan */
#include <stdio.h>
main() {
int B=5, A;
A= B++;
//variabel B diberi nilai awal = 5
/* nilai B diberikan terlebih dahulu ke A,
sehingga A bernilai 5, lalu B ditambahkan dengan 1,
nilai B sekarang sama dengan 6 */
printf("A = %d\n", A); printf("B = %d", B); return 0;
}
Listing program 5.2 Operator Increment sebelum Operan
#include <stdio.h>
main() {
A = 5 B = 6
int B=5, A;
A= ++B;
//variabel B diberi nilai awal = 5
/* nilai B dijumlahkan terlebih dahulu dengan 1, sehingga B bernilai 6, lalu diberikan ke A sehingga A sekarang bernilai 6 */
}
printf("A = %d\n", A); printf("B = %d", B); return 0;
A = 6 B = 6
-
Operator % adalah operator untuk operasi modulo, yaitu mencari sisa pembagian. Misalkan x = 9 % 2, maka nilai x yang didapat adalah 1 ( 9 dibagi 2 sama dengan 4 sisa 1).
Listing program 5.3 Program Operator %
#include <stdio.h>
main() {
int x, y; x= 9 % 2;
y= 102 % 7;
printf("x = %d\n", x); printf("y = %d", y);
x = 1 y = 4
}
5.3 Operator Relasi
Operator relasi atau operator hubungan adalah operator yang digunakan untuk membandingkan dua nilai sejenis. Kedua nilai tersebut dapat berupa komstanta ataupun variabel. Jika hasil perbandingan benar maka akan
38
-----------------------------------------------------Page 3-----------------------------------------------------
dikembalikan nilai numerik 1, jika salah akan dikembalikan nilai numerik 0. Jenis operator relasi yang dapat digunakan dalam bahasa C disajikan pada tabel 5.2.
Tabel 5.2 Operator Relasi dalam Bahasa C
Operator
<
<=
>
>= ==
!=
Arti
lebih kecil dari
lebih kecil atau sama dengan lebih besar dari
lebih besar atau sama dengan sama dengan
tidak sama dengan
Contoh
5<3 5<=5 4>4
4>=4
(3+2) ==(4+1)
(5 + 2) != (5 – 2)
Nilai
0 1 0 1 1 1
Operator relasi banyak digunakan untuk penyeleksian kondisi dengan statemen if , do-while dan while-do .
Listing program 5.4 Operator Relasi
#include <stdio.h>
main() {
int a=5, b=3;
printf("%d", a printf("\n%d", printf("\n%d", printf("\n%d", printf("\n%d", printf("\n%d",
> b);
a >= b+2);
a-2 == 2-b); a/2 <= b-1); b*2 < b/2); a*b != b*a);
// // // // // //
5 > 3
5 >= 3+2
3-2 == 2-3 5/2 <= 3-1 3*2 < 3/2
5*3 != 3*5
1 1 0 1 0 0
}
5.4 Operator Logika
Operator logika adalah operator yang digunakan untuk membandingkan dua buah nilai logika. Nilai logika adalah nilai benar atau salah. Jika sebelumnya pada operator relasi yang dibandingkan adalah nilai dari data apakah benar (1) ataukah salah (0), maka pada operator logika bisa dikatakan yang dibandingkan adalah logika hasil dari operator relasi. Operator-operator logika yang disediakan pada bahasa C disajikan pada tabel 5.3, dan tabel 5.4 akan menyajikan tabel hasil perbandingan logika.
Tabel 5.3 Operator Logika dalam Bahasa C
Operator
!
&&
Fungsi
NOT AND
Contoh ! (5 > 4)
(3 >= 3) && (2 != (4/2))
Hasil
0 (salah) 0 (salah)
Penjelasan
Fungsi NOT digunakan untuk membalik hasil logika. Fungsi AND akan memberikan nilai benar (1) jika kedua
nilai logika yang dibandingkan bernilai benar (1).
||
OR
(3 >= 3) || (2 != (4/2))
1(benar)
Fungsi OR akan memberikan nilai benar (1) jika salah
satu nilai logika yang dibandingkan bernilai benar (1).
39
-----------------------------------------------------Page 4-----------------------------------------------------
Tabel 5.4 Operator Logika dalam Bahasa C
A
B
!B
A && B
A || B
1
1
0
1
1
Catatan:
1 0 0
0 1 0
1 0 1
0 0 0
1 1 0
1 0
True / benar False/ salah
Listing program 5.5 Program Operator Logika
#include <stdio.h>
main()
{
printf("%d", ! (5 > 4));
printf("\n%d", (3 >= 3) && (2 != (4/2))); printf("\n%d",(3 >= 3) || (2 != (4/2)));
0 0 1
}
5.5 Operator Bitwise
Operator bitwise digunakan untuk memanipulasi bit-bit dari nilai data yang ada di memori. Operator bitwise
dan artinya disajikan pada tabel 5.5.
Tabel 5.5 Operator Logika dalam Bahasa C
Operator
&
|
^ ~
>> <<
Fungsi
AND OR
XOR
Complement 1 Shift right Shift left
Contoh
A&B A|B A^B ~A
A >> 2 B << 1
Penjelasan
AND bitwise dari A dan B OR bitwise dari A dan B XOR bitwise dari A dan B
Mengubah bit 0 menjadi 1, dan sebaliknya
Bit-bit dari A digeser ke kanan sebanyak 2 posisi bit Bit-bit dari B digeser ke kiri sebanyak 1 posisi bit
Catatan : untuk XOR akan menghasilkan nilai 1 jika nilai-nilai yang dibandingkan berbeda ( contoh 1 XOR 0 akan
bernilai 1, sedangkan 1 XOR 1 akan bernilai 0).
Listing program 5.6 Program Operator Bitwise
#include <stdio.h>
main() {
int a= 5, b=7;
/*konversi desimal ke bentuk biner (bit) 5 --> 101 , 7--> 111 */
printf("%d printf("%d printf("%d printf("%d
& % d = %d\n", a, b, a&b); | % d = %d\n", a, b, a|b); ^ % d = %d\n", a, b, a^b); >> 2 = %d\n", a, a>>2);
// // // /*
bit 101 & bit 111 bit 101 | bit 111 bit 101 ^ bit 111
bit 101 digeser ke kanan
5 5 5 5
& 7 = 5 | 7 = 7 ^ 7 = 2
>> 2 = 1
printf("%d << 1 = %d", b, b<<1);
2 posisi bit */
/* bit 111 digeser ke kiri
5
<< 1 = 14
1 posisi bit */
}
40
-----------------------------------------------------Page 5-----------------------------------------------------
Penjelasan:
a=5 b=7
00000101 00000111
a=5 b=7
00000101 00000111
a=5 b=7
00000101 00000111
a=5
00000101
--------------------------
--------------------------
--------------------------
a>>2
00000001 = 1
a&b
00000101 = 5
a | b
00000111 = 7
a^b
00000010 = 2
b=7
b<<1
00000111
00001110 = 14
5.6 Operator Koma
Operator koma digunakan untuk memisahkan sederetan variabel dalam sebuah deklarasi, memisahkan argument fungsi, menyatukan dua ekspresi menjadi sebuah pernyataan, dan memungkinkan pemberian lebih dari satu ekspresi pada inisialisasi nilai awal. Contoh pemakaian operator koma :
float x,y,z;
// operator koma digunakan untuk memisahkan 3 variabel dalam sebuah deklarasi.
int a= 5, b=7; // operator koma digunakan untuk memisahkan pemeberian nilai awal dari dua variabel.
x = y, y = z, z = x; a = (b=3, b+2);
// operator koma digunakan untuk menyatukan tiga ekspresi menjadi satu pernyataan. /* operator koma digunakan untuk menggabungkan beberapa ungkapan dengan proses yang berurutan dari ungkapan sebelah kiri koma kemudian ke ungkapan disebelah kanan koma */
Pernyataaan a = (b=3, b+2);
pertama nilai 3 akan diberikan kepada b , lalu variabel b yang bernilai 3
dijumlahkan dengan 2 dan diberikan kepada a , sehingga nilai akhir dari kedua variabel tersebut adalah a bernilai 5 dan b bernilai 3.
5.7 Operator Cast
Operator cast digunakan untuk memaksa sebuah nilai berubah tipe data secara ekplisit dalam satu pernyataan. Operator cast termasuk dari operator unary karena hanya membutuhkan satu operan untuk dioperasikan. Variabel yang dirubah dengan menggunakan operator cast hanya akan berubah pada statemen tersebut. Operator cast sangat diperlukan untuk mengoperasikan variabel-variabel yang bertipe data berbeda, karena dalam C jika menggunakan pengkonversian tipe data secara otomatis dapat menimbulkan hal-hal yang tidak diinginkan, misalnya pemotongan nilai. Symbol yang digunakan untuk operator cast adalah tanda kurung ( ) Contoh penggunaan operator cast :
Hasil = (int) 3.2 + 10
Nilai = int (4.56) + 11
nilai Hasil = 13
3.2 mendapatkan pemaksaan tipe data menjadi integer sehingga nilai 3.2 akan menjadi 3
nilai Nilai = 15
Tanda kurung dapat dituliskan pada tipe data ataupun pada nilai/variabel.
41
-----------------------------------------------------Page 6-----------------------------------------------------
Listing program 5.6 Program Operator Cast
#include <stdio.h>
main() {
int a=5, b=2; float x=2.5;
float hasil = int(3.2) + 10; printf("%f", hasil);
float nilai = 3.2 / a; printf("\n%f", nilai);
hasil= a * x;
//hasil = 3 + 10
13.000000
0.640000
printf("\n%d", (int) hasil);
hasil= a * x;
printf("\n%f", hasil);
/*hasil di rubah menjadi
bertipe integer */
//hasil tetap bertipe float
12
12.500000
}
5.8 Operator Penugasan (assignment)
Operator penugasan adalah operator yang berfungsi memberikan nilai kepada pengenal(identifier). Operator penugasan menggunakan symbol (=). Operan di sebelah kiri operator harus berupa variabel atau konstanta. Operan di sebelah kanan harus berupa ekspresi. Contoh penggunaan operator penugasan ‘=’ :
Luas = alas * tinggi / 2;
A = B = 12;
// nilai variabel Luas adalah nilai alas dikali dengan nilai tinggi dibagi 2 // nilai variabel A akan sama dengan nilai variabel B akan sama dengan 12
Selain operator ‘=’, bahasa C juga menyediakan operator penugasan yang lain, tabel 5.6 menyajikan
operator penugasan tersebut.
Tabel 5.6 Operator Logika dalam Bahasa C
Operator
+=
-= *= /=
%=
<<= >>=
&=
|=
^=
Contoh
x += y x -= y x *= y x /= y
x %= y x <<= y x >>= y x &= y x |= y x ^= y
Ekuivalen dengan
x=x+y x=x-y x=x*y x=x/y
x=x%y x = x << y x = x >> y x = x &y x=x|y x=x^y
42
-----------------------------------------------------Page 7-----------------------------------------------------
5.9
Operator Bersyarat
Operator bersyarat atau dikenal juga sebagai ekspresi bersyarat ( conditional expression ) merupakan satu- satunya operator ternary (memerlukan 3 operan untuk operasinya). Ketiga operan yang diperlukan tersebut terdiri dari satu ekspresi yang akan diuji dan dua ekspresi pilihan. Bentuk umum dari operator bersyarat adalah sebagai berikut:
Kondisi ? ekspresi1: ekspresi2;
Operator bersyarat akan menghasilkan satu dari dua pilihan. Misalnya x = y? nilai1: nilai2; Pertama ekspresi x= y akan diperiksa apakah bernilai benar atau salah , jika bernilai benar maka ekspresi nilai1 akan dievaluasi dan nilainya akan diberikan kepada x , jika salah maka ekspresi nilai2 yang akan dievaluasi dan nilainya diberikan kepada x .
Listing program 5.7 Program Operator Bersyarat
#include <stdio.h>
main()
{ int min, max, n1=10, n2=5;
min = n1<n2? n1: n2;
printf("Nilai yang lebih kecil dari %d dan %d = %d", n1, n2,min);
max= n1>n2? n1: n2;
printf("\nNilai yang lebih besar dari %d dan %d = %d", n1, n2,max);
}
Nilai yang lebih kecil dari 10 dan 5 = 5
Nilai yang lebih besar dari 10 dan 5 = 10
5.10 Operator sizeof
Operator sizeof digunakan untuk mengetahui ukuran dari operannya dalam satuan byte. Operator size of
hanya memerlukan satu operan sehingga termasuk dalam operator unary.
Listing program 5.8 Program Operator sizeof
#include <stdio.h>
int main(void)
{
long big;
printf("\"big\" is %u bytes\n", sizeof(big)); printf("a short is %u bytes\n", sizeof(short));
"big" is 4 bytes
a short is 2 bytes
a double is 8 bytes
printf("a double is %u bytes\n", sizeof(double)); return 0;
}
43
-----------------------------------------------------Page 8-----------------------------------------------------
5.11 Derajat Operator
Derajat operator menunjukkan tingkat atau level operator, misalnya operator ( ) memiliki derajat yang lebih tinggi dibandingkan dengan operator *, sehingga operator ( ) akan dikerjakan terlebih dahulu sebelum operator *, contohnya ekspresi: y = ( 5 + 3 ) * 2 akan menghasilkan nilai y sama dengan 16 , bandingkan dengan ekspresi kedua berikut: y = 5 + (3 * 2) akan menghasilkan nilai y sama dengan 11 . Meskipun elemen yang digunakan sama tetapi ada perbedaan peletakan tanda “( )” maka akan menyebabkan hasil yang berbeda, ini dikarenakan tingkatan atau derajat dari masing-masing operator berbeda.
Selain derajat operator jika dilihat ekspresi y = ( 5 + 3 ) * 2 maka kita dapat evaluasi arah proses operasi (asosiativitas), pertama akan dioperasikan nilai 5 dijumlahkan dengan 3, kemudian hasil penjumlahan tersebut dikalikan dengan 2 baru kemudian nilai yang didapat tersebut diberikan ke y , ini berarti operator ‘+’ dan ‘*’ memiliki arah operasi dari kiri ke kanan, sedangkan operator ‘=’ memiliki arah operasi dari kanan ke kiri.
Untuk mengetahui derajat atau tingkatan dari masing-masing operator dan arah proses operasi dapat
dilihat dari tabel 5.7
Tabel 5.7 Predensi dan Asosiativitas Operator
Kategori
Kurung, indeks array, dan elemen struktur data Operator unary
Operator aritmatika Operator aritmatika
Operator bitwise pergeseran bit Operator relasi Operator relasi
Operator bitwise AND Operator bitwise XOR Operator bitwise OR Operator kondisi AND Operator kondisi OR Operator bersyarat Operator penugasan Operator koma
Operator
() [] -> .
! ~ ++ -- - + (cast) * & sizeof */% +-
<< >>
< <= >= > == != & ^ |
&& ||
?:
= += -= *= /= %= ,
Arah Proses
(Asosiativitas) Kiri ke kanan Kanan ke kiri Kiri ke kanan Kiri ke kanan Kiri ke kanan Kiri ke kanan Kiri ke kanan Kiri ke kanan Kiri ke kanan Kiri ke kanan Kiri ke kanan Kiri ke kanan Kiri ke kanan Kanan ke kiri Kiri ke kanan
Derajat
(Predensi)
Tertinggi
Terendah
5.12 Ekspresi
Ekspresi adalah segala sesuatu yang bila dievaluasi akan menghasilkan suatu nilai. 1. Sebuah konstanta adalah sebuah ekspresi. 2. Sebuah variabel adalah sebuah ekspresi.
3. Sebuah ekspresi yang dioperasikan dengan operasi lain adalah sebuah ekspresi. 4. pemanggilan terhadap sebuah function adalah sebuah ekspresi.
44
-----------------------------------------------------Page 9-----------------------------------------------------
Latihan:
1. Tulislah empat pernyataan/ekspresi dalam bahasa C yang berbeda untuk menyatakan variabel x yang bertipe
integer ditambah 1.
2. Tulislah sebuah ekspresi dalam bahasa C untuk masing-masing pernyataan di bawah ini: a. Berikan nilai penjumlahan x dan y ke z dan nilai x bertambah 1 ( increment ) setelah operasi. b. Mengalikan variabel kali dengan 2 menggunakan operator *=
c.
Mengalikan variabel kali dengan 2 menggunakan operator * dan =
d. Decrement (mengurangi dengan 1) variabel z , lalu variabel z mengurangi variabel total dan nilai akhir
diberikan ke variabel total .
e. Jumlahkan variabel x dengan variabel total lalu berikan nilainya kepada variabel total, kemudian variabel x
berkurang ( decrement ) 1.
3. Berdasarkan derajat masing-masing operator, tentukanlah apakah ekspresi-ekspresi di bawah ini
menghasilkan nilai benar atau salah:
a.
5 < 4 * 2 || int (43 / 2) > 21 || 7 * 8 == 6 + 5 * 10
b. ! (5 > 4 * 2 && int (43 / 2) > 21 && 7 * 8 == 6 + 5 * 10)
c.
23 - 5 + 4 * 3 >= 40 - 5 * 2 && 23 * 2 == 93 / 3
Tugas Mandiri:
Berdasarkan program di bawah ini berapakah nilai akhir dari variabel-variabel yang terdapat dalam program?
#include <stdio.h>
main() {
int a,b,c,d,e;
float v, w, x, y, z ;
a= 5, b = 4, v = 1.5, w= 5.2;
a c d b d e x v w y z
+= b/(int)v;
= a > b*2 && a != w; = ++c;
= a + c / d; *= b * v;
= d /(int)w; = a % e;
*= d / x; += e * 2;
= v > w ? a + 2: b *2; = sizeof(a)+ sizeof(x);
}
printf("a= printf("b= printf("c= printf("d= printf("e= printf("v= printf("w= printf("x= printf("y= printf("z=
%d\n",a); %d\n",b); %d\n",c); %d\n",d); %d\n",e);
%.3f\n",v); %.3f\n",w); %.3f\n",x); %.3f\n",y); %.3f\n",z);
45
-----------------------------------------------------Page 10-----------------------------------------------------
Referensi:
Cheltenham Computer Training, C Programming , www.cctglobal.com , United Kingdom, 1997
Deitel & Deitel, C How to Program 3rd Edition , Prentice Hall, New Jersey, 2001
Jogiyanto, Konsep Dasar Pemrograman Bahasa C , Andi Offset, Yogyakarta, 1993
Thompson Susabda Ngoen, Pengantar Algoritma dengan Bahasa C , Salemba Teknika, Jakarta, 2004
☺☺☺
46
-----------------------------------------------------Page 11-----------------------------------------------------
Bisa
ReplyDeleteMantaps gan, oya jika ada yang sekiranya mebutuhkan tambahan referensi, silakan mampir saja dimari gan, suguhan lengkap dengan contoh programmnya,
ReplyDeletehttp://gatewawan.blogspot.com/2014/07/mengenal-operator-dalam-cpp.html
Best Regard,
Teknocrat