Pertemuan Operand dan Operator Matapelajaran: TIK 2 /Algoritma dan Pemograman Tahun: 2011/2012 Versi: 1 1
Learning Outcomes Pada akhir pertemuan ini, diharapkan peserta didik akan mampu : Membuat statement / instruksi dengan berbagai operator yang ada pada bahasa C (C3) 2
Outline Materi Jenis-jenis Operator Operator Penugasan (assignment) Operator Logika Operator Aritmetika Operator Relasional Operator Bitwise 3
Operator dan Operand Operator adalah simbol yang mengolah nilai pada operand dan menghasilkan satu nilai baru. Contoh : C = A + B (= dan + adalah operator, sedangkan A, B dan C adalah operand) Operator dapat dibedakan menjadi tiga berdasarkan jumlah operand-nya, yaitu : Unary operator Binary operator Ternary operator Unary operator memerlukan satu operand, dan binary operator memerlukan dua operand, sedangkan Ternary operator memerlukan 3 operand. 4
Operator Berdasarkan jenis operasinya, operator dalam bahasa C dapat dikelompokkan : Operator Penugasan (assignment operator) Operator Logika Operator Aritmatika Operator Relasional Operator Bitwise Operator Pointer 5
Operator Penugasan (assignment) Termasuk Binary operator Digunakan untuk memberikan nilai kepada suatu Operand. Sintak sbb: Operand1 = Operand2; Operand di sebelah kiri (Operand1) harus memiliki address (L-Value) seperti variabel, sedangkan operand disebelah kanan (Operand2) bisa suatu konstanta, variabel lain, ekspresi atau fungsi. 6
Operator Penugasan Contoh x = 2;// konstanta x = y;// variabel lain x = 2 * y;// ekspresi x = sin (y);// fungsi Tipe hasil operasi disesuaikan dengan tipe operand sebelah kiri. int x = 7/2; /*nilai x sama dgn 3 */ float y = 3;/*nilai y sama dengan */ 7
Operator Aritmatika Digunakan untuk melakukan operasi matematis SimbolFungsiContoh +Penambahanx = y + 6; -Pengurangany = x – 5; *Perkaliany = y * 3; /Pembagianz = x/y; %ModuloA = 10 % 3; ++Incrementx++; --Decrementz--; ()Menaikan Priorityx=(2+3)*5 8
Operator Aritmatika Modulo: Simbol : % Termasuk Binary operator Untuk mencari sisa hasil bagi N % 2, dapat digunakan untuk menguji apakah integer n genap atau ganjil N % 2 = 0 n GENAP N % 2 = 1 n GANJIL Increment dan Decrement: Simbol : ++(increment), --(decrement) Termasuk unary operator Menaikkan (++) dan menurunkan (--) nilai variabel dengan nilai 1 Posisinya bisa didepan (pre) atau dibelakang (post) variabel 9
Operator Aritmatika Contoh: N++; //post increment ++N; //pre increment N--; //post decrement --N; //pre decrement Jika statement increment stand alone. Maka N++; atau ++N; sama artinya N=N+1; Jika statement decrement stand alone. Maka N--; atau --N; sama artinya N=N-1; 10
Operator Aritmatika Contoh: 11 #include int main () { int x = 44; int y = 44; ++x; printf(x = %d\n, x);/* hasilnya 45 */ y++; printf(y = %d\n, y);/* hasilnya 45 */ } #include int main () { int x = 44; int y = 44; ++x; printf(x = %d\n, x);/* hasilnya 45 */ y++; printf(y = %d\n, y);/* hasilnya 45 */ }
Operator Aritmatika Jika ++n dan n++ sebagai statement yang terikat dalam ekspresi lainnya (sub expresi), keduanya mempunyai arti yang berbeda. ++n -> n ditambah 1, baru diproses terhadap ekspresinya n++ -> n langsung diproses terhadap ekspresinya tanpa ditambah 1 terlebih dahulu, pada saat selesai baru n ditambah 1 12 int main () { int x=44; int y = 44; int z; z = ++x ;/* z, x nilainya 45 */ z = y++ ;/* z nilainya 44 dan y nilainya 45 */ return(0); } int main () { int x=44; int y = 44; int z; z = ++x ;/* z, x nilainya 45 */ z = y++ ;/* z nilainya 44 dan y nilainya 45 */ return(0); }
Operator Aritmatika Setiap ekspesi yang berbentuk : = ; dapat diganti dengan : = ; Operator ini sering disebut dengan Combined Operator. EkspresiDapat diganti dengan a = a + b;a += b; a = a – b;a -= b; a = a * b;a *= b; a = a / b;a /= b; a = a % b;a %= b; a = a ^ b ;a ^= b; 13
Operator Aritmatika Contoh soal : x *= y +1; artinya sama dengan : A.x = x * (y + 1); B.x = x * y + 1; C.x = x + 1 * y; D.x = (x + 1) * y; Jawab: A 14
Operator Relasional Digunakan untuk membandingkan dua nilai, dan hasilnya TRUE atau FALSE SimbolFungsi = Sama Dengan !=Tidak Sama Dengan <Lebih Kecil Dari > Lebih Besar Dari <=Lebih Kecil atau Sama Dengan >=Lebih Besar atau Sama Dengan ?:Conditional assignment 15
Operator Relasional TRUE dalam bahasa C nilainya Tidak sama dengan NOL FALSE dalam bahasa C nilainya sama dengan NOL Sedangkan nilai TRUE yang diset oleh program C saat run time nilainya sama dengan 1 16
Operator Relasional Contoh : 17 #include int main() { int x=5,y=6; if ( x == y) printf("%d sama dengan %d\n",x,y); if ( x != y) printf("%d tidak sama dengan %d\n",x,y); if ( x < y) printf("%d lebih kecil daripada %d\n",x,y); if ( x > y) printf("%d lebih besar daripada %d\n",x,y); if ( x <= y) printf("%d lebih kecil atau sama dengan %d\n",x,y); if ( x >= y) printf("%d lebih besar atau sama dengan %d\n",x,y); return(0); } #include int main() { int x=5,y=6; if ( x == y) printf("%d sama dengan %d\n",x,y); if ( x != y) printf("%d tidak sama dengan %d\n",x,y); if ( x < y) printf("%d lebih kecil daripada %d\n",x,y); if ( x > y) printf("%d lebih besar daripada %d\n",x,y); if ( x <= y) printf("%d lebih kecil atau sama dengan %d\n",x,y); if ( x >= y) printf("%d lebih besar atau sama dengan %d\n",x,y); return(0); }
Operator Relasional Contoh: int x; x = (20 > 10); //nilai x sama dgn 1 X= (20 == 10); //nilai x sama dgn 0 18
Conditional Expressions Stetement sbb: if(a > b) z = a; else z = b; Statement diatas bisa diganti dengan conditional expression. Conditional expression menggunakan ternary operator ?: Sintak : exp1 ? Exp2 : exp3; Contoh yang sama artinya dgn statement diatas: z = (a > b) ? a : b; 19
Conditional Expressions Contoh : 20 int main () { int kode, diskon=0; kode=1; diskon = (kode == 1) ? 30 : 10; printf(Diskon item = %d \n,diskon); Return(0); } int main () { int kode, diskon=0; kode=1; diskon = (kode == 1) ? 30 : 10; printf(Diskon item = %d \n,diskon); Return(0); } int main () { int bil, abs; bil = 50; abs = (bil > 0) ? bil : - bil; printf(%d \n,abs); bil = - 50; abs = (bil > 0) ? bil : - bil; printf(%d \n,abs); return(0); } int main () { int bil, abs; bil = 50; abs = (bil > 0) ? bil : - bil; printf(%d \n,abs); bil = - 50; abs = (bil > 0) ? bil : - bil; printf(%d \n,abs); return(0); }
Operator Logika Digunakan untuk melakukan operasi logika Hasil operasi bernilai TRUE atau FALSE, seperti Table Kebenaran berikut: SimbolFungsi &&AND ||OR !NOT AB!AA && BA || B True FalseTrue False True FalseTrue FalseTrue False TrueFalse 21
Operator Logika Operand pada operator logika dianggap operand yang mempunyai nilai TRUE atau FALSE. Contoh: int x=5; int y=0; x && y; //FALSE (x > y) && (y>=0); //TRUE 22
Operator Bitwise SimbolFungsiContoh &ANDA & B | ORA | B; ^ XORA ^ B; ~Complement 1~A; >> Shift RightA >> 3; << Shift LeftB << 2; 23
Operator Bitwise Operasi nya bit per bit Contoh : int A=24; int B=35; int C; C=A & B; //nilai C = 0 C=A | B; //nilai C = A=24 Binernya: B=35 Binernya: Bit per bit di AND kan Hasilnya : desimalnya 0 JIka Bit per bit di OR kan Hasilnya : desimalnya 59
Operator Bitwise Dua buah bit di-XOR-kan akan menghasilkan 1 jika kedua bit tersebut berbeda, dan akan menghasilkan 0 jika kedua bit tersebut sama. Contoh: int A,B=45; A=B^75; //Nilai A= Desimal 45 binernya: Desimal 75 binernya: Kemudian bit per bit di XOR kan maka hasilnya: atau (102 desimal).
Operator Bitwise Untuk membuat complement-1, maka setiap bit yg nilainya 0 dirubah menjadi 1 dan sebaliknya. Contoh: int A, B=0xC3; A=~B; //nilai A=0x3C; 26 Untuk menulis bilangan dlm notasi hexadesimal pada C digunakan 0x diawal bilangan tersebut. 0xC3 binernya: Di-komplemen-1 hasilnya: atau dlm notasi hexadecimal menjadi 3C
Operator Bitwise Contoh: int A, B=78; A = B >> 3; //nilai A=9 A = B << 2; //nilai A= binernya: Geser kekanan yang ke-1 : Geser kekanan yang ke-2 : Geser kekanan yang ke-3 : => 9 desimal 78 binernya: Geser kekiri yang ke-1 : Geser kekiri yang ke-2 : => 312 desimal
Operator Pointer Pointer operator terdiri dari : & (address of) * (value of) 28 AKAN DIBAHAS PADA TOPIK POINTER
Precedence dan Associativity Setiap Operator memiliki Presedensi dan assosiativitas. Presedensi menentukan urutan pengerjaan / pengeksekusian operator berdasarkan tingkat / prioritas. Operator yang memiliki tingkat presedensi lebih tinggi akan dikerjakan lebih dahulu. Assosiativitas menentukan urutan pengerjaan / pengeksekusian operator berdasarkan lokasinya dalam sebuah ekspresi, (apakah dari kiri atau dari kanan). Assosiativitas berlaku untuk operator-operator yang memiliki presedensi yang sama. 29
Tabel Precedence dan Associativity 30
Pengaruh Precedence dan Associativity 31
Latihan Jika semua variabel bertipe integer, maka tentukan nilai A sbb: B=23; C=12; D=32; E=0; 1.A = B && E; 2.A = B & C; 3.A = C || D; 4.A = B | D; 5.A = B > 2; 6.A = B >> 2; 7.A = C < 3; 8.A = C << 3; 9.A = B = C; 10.A = B == C; 32
Latihan Sebutkan contoh operator yang termasuk : 1.Unary Operator 2.Binary Operator 3.Ternary Operator Sebutkan beberapa operator yang bisa berfungsi sebagai unary dan binary operator, dan berikan contohnya. 33
Latihan #include int main() { int x=10, y=6; x *= 5 + y; printf("%d\n",x); return(0); } Berapa nilai x yang dicetak dilayar monitor ? 34
Latihan 35 Berapa nilai x yang ditampilkan di layar monitor ?
Latihan 36 Berapa nilai y yang ditampilkan di layar monitor ?
Latihan 37 Apa yang ditampilkan di layar monitor oleh 4 program diatas ?
Latihan z = (n > 0) ? f : b; Perhatikan conditional expression diatas, bolehkah f dan b memiliki tipe data yang berbeda ? 38