Transcript Document

Dasar Pemrograman
Komputer
Ekspresi, Pernyataan &
Operasi Aritmetika/Logika
Sutrisno
Ismiarta Aknuranda
Issa Arwani
Adharul Muttaqin
Teknik Informatika - UB
Ekspresi, Pernyataan &
Operasi Aritmetika/Logika

Ekspresi (expression)

Pernyataan (statements)
Operator Penugasan (assignment)
Operator Aritmetika
Operator Logika
Operator Relasional
Operator Bitwise
Operator Pointer






Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
2
Ekspresi (Expression)


Ekspresi adalah segala sesuatu yang jika dievaluasi akan
menghasilkan suatu nilai
Ekspresi bisa berupa:





sebuah konstanta
sebuah variabel
sebuah ekspresi yang dioperasikan dengan ekspresi lain
pemanggilan sebuah fungsi
Contoh:
1
x
x = 1
hasil = 1 + 2
1 * 2 * 3
x + y
printf(“Salam untuk alam semesta!\n”)
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
3
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.

Contoh:
x = 10 // operasi penugasan; operand: x dan 10;
// operator: =
y = x + 1 // operasi penjumlahan dan penugasan
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
4
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
5
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’;

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
6
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
7
Operator

Berdasarkan jenis operasinya, operator dalam bahasa
pemrograman C dapat dikelompokkan :
 Operator Penugasan (assignment operator)
 Operator Aritmetika
 Operator Logika
 Operator Bitwise
 Operator Relasional
 Operator Pointer
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
8
Operator Penugasan (assignment)

Termasuk binary operator

Digunakan untuk memberikan nilai kepada suatu operand.
Sintaksis:
operand1 operator operand2;

operand1 harus berupa variabel, sedangkan
operand2 dapat sembarang operand termasuk variabel
dari operand1 .

Arah pengerjaan (asosiasivitas) operator penugasan dari
kanan ke kiri.
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
9
Operator Penugasan

Contoh
x
x
x
a

=
=
=
=
2;
y;
2 * y;
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
10
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 prioritas
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
z = x/y;
A = 10 % 3;
x=(2+3)*5
11
Presedensi & Asosiasivitas

Presedensi menentukan urutan pengerjaan operator
berdasarkan prioritas. Operator yang memiliki tingkat
presedensi lebih tinggi akan dikerjakan lebih dahulu.
Misal:
x + y * z
Tanda * untuk perkalian berpresedensi lebih tinggi
daripada tanda + untuk penjumlahan
y * z dikerjakan lebih dulu, baru x ditambahkan hasil
perkalian tersebut

Asosiativitas menentukan arah operasi sebuah ekspresi
(dari kiri ke kanan, atau dari kanan ke kiri).
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
12
Presedensi & Asosiasivitas

Asosiativitas menentukan arah operasi sebuah ekspresi
(dari kiri ke kanan, atau dari kanan ke kiri).
a = 10; /* operasi penugasan, dari
kanan ke kiri */
x + y; /* operasi penjumlahan, dari
kiri ke kanan */
z = x + y;
/* kombinasi operasi penjumlahan dan
penugasan:
1. cek presedensi
2. cek asosiasivitas */
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
13
Presedensi & Asosiasivitas
KATEGORI
SIMBOL
Resolusi lingkup
::
()
[]
Kurung, indeks
larik (array) dan
elemen struktur
data
Operator unary
->
.
NAMA
Resolusi lingkup
Kurung
Elemen larik (array)
Pointer ke anggota struktur atau
kelas
PRIORITAS
ARAH
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
Alokasi memori
Ekspresi Pernyataan Operasi 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
14
Kanan-Kiri
3
Presedensi & Asosiasivitas
KATEGORI
Operator aritmatika
perkalian
Operator penambahan
Pergeseran bit
Operator relasional
Operator relasional
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 daripada
Lebih kecil atau sama dengan
Lebih besar daripada
Lebih besar atau sama dengan
Sama dengan
Tidak sama dengan
Bitwise AND
Bitwise XOR
Bitwise OR
Logika AND
Logika OR
Operator kondisional
PRIORITAS
ARAH 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 aritmetika
&=, ^=, |=,
Operator penugasan bitwise
Ekspresi
Pernyataan Operasi Aritmetika Logika - TIF UB 2010
<<=, >>=
,
Operator Koma
15
Kanan-Kiri
15
16
Kiri-Kanan
Presedensi & Asosiasivitas
xy  yz
x
xy  yz

Contoh:

Ditulis dalam bhs pemrograman C:
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
16
Presedensi & Asosiasivitas
#include <stdio.h>
#include <stdlib.h>
int main () {
int a, b, z=100;
float x, y;
printf("Melihat pengaruh prioritas dan urutan pengerjaan\n\n");
printf("Masukkan sebarang nilai integer: ");
scanf("%d",&a);
x = a/3*3; y = a*3/3; z += b = a;
printf("\n\nx = %d/3*3, diperoleh x = %f\n\n",a,x);
printf("y = %d*3/3, diperoleh y = %f\n\n",a,y);
printf("bila z=100, maka untuk z += b = %d diperoleh z = %d\n\n\n",
a,z);
system("PAUSE");
return(0);
}
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
17
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
18
Operator Aritmetika

Contoh:
N++;
++N;
N--;
--N;
//post increment
//pre increment
//post decrement
//pre decrement

Jika statement increment “stand alone”, maka N++; atau
++N; sama artinya dengan N=N+1;

