Title: Dasar Pemrograman Komputer
1Dasar Pemrograman Komputer
- Ekspresi, Pernyataan Operasi Aritmetika/Logika
Sutrisno Ismiarta Aknuranda Issa Arwani Adharul
Muttaqin Teknik Informatika - UB
2Ekspresi, Pernyataan Operasi Aritmetika/Logika
- Ekspresi (expression)
- Pernyataan (statements)
- Operator Penugasan (assignment)
- Operator Aritmetika
- Operator Logika
- Operator Relasional
- Operator Bitwise
- Operator Pointer
3Ekspresi (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)
4Ekspresi 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
5Pernyataan (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)
6Pernyataan (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.
7Operator
- 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.
8Operator
- Berdasarkan jenis operasinya, operator dalam
bahasa pemrograman C dapat dikelompokkan - Operator Penugasan (assignment operator)
- Operator Aritmetika
- Operator Logika
- Operator Bitwise
- Operator Relasional
- Operator Pointer
9Operator 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.
10Operator Penugasan
- Contoh
- x 2 // konstanta
- x y // variabel lain
- x 2 y // ekspresi
- a sin (y) // fungsi
- Tipe hasil operasi disesuaikan dengan tipe
operand sebelah kiri. - int x 7/2 /nilai x sama dengan 3 /
- float y 3 /nilai y sama dengan 3.000 /
11Operator Aritmetika
- Digunakan untuk melakukan operasi matematika
Simbol Fungsi Contoh
Penambahan x y 6
- Pengurangan y x 5
Perkalian y y 3
/ Pembagian z x/y
Modulo A 10 3
Increment x
-- Decrement z--
() Menaikan prioritas x(23)5
12Presedensi 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).
13Presedensi 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 /
14Presedensi Asosiasivitas
KATEGORI KATEGORI SIMBOL NAMA NAMA PRIORITAS ARAH PENGERJAAN
Resolusi lingkup Resolusi lingkup 1 Kiri-Kanan
Kurung, indeks larik (array) dan elemen struktur data () Kurung 2 Kiri-Kanan
Kurung, indeks larik (array) dan elemen struktur data Elemen larik (array) 2 Kiri-Kanan
Kurung, indeks larik (array) dan elemen struktur data -gt Pointer ke anggota struktur atau kelas 2 Kiri-Kanan
Kurung, indeks larik (array) dan elemen struktur data . Anggota struktur, union atau kelas 2 Kiri-Kanan
Operator unary Pre-increment 3 Kanan-Kiri
Operator unary -- Pre-decrement 3 Kanan-Kiri
Operator unary ! Logika NOT 3 Kanan-Kiri
Operator unary Komplemen bitwise 3 Kanan-Kiri
Operator unary - Unary minus 3 Kanan-Kiri
Operator unary Unary plus 3 Kanan-Kiri
Operator unary Alamat 3 Kanan-Kiri
Operator unary Indirection 3 Kanan-Kiri
Operator unary (type) Type casting 3 Kanan-Kiri
Operator unary sizeof Ukuran tipe data 3 Kanan-Kiri
Operator unary new Alokasi memori 3 Kanan-Kiri
Operator unary delete Dealokasi memori 3 Kanan-Kiri
15Presedensi Asosiasivitas
KATEGORI KATEGORI SIMBOL NAMA NAMA PRIORITAS ARAH PENGERJAAN
Operator aritmatika perkalian Perkalian 4 Kiri-Kanan
Operator aritmatika perkalian / Pembagian 4 Kiri-Kanan
Operator aritmatika perkalian Sisa pembagian 4 Kiri-Kanan
Operator penambahan Penambahan 5 Kiri-Kanan
Operator penambahan - Pengurangan 5 Kiri-Kanan
Pergeseran bit ltlt Geser kiri 6 Kiri-Kanan
Pergeseran bit gtgt Geser kanan 6 Kiri-Kanan
Operator relasional lt Lebih kecil daripada 7 Kiri-Kanan
Operator relasional lt Lebih kecil atau sama dengan 7 Kiri-Kanan
Operator relasional gt Lebih besar daripada 7 Kiri-Kanan
Operator relasional gt Lebih besar atau sama dengan 7 Kiri-Kanan
Operator relasional Sama dengan 8 Kiri-Kanan
Operator relasional ! Tidak sama dengan 8 Kiri-Kanan
Operator bitwise Bitwise AND 9 Kiri-Kanan
Operator bitwise Bitwise XOR 10 Kiri-Kanan
Operator bitwise Bitwise OR 11 Kiri-Kanan
Operator Logika Logika AND 12 Kiri-Kanan
Operator Logika Logika OR 13 Kiri-Kanan
Operator Ternary ? Operator kondisional 14 Kanan-Kiri
Operator Penugasan Majemuk , , -, , /, Operator penugasan aritmetika 15 Kanan-Kiri
Operator Penugasan Majemuk , , , ltlt, gtgt Operator penugasan bitwise 15 Kanan-Kiri
Operator koma , Operator Koma 16 Kiri-Kanan
16Presedensi Asosiasivitas
- Contoh
- Ditulis dalam bhs pemrograman C
- x (x y y z)/(x y y z)
1
2
4
5
6
3
7
8
17Presedensi Asosiasivitas
include ltstdio.hgt include ltstdlib.hgt int main
() int a, b, z100 float x, y
printf("Melihat pengaruh prioritas dan urutan
pengerjaan\n\n") printf("Masukkan sebarang
nilai integer ") scanf("d",a) x
a/33 y a3/3 z b a printf("\n\nx
d/33, diperoleh x f\n\n",a,x)
printf("y d3/3, diperoleh y f\n\n",a,y)
printf("bila z100, maka untuk z b d
diperoleh z d\n\n\n", a,z)
system("PAUSE") return(0)
18Operator 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
19Operator Aritmetika
- Contoh
- N //post increment
- N //pre increment
- N-- //post decrement
- --N //pre decrement
- Jika statement increment stand alone, maka N
atau N sama artinya dengan NN1 - Jika statement decrement stand alone, maka N--
atau --N sama artinya dengan NN-1
20Operator Aritmetika
include ltstdio.hgt include ltstdlib.hgt 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
21Operator 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 x44 int y 44 int z
z x printf(zd, xd\n, z, x) z
y printf(zd, yd\n, z, y)
return (0)
22Combined Operator
- Setiap ekspesi yang berbentuk
- ltVariabelgt ltVariabelgt ltOperatorgtltExpgt
- dapat diganti dengan
- ltVariabelgt ltOperatorgt ltExpgt
- 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 b a b
23Operator Aritmetika
- Contoh soal
- x y 1 artinya sama dengan
- x x (y 1)
- x x y 1
- x x 1 y
- x (x 1) y
24Operator Logika
- Digunakan untuk melakukan operasi logika
- Operasi logika menghasilkan nilai TRUE atau FALSE
- Tabel kebenaran operator logika
Simbol Fungsi
AND
OR
! NOT
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 True True False False
25Operator 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 x5
- int y0, a , b
- a x y
- b (x gt y) (ygt0)
26Operator Relasional
Digunakan untuk membandingkan dua nilai, dan
hasilnya TRUE atau FALSE
Simbol Fungsi
Sama Dengan
! Tidak Sama Dengan
lt Lebih Kecil Dari
gt Lebih Besar Dari
lt Lebih Kecil atau Sama Dengan
gt Lebih Besar atau Sama Dengan
? Conditional assignment
27Operator 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 gt 10) //nilai x sama dgn 1
- x (20 10) //nilai x sama dgn 0
28Operator Relasional
includeltstdio.hgt int main() int x5,y6
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 lt y)
printf("d lebih kecil daripada d\n",x,y)
if ( x gt y) printf("d lebih besar daripada
d\n",x,y) if ( x lt y) printf("d lebih
kecil atau sama dengan d\n", x,y) if (
x gt y) printf("d lebih besar atau sama dengan
d\n", x,y) return(0)
29Ekspresi 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 (agtb) ? a b
- Jika (agtb) bernilai benar maka za. Sebaliknya
jika (altb) bernilai salah maka zb.
30Ekspresi Kondisional
Contoh
include ltstdio.hgt include ltiostream.hgt int
main () int bil, abs
printf("Menentukan nilai absolut\n\n")
printf("Masukkan bilangan integer ")
scanf("d",bil) abs (bil gt 0) ? bil -
bil printf("Nilai absolutnya adalah d
\n\n",abs) system("PAUSE") return(0)
31Operator Bitwise
Simbol Fungsi Contoh
AND A B
OR A B
XOR A B
Complement 1 A
gtgt Shift Right A gtgt 3
ltlt Shift Left B ltlt 2
32Operator BitwiseAND, OR
- Operasinya dilakukan bit per bit
- Contoh
-
a24 (desimal) 011000 (biner) b35 (desimal)
100011 (biner) (ab) per bit menghasilkan 000000
(biner) desimalnya 0 (a b) per bit
menghasilkan 111011 desimalnya 59
int a24 int b35 int c c a b //nilai c
0 c a b //nilai c 59
33Operator 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) 75 (desimal)
1001011 (biner) Kedua angka ini bit per bit di
XOR-kan untuk menghasilkan 1100110 (biner) atau
102 (desimal).
int A,B45 AB75 //Nilai A102
34Operator Bitwise
- Dengan menggunakan operator komplemen (), maka
setiap bit yang bernilai 0 akan diubah menjadi 1,
dan sebaliknya. - Contoh
- int A, B0xC3
- AB //nilai A0x3C
0xC3 (hexa) 1100 0011 (biner) 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).
35Operator Bitwise
- Operator shift-right (gtgt 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 (ltlt 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, B78
- A Bgtgt3 //nilai A9
- A Bltlt1 //nilai A ?
Catatan 78 (desimal) 00100 1110 (biner) Geser
ke kanan 3 bit 000001001 9 Geser ke kiri 1 bit
010011100 ?
36Operator Pointer
- Pointer operator terdiri dari
- (address of)
- (value of)
- (decalaration of pointer)
AKAN DIBAHAS PADA TOPIK POINTER