Ekspresi, Pernyataan & Operasi Aritmetika/Logika
Ekspresi (expression)
Pernyataan (statements) Operator Penugasan (assignment) Operator Aritmetika Operator Relasional Operator Logika Operator Bitwise
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
1
Ekspresi (Expression)
Segala sesuatu yang menghasilkan nilai (jika dievaluasi, akan menghasilkan nilai) Bisa berupa konstanta literal, variabel, maupun kombinasi keduanya dengan menggunakan operator Contoh: x x = 1 hasil = 1 * 2 * x + y / (x + y)
1 + 2 3 100 // ambiguous / 100 // unambiguous, recommended
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
2
Ekspresi Operasi
Komponen utama operasi adalah operand dan operator
Operand dapat berupa variabel, konstanta, nilai data konstan maupun fungsi. Setiap operand harus memiliki nilai data.
Operator adalah simbol yang mengolah nilai pada operand dan menghasilkan satu nilai baru.
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
3
Pernyataan (Statements)
Secara sederhana analogis dengan ‘kalimat’ dalam bahasa natural. Sebuah pernyataan membentuk unit eksekusi yang komplit (a complete unit of execution), dapat dieksekusi oleh komputer. Ekspresi dapat diubah menjadi pernyataan (sehingga dapat dieksekusi) dengan mengakhiri penulisannya dengan titik koma atau semicolon (;) Contoh: x = 10; y = x + 1; printf(“%d”, x); x++; Contoh di atas termasuk pernyataan ekspresi (expression statements)
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
4
Pernyataan (Statements)
Selain pernyataan ekspresi, ada macam pernyataan lainnya, yaitu pernyataan deklarasi (declaration statement) dan pernyataan aliran kendali (control flow statement) Contoh pernyataan deklarasi: int x; char ch = ‘A’; float = 3.14;
Pernyataan aliran kendali dapat berupa pencabangan bersyarat (selection) atau pengulangan (repetition). Akan dibahas di topik lain kelak.
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
5
Presedensi & Asosiativitas
Presedensi menentukan urutan pengerjaan operator berdasarkan prioritas. Operator yang memiliki tingkat presedensi lebih tinggi akan dikerjakan lebih dahulu.
Assosiativitas menentukan urutan pengerjaan operator berdasarkan lokasinya dalam sebuah ekspresi (apakah dari kiri atau dari kanan).
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
6
Presedensi & Asosiativitas KATEGORI
SIMBOL
Resolusi Lingkup
:: () []
Kurung, indeks larik dan elemen struktur data
-> .
Operator Unary
NAMA Resolusi Lingkup Kurung Elemen array Pointer ke anggota struktur atau kelas
PRIORITAS
URUTAN PENGERJAAN
1
Kiri-Kanan Kiri-Kanan Kiri-Kanan
2
Kiri-Kanan
Anggota struktur, union atau kelas
Kiri-Kanan
++ Pre-increment -Pre-decrement ! Logika not ~ Komplemen Bitwise Unary minus + Unary plus & Alamat * Indirection (type) Type casting sizeof Ukuran tipe data new AlokasiOperasi memori Ekspresi Pernyataan Aritmetika Logika - TIF UB 2010 delete Dealokasi memori
Kanan-Kiri Kanan-Kiri Kanan-Kiri Kanan-Kiri Kanan-Kiri Kanan-Kiri Kanan-Kiri Kanan-Kiri Kanan-Kiri Kanan-Kiri Kanan-Kiri 7 Kanan-Kiri
3
Presedensi & Asosiativitas KATEGORI Operator aritmatika perkalian Operator penambahan Pergeseran bit
Operator Relational
Operator Relational Operator Bitwise Operator Logika Operator Ternary Operator Penugasan Majemuk Operator koma
SIMBOL * / % + << >> < <= > >= == != & ^ | && || ?: =, +=, -=, *=, /=, %=
NAMA Perkalian Pembagian Sisa Pembagian Penambahan Pengurangan Geser Kiri Geser Kanan Lebih kecil Lebih kecil sama dg Lebih besar Lebih besar sama dg Sama dengan Tidak sama dengan Bitwise AND Bitwise XOR Bitwise OR Logika AND Logika OR Operator kondisi
PRIORITAS
URUTAN PENGERJAAN
4
Kiri-Kanan
5
Kiri-Kanan
6
Kiri-Kanan
7
Kiri-Kanan
8
Kiri-Kanan
9 10 11 12 13 14
Kiri-Kanan Kiri-Kanan Kanan-Kiri
Operator penugasan arithmatika
&=, ^=, |=, Operator penugasan bitwise Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010 <<=, >>= , Operator Koma
15
Kanan-Kiri 8
16
Kiri-Kanan
Presedensi & Asosiativitas xy yz x xy yz
Contoh:
Ditulis dalam bhs pemrograman Java: x = (x * y + y * z)/(x * y – y * z); 1
4
2
5 6
3 7 8
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
9
Presedensi & Asosiativitas main () { Scanner input = new Scanner( System.in ); int a, b, z=100; float x, y; System.out.println("Melihat prioritas dan urutan pengerjaan\n\n"); System.out.print("Masukkan sebarang nilai integer: "); a = input.nextInt(); x = a/3*3; y = a*3/3; z += b = a; System.out.printf("\n\nx = %d/3*3, diperoleh x = %f\n\n",a,x); System.out.printf("y = %d*3/3, diperoleh y = %f\n\n",a,y); System.out.printf("bila z=100, maka untuk z += b = %d diperoleh z = %d\n\n\n”, a,z); }
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
10
Operator
Didasarkan atas jumlah operand, operator dapat dibedakan menjadi tiga jenis, yaitu : Unary operator Binary operator Ternary operator
Unary operator memerlukan 1 operand, binary operator memerlukan 2 operand, sedangkan ternary operator memerlukan 3 operand.
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
11
Operator
Berdasarkan jenis operasinya, operator dalam bahasa pemrograman Java dapat dikelompokkan : Operator Penugasan (assignment operator) Operator Logika Operator Aritmatika Operator Relasional Operator Bitwise
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
12
Operator Penugasan (assignment)
Termasuk binary operator
Digunakan untuk memberikan nilai kepada suatu operand. Sintaks: operand1 operator operand2;
operand1 harus berupa variabel, sedangkan operand2 dapat sembarang operand termasuk variabel dari operand1 .
Urutan pengerjaan (assosiativitas) operator penugasan dari kanan ke kiri. Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
13
Operator Penugasan
Contoh x = 2; x = y; x = 2 * y; a = sin (y);
// konstanta // variabel lain // ekspresi // fungsi
Tipe hasil operasi disesuaikan dengan tipe operand sebelah kiri. int x = 7/2; float y = 3;
/*nilai x sama dengan 3 */ /*nilai y sama dengan 3.000 */
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
14
Operator Aritmetika
Digunakan untuk melakukan operasi matematika Simbol
Fungsi
Contoh
+
Penambahan
x = y + 6;
-
Pengurangan
y = x – 5;
*
Perkalian
y = y * 3;
/
Pembagian
%
Modulo
++
Increment
x++;
--
Decrement
z--;
()
Menaikan Priority Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
z = x/y; A = 10 % 3;
x=(2+3)*5 15
Operator Aritmetika
Modulo:
Simbol : % Termasuk Binary operator Untuk menghitung sisa hasil bagi n % 2, dapat digunakan untuk menguji apakah integer n bernilai 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 1 Posisinya bisa di depan (pre) atau dibelakang (post) variabel Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
16
Operator Aritmatika
Contoh: N++; ++N; N--; --N;
//post increment //pre increment //post decrement //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;
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
17
Operator Aritmatika
Contoh: main () { int x = 44; int y = 44; ++x; System.out.printf(”x = %d\n”, x);/* hasil 45 */ y++; System.out.printf(”y = %d\n”, y);/* hasil 45 */ }
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
18
Operator Aritmetika
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 main () { int x=44; int y = 44; int a, b; a = ++x; /* a, x nilainya 45 */ b = y++; /* b nilainya 44 dan y nilainya 45 */ } Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
19
Operator Aritmetika
Setiap ekspesi yang berbentuk :
= <Exp>; dapat diganti dengan : = <Exp>; Operator ini sering disebut dengan Combined Operator. Ekspresi
Dapat 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 Ekspresi ^ b Pernyataan ; Operasi Aritmetika Logika - TIF UB a2010 ^= b;
20
Operator Aritmetika
Contoh soal: x *= y +1; artinya sama dengan : A. B. C. D.
x = x * (y + 1); x = x * y + 1; x = x + 1 * y; x = (x + 1) * y;
Jawab : A
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
21
Operator Relasional Digunakan untuk membandingkan dua nilai, dan hasilnya TRUE atau FALSE Simbol
Fungsi
==
Sama Dengan
!=
Tidak Sama Dengan
<
Lebih Kecil Dari
>
Lebih Besar Dari
<=
Lebih Kecil atau Sama Dengan
>=
Lebih Besar atau Sama Dengan
?:
Conditional assignment Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
22
Operator Relasional
TRUE dalam bahasa pemrograman bernilai “tidak sama dengan NOL”
FALSE dalam bahasa pemrograman bernilai “sama dengan NOL”
Sedangkan nilai TRUE yang diset oleh program saat run time bernilai sama dengan 1.
Contoh: int x; x = (20 > 10); x = (20 == 10);
//nilai x sama dgn 1 //nilai x sama dgn 0
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
23
Operator Relasional
Contoh :
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); }
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
24
Ekspresi Kondisional (Conditional Expression)
Ekspresi Kondisional menggunakan ternary operator ?:
Sintaks : exp1 ? exp2 : exp3; Jika exp1 bernilai true, maka exp2 dieksekusi. Sebaliknya jika exp1 bernilai false, maka exp3 dieksekusi.
Contoh yang sama artinya dgn statement diatas: z = (a>b) ? a : b; Jika (a>b) bernilai benar maka z=a. Sebaliknya jika (a>b) bernilai salah maka z=b. Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
25
Ekspresi Kondisional Contoh: main () { int bil, abs; printf("Menentukan nilai absolut\n\n"); printf("Masukkan bilangan integer: "); scanf("%d",&bil); abs = (bil >= 0) ? bil : - bil; printf("Nilai absolutnya adalah : %d \n\n",abs); }
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
26
Operator Logika
Digunakan untuk melakukan operasi logika Simbol
Fungsi
&&
AND
||
OR
!
NOT
Table Kebenaran operator logika: A
B
!A
A && B
A || B
True
True
False
True
True
True
False
False
False
True
False
True
True
False
True
False
True
False
False
False
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
27
Operator Logika
Operand pada operator logika harus mempunyai nilai boolean, yaitu TRUE atau FALSE. Nilai data integer tidak dibolehkan menjadi operand dari operator logika.
Contoh: int int a = b =
x=5; y=0, a , b; x && y; //error (hasil yg salah) (x > y) && (y>=0); //ok
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
28
Operator Bitwise
Simbol
Fungsi
Contoh
&
AND
A& B
|
OR
A | B;
^
XOR
A ^ B;
~
Complement 1
>>
Shift Right
A >> 3;
<<
Shift Left
B << 2;
~A;
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
29
Operator Bitwise
Operasinya dilakukan bit per bit
Contoh: int int c = c = d = d =
a=24; int b=35; c, d; a & b; //nilai 0 a | b; //nilai 59
a=24 Binernya: 011000 b=35 Binernya: 100011 (a&b) per bit hasilnya : 000000 desimalnya 0 (a | b) per bit hasilnya : 111011 desimalnya 59
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
30
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: Desimal 45 binernya: 0101101
int A,B=45; A=B^75; //Nilai A=102
Desimal 75 binernya: 1001011 Kemudian bit per bit di XOR kan maka hasilnya: 1100110 atau (102 desimal).
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
31
Operator Bitwise
Dengan menggunakan operator komplemen (~), maka setiap bit bernilai 0 akan dirubah menjadi 1 dan sebaliknya.
Contoh:
0xC3 binernya: 1100 0011
int A, B=0xC3; A=~B; //nilai A=0x3C;
Di-komplemenkan hasilnya: 0011 1100 atau dlm notasi hexadecimal menjadi 3C
Catatan: Penulisan bilangan hexadesimal pada bhs pemrograman C menggunakan awalan 0x atau 0X (nol-X).
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
32
Operator Bitwise
Operator shift-right (>> n) dapat dipergunakan untuk menggeser n bit ke kanan dan diberi nilai 0 (nol) sejumlah n bit dari paling kiri yang ditinggalkan.
Operator shift-left (<< n) dapat dipergunakan untuk menggeser n bit ke kiri dan diberi nilai 0 (nol) sejumlah n bit dari paling kanan yang ditinggalkan.
Contoh: int A, B, C=78; A = C>>3; //nilai A=9 B = C<<2; //nilai B=312
Catatan: 78 binernya: 00100 1110 Geser kekanan 3 bit: 000001001 = 9 Geser kekiri 2 bit : 100111000 = 312
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
33