Jika statement decrement “stand alone”, maka N--; atau
--N; sama artinya dengan N=N-1;
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
19
Operator Aritmetika

Contoh:
#include <stdio.h>
#include <stdlib.h>
int main () {
int x = 44; int y = 44;
++x;
printf(”x = %d\n”, x);/* x = ?*/
y++;
printf(”y = %d\n”, y); /* y = ? */
system(“PAUSE”);
return 0;
}
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
20
Operator Aritmetika

Jika ++n dan n++ terikat dalam ekspresi lainnya (sub expresi) pada
sebuah pernyataan, 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 ekspresi tersebut selesai baru n ditambah 1
int main () {
int x=44; int y = 44; int z;
z = ++x;
printf(“z=%d, x=%d\n”, z, x);
z = y++;
printf(“z=%d, y=%d\n”, z, y);
return (0);
}
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
21
Combined Operator


Setiap ekspesi yang berbentuk :
<Variabel> = <Variabel> <Operator><Exp>;
dapat diganti dengan :
<Variabel> <Operator> = <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;
Ekspresi
Operasi Aritmetika Logika - TIF UB
a=a
^ b Pernyataan
;
a2010
^= b;
22
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;
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
23
Operator Logika



Digunakan untuk melakukan operasi logika
Simbol
Fungsi
&&
AND
||
OR
!
NOT
Operasi logika menghasilkan nilai TRUE atau FALSE
Tabel kebenaran operator logika:
A
B
!A
!B
A && B
A || B
True
True
False
False
True
True
True
False
False
False
False
True
False
True
True
True
False
True
False False Ekspresi
True
False
False
PernyataanTrue
Operasi Aritmetika
Logika - TIF UB 2010
24
Operator Logika


Operand pada operator logika harus mempunyai nilai boolean,
yaitu TRUE atau FALSE.
Dalam bahasa C:
 FALSE dinyatakan dalam bentuk integer bernilai 0
 TRUE dinyatakan dalam bentuk integer bernilai selain 0, dengan default 1.

Contoh:
int
int
a =
b =
x=5;
y=0, a , b;
x && y;
(x > y) && (y>=0);
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
25
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
26
Operator Relasional

TRUE dalam bahasa pemrograman C bernilai “tidak sama
dengan NOL”

FALSE dalam bahasa pemrograman C bernilai “sama
dengan NOL”

Sedangkan nilai TRUE yang diset oleh program C 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
27
Operator Relasional

Contoh :
#include<stdio.h>
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);
}
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
28
Ekspresi Kondisional
(Conditional Expression)

Ekspresi Kondisional menggunakan ternary operator
?:

Sintaksis: 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
29
Ekspresi Kondisional
Contoh:
#include <stdio.h>
#include <iostream.h>
int 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);
system("PAUSE");
return(0);
}
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
30
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
31
Operator Bitwise
AND, OR

Operasinya dilakukan bit per bit

Contoh:
int a=24; int b=35; int c;
c = a & b; //nilai c = 0
c = a | b;
//nilai c = 59
a=24 (desimal) = 011000 (biner)
b=35 (desimal) = 100011 (biner)
(a&b) per bit menghasilkan: 000000
(biner) desimalnya 0
(a | b) per bit menghasilkan : 111011
desimalnya 59
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
32
Operator Bitwise

Dua buah bit yang di-XOR-kan akan menghasilkan 1 jika
kedua bit tersebut berbeda dan akan menghasilkan 0 jika
kedua bit tersebut sama.

Contoh:
45 (desimal) = 0101101 (biner)
int A,B=45;
A=B^75; //Nilai A=102
75 (desimal) = 1001011 (biner)
Kedua angka ini bit per bit di XOR-kan
untuk menghasilkan: 1100110 (biner) atau
102 (desimal).
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
33
Operator Bitwise

Dengan menggunakan operator komplemen (~), maka setiap
bit yang bernilai 0 akan diubah menjadi 1, dan sebaliknya.

Contoh:
0xC3 (hexa) = 1100 0011 (biner)
int A, B=0xC3;
A=~B; //nilai A=0x3C;
Jika bilangan ini di-komplemenkan,
akan menghasilkan:
0011 1100 (biner) atau 0x3C (hexa)
Catatan:
Penulisan bilangan hexadesimal pada bahasa
pemrograman C menggunakan awalan 0x atau
0X (nol-X).
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
34
Operator Bitwise

Operator shift-right (>> n) dapat dipergunakan untuk menggeser
sebuah bilangan biner n bit ke kanan dan memberikan nilai 0 (nol)
pada sejumlah n bit paling kiri yang ditinggalkan.

Operator shift-left (<< n) dapat dipergunakan untuk menggeser
sebuah bilangan biner n bit ke kiri dan memberikan nilai 0 (nol)
pada sejumlah n bit paling kanan yang ditinggalkan.

Contoh:
int A, B=78;
A = B>>3; //nilai A=9
A = B<<1; //nilai A = ?
Catatan:
78 (desimal) = 00100 1110 (biner)
Geser ke kanan 3 bit: 000001001 = 9
Geser ke kiri 1 bit : 010011100 = ?
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
35
Operator Pointer

Pointer operator terdiri dari :
 & (address of)
 * (value of)
 * (decalaration of pointer)
AKAN DIBAHAS PADA TOPIK POINTER
Ekspresi Pernyataan Operasi Aritmetika Logika - TIF UB 2010
36