Anda di halaman 1dari 57

#3

Data Types, Operators,


and Expression
Outline
 Fundamental Data Types: Numbers
 Operators: Assigments
 In Depth: Operators & Expression
 Logical Operators
 Arithmetic operators
 Expression Evaluations: Operator Precedence
& Associative
 Ringkasan
11/02/21 Algoritma & Pemrograman 2
Tipe Data (Data Types)
 Remember:
 Data dapat menyimpan “apa saja” dalam bentuk bits.
 Program yang menentukan jenis data tersebut.
 Jadi data (1 byte) : 01001010
 Program dapat mengartikan  bilangan: 74
 Program  karakter (ASCII code): J
 Bagaimana kita dapat membedakan data tsb?
 Bahasa pemrograman membantu untuk membedakan kedua tipe
data tsb
 Sesuai dengan keinginan programmer.
 Operasi yang dilakukan sesuai dengan data tsb.
 IDEA: data types (tipe data) – penentuan jenis data
oleh bahasa pemrograman.

11/02/21 Algoritma & Pemrograman 3


Java: Tipe Data [1]
 Java: strongly typed languages
 Setiap variabel harus diasosiasikan dengan tipe data
yang telah dikenal.
 Tiap tipe data memiliki jumlah alokasi tempat
penyimpanan tertentu
 Kesalahan dapat dideteksi pada saat compile dan
mencegah kerancuan interpretasi data.
 Remember:
 Variabel adalah tempat (menunjuk lokasi) penyimpanan suatu
nilai tertentu.
 Dengan types: membatasi types data/nilai yang dapat disimpan
pada lokasi tersebut.

11/02/21 Algoritma & Pemrograman 4


Java: Tipe Data [2]
 Terdapat dua jenis tipe data:
 Primitive types: numeric type, boolean type

 Reference types: class, arrays, String, dll.

11/02/21 Algoritma & Pemrograman 5


Java: Numbers Data Type
 Number data types:
 int  integer (whole number)
int pennies = 8;
int dimes = 4;
 Mengapa tidak menggunakan double saja?
 Misalkan: double pennies = 8;
 programmer: coin sebagai kesatuan tidak dapat dipecah, fraction; jadi
data types harus integer.
 Secara tidak langsung validitas (kebenaran) program telah dibantu
oleh Java.
 double  floating point
double total = pennies * 0.01 +dimes * 0.10 +
quarters * 0.25;
 programmer: jumlah nilai coin dapat berupa pecahan (decimal);
jadi data types untuk nilai coin (total) harus double.
11/02/21 Algoritma & Pemrograman 6
Numeric Type: Numbers (1,2,3,...)
 Representasi bilangan:
 Integer (unit): .. –3; -2; -1; 0; 1; 2; 3; …  whole
number/bilangan bulat
 Java integral types: byte, short, int, long
 Floating point: 13300.0; 13.3; 1,33  bilangan
pecahan
 Contoh: semua mempunyai angka 133, tapi nilai tersebut
tergantung “decimal point” berada dimana
 Decimal point akan bergeser sesuai dengan perkalian atau
pembagian bilangan tersebut dengan 10 (base 10).
 Bilangan 13300.0 = 133 x 102
 1.33 = 133 x 10-2
 Notasi: scientific (notasi exponential)
 Java floating point types: float, double
11/02/21 Algoritma & Pemrograman 7
Example
public class Coins1
{ public static void main(String[] args)
{ int pennies = 8;
int dimes = 4;
int quarters = 3;

// compute total value of coins


double total = pennies * 0.01 + dimes * 0.1 +
quarters * 0.25;

// print result
System.out.print("Total value = ");
System.out.println(total);
}
} Integer: jumlah coin (8 pennies, 4 dimes, dan 3 quarters)
Floating point: nilai dari coin tsb (0.01, 0.10 dan 0.25)
11/02/21 Algoritma & Pemrograman 8
Floating Point
 Notasi operasi Perkalian: * (bukan x)
 Tambah: + ; Kurang: - ; dan Bagi: /
 Bilangan dapat ditulis bagian dari
program:
 Jangan menggunakan spasi dan koma (,)
 Misalkan: 17.000,50 (melayu)  17000.50
 Real Number: 133 x 10-2  133E-2
 Terdiri dari: mantissa  133 dan exponent  -2

11/02/21 Algoritma & Pemrograman 9


Symbolic Names
 Program Coins1, dapat ditulis sebagai berikut:
public class Coins2
{ public static void main(String[] args)
{ System.out.print ("Total value = ");
System.out.println (8 * 0.01 + 4 * 0.10 + 3 * 0.25);
}
}
 Jika dibandingkan manakah yang mudah dimengerti (self
explanation)?
 Bagaimana jika dibaca oleh programmer lain?
 Dengan nama simbolik: pennies, dimes  program
mudah dibaca.
 IDEA: Gunakan symbolic name untuk memudahkan
penulisan, dan program mudah dibaca.
11/02/21 Algoritma & Pemrograman 10
Symbolic Names: Definition
 Nama simbolik  variabel
 Sesuatu nama yang dapat mempunyai nilai.
 Setiap variabel mempunyai tipe data
tertentu
 Variabel dapat diberikan
nilai awal (initialization value):
 int pennies = 8;
 Programmer bebas
memberikan nama variabel
 readable dan mempunyai
makna.
11/02/21 Algoritma & Pemrograman 11
Name Convention
 Nama (variabel):
 Terdiri dari huruf dan digit, $, _ (underscore).
 Tidak dapat dimulai dengan digit.
 Simbol khusus tidak dapat digunakan seperti “?”, “%”, “+” dsb.
 Tidak dapat menggunakan “reserved words” / keyword seperti:
int, double dsb.
 Nama variabel: case sensitive (huruf kecil dan besar
dibedakan).
 Sebaiknya jangan gunakan dua nama variabel yang berbeda hanya
perbedaan huruf besar dan kecil (misalkan Area dan area).
 Konvensi: gunakan huruf kecil untuk huruf pertama, dan huruf besar
untuk huruf pertama selanjutnya
 contoh: tabunganAlibaba

11/02/21 Algoritma & Pemrograman 12


Data Types: Range
 Keterbatasan type numbers (integral types):
 Bilangan int, hanya diberikan tempat: 4 bytes
(-2,147,483,648 s/d 2,147,483,647, sekitar 2 milyar).
 Jika jumlah lebih besar dapat menggunakan “long int”:
8 bytes
(-9,223,372,036,854,775,808 s/d
9,223,372,036,854,775,807).
 long price = 300000000000000L;
 Types yang lain dari integral:
 byte (1 byte): -128 s/d 127
 short (2 bytes): - 32,768 s/d 32,767
 char (2 byte): 0 s/d 65535

11/02/21 Algoritma & Pemrograman 13


Tipe Data: Penyimpanan [1]

11/02/21 Algoritma & Pemrograman 14


Tipe Data: Penyimpanan [2]

11/02/21 Algoritma & Pemrograman 15


Sistem Angka Biner [1]
 Storage size (ukuran penyimpanan): jumlah bits
yang digunakan untuk merepresentasikan
angka, simbol karakter, atau status boolean
status.
 Ukuran memory dalam bytes.
 8 bits = 1 byte
 Tiap bit dapat direpresentasikan sebagai nilai
posisi dalam sistem angka biner.
 Sistem angka biner menggunakan 2 digits (1 dan 0).

11/02/21 Algoritma & Pemrograman 16


Sistem Angka Biner [2]
 Tiap bit dapat menyatakan status on
(simbol 1) atau off (simbol 0).
 Bit 1 adalah bit yang paling kanan
 Contoh:

 Menyatakan  60 (dalam desimal / basis 10)

11/02/21 Algoritma & Pemrograman 17


Sistem Angka
 Decimal
 Simbol: 0, 1, 2, 3, 4, 5, 6, 7, 8, dan 9
 Octal
 Simbol: 0, 1, 2, 3, 4, 5, 6, dan 7
 Hexadecimal
 Simbol: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D,
E, dan F
 Binary
 Simbol: 0 dan 1
11/02/21 Algoritma & Pemrograman 18
Konversi ke Sistem Desimal [1]
 Binary  Decimal
 Binary: 111100
 Decimal:
 1 * 25 + 1 * 24 + 1 * 23 + 1 * 22 + 0 * 21 + 0 * 20 = 60
 Octal  Decimal
 Octal: 74
 Decimal:
 7 * 81 + 4 * 80 = 60

11/02/21 Algoritma & Pemrograman 19


Konversi ke Sistem Desimal [2]
 Hexadecimal  Decimal
 Hexadecimal: 3C
 Decimal:
 A = 10, B = 11, C = 12, D = 13, E = 14, F = 15
 3 * 161 + 12 * 160 = 60

11/02/21 Algoritma & Pemrograman 20


Konversi dari Sistem Desimal [1]
 Decimal  Binary
 Decimal: 60
 Binary: 111100
 60 / 2 = 30 sisa 0
 30 / 2 = 15 sisa 0
 15 / 2 = 7 sisa 1
 7 / 2 = 3 sisa 1
 3 / 2 = 1 sisa 1

11/02/21 Algoritma & Pemrograman 21


Konversi dari Sistem Desimal [2]
 Decimal  Octal
 Decimal: 60
 Octal: 74
 60 / 8 = 7 sisa 4

 Decimal  Hexadecimal
 Decimal: 60
 Hexadecimal : 3C
 60 / 16 = 3 sisa 12 (C)
11/02/21 Algoritma & Pemrograman 22
Assignment
 Remember:
 Semua nama variabel dibuat untuk menyimpan nilai
(tergantung tipe data).
 Assignment
 Memberikan nilai baru kepada variabel (simbol: =)
 total = pennies * 0.01;
 Nama Variabel:
 Nilai yang disimpan pada variabel dapat berubah,
sesuai dengan yang diinginkan oleh program (input)
 Misalkan variabel dapat digunakan berulang-ulang untuk
menyimpan data yang baru.

11/02/21 Algoritma & Pemrograman 23


Changing Value: Example
public class Coins2
{ public static void main(String[] args)
{ int pennies = 8; // eight pennies in the purse
double total = pennies * 0.01;
int dimes = 4; // four dimes in the purse

// add value of dimes


total = total + dimes * 0.10;

int quarters = 3; // three quarters in the purse

// compute total value of coins


total = total + quarters * 0.25;

// print result
System.out.print(“Total value = “);
System.out.println(total);
}
}
11/02/21 Algoritma & Pemrograman 24
Assignment
 Perhatikan:
total = total + dimes * 0.10;
 Variabel total nilainya (0.08) digunakan
kembali untuk membentuk nilai baru total

11/02/21 Algoritma & Pemrograman 25


Assignment is not equality test!
 Assigment Statement:
 Instruksi untuk mengganti isi dari suatu
variabel dengan nilai baru.
 Tanda =, digunakan untuk assignment
BUKAN sebagai simbol persamaan (equality).
 Contoh: untuk menunjuk
ke bulan berikutnya dapat
ditulis:
 month = month + 1;
11/02/21 Algoritma & Pemrograman 26
Assignment plus Arithmetic
 Java mengenal kombinasi aritmetika
dan assigment:
 total += count * 0.05;
Cara pintas untuk menulis:
 total = total + count * 0.05;
 Contoh lain:
 total *= 2;
Cara lain untuk menulis:
 total = total * 2;

11/02/21 Algoritma & Pemrograman 27


Operator: In Depth

nilai = 3 + 7;

operator

 Operator melakukan suatu fungsi (operation)


pada satu atau lebih nilai (operand) dan
menghasilkan suatu nilai

11/02/21 Algoritma & Pemrograman 28


Types of Operators [1]
 Unary Operator
 Operator yang hanya memerlukan satu operand.
 Contoh:
 ++ : increment
 -- : decrement
 ! : logical complement  Boolean NOT
 ~ : bitwise complement  Bitwise NOT

11/02/21 Algoritma & Pemrograman 29


Types of Operators [2]
 Binary Operator:
 Operator yang memerlukan dua operand
 Operator aritmetika:
+ : addition (op1 + op2) / : division (op1 / op2)
* : multiplication (op1*op2) % : modulo (op1 % op2)
- : subtraction (op1 - op2)
 Contoh:
 int a = 5, b = 7;
 a + b; Nilai = ?
 a / b; Nilai = ?
 a % b; Nilai = ?
 b % a; Nilai = ?

11/02/21 Algoritma & Pemrograman 30


Increment & Decrement

Note: untuk memudahkan penulisan Java


mengenal sintaks,
month++; // naikkan satu
month--; // turunkan satu
11/02/21 Algoritma & Pemrograman 31
Operator Increment
 Menambah 1 nilai:
int i;
 Dapat dilakukan secara langsung: i = i + 1;
 Menggunakan unary operator:
 i++; atau ++i;
 Apakah perbedaaannya?
 Ekspresi: op++
 Nilai ekspresi: nilai op sebelum ditambahkan 1
 Akibat: variabel op bertambah 1 nilainya
 Ekspresi: ++op
 Nilai ekspresi: nilai op sesudah ditambahkan 1
 Akibat: variabel op bertambah 1 nilainya
11/02/21 Algoritma & Pemrograman 32
Operator Increment: Example
 int x = 6, y = 6;
 int alfa, beta;
 alfa = 2 * x++;
 sekarang: alfa berisi: ? , x berisi: ?

 beta = 2 * ++x;
 sekarang: beta berisi: ? , x berisi: ?

11/02/21 Algoritma & Pemrograman 33


Operator Increment: Penjelasan
 alfa = 2 * x++;
 Ekivalen dengan:

alfa = 2 * x;
x = x + 1;
 beta = 2 * ++x;
 Ekivalen dengan:

x = x + 1;
beta = 2 * x;
11/02/21 Algoritma & Pemrograman 34
Operator Decrement
 Mengurangi 1 nilai:
int i;
 Dapat dilakukan secara langsung: i = i - 1;
 Menggunakan unary operator:
 i--; atau --i;
 Apakah perbedaannya?
 Ekspresi: op--
 Nilai ekspresi: nilai op sebelum dikurangi 1
 Akibat: variabel op berkurang 1 nilainya
 Ekspresi: --op
 Nilai ekspresi: nilai op sesudah dikurangi 1
 Akibat: variabel op berkurang 1 nilainya
11/02/21 Algoritma & Pemrograman 35
Operator Relasional
 Relasional:
 Membandingkan dua nilai
 Menghasilkan nilai boolean (true atau false)
Operator Ekspresi Bernilai true jika
> a>b a lebih besar dari b
>= a >= b a lebih besar atau sama
dengan b
< a<b a lebih kecil dari b

<= a <= b a lebih kecil atau sama dengan b


== a == b a sama dengan b
11/02/21 != a != b aAlgoritma
tidak& sama b
Pemrograman 36
Operator Relasional: Example
 int a=2, b=5, c=5;
Operator Ekspresi Nilai
> a>b false
>= b >= c true
< a<b true

<= a <= c true


== a == b false
!= a != b true

11/02/21 Algoritma & Pemrograman 37


Operator Conditional
 Kondisi
 Evaluasi dari sekumpulan ekspresi true dan false
 Menghasilkan nilai boolean (true atau false)
 Operator
 && (operator AND)
 || (operator OR)
x y x && y x || y
true true true true
true false false true
false true false true
false false false false
11/02/21 Algoritma & Pemrograman 38
Lazy Evaluation
 Operand kedua tidak dievaluasi apabila operand
pertama sudah cukup mengetahui hasil
keseluruhan ekspresi (lazy evaluation).
int a = 2, b = 3, c = 4;
System.out.println((a < b) && (a++ == b));
// output 1: ?
System.out.println((c != b) || (b-- > a));
// output 2: ?
 output 1: false, dan nilai a menjadi 3
 output 2: true, tapi nilai b tidak berubah
11/02/21 Algoritma & Pemrograman 39
Operator Negasi
 Negasi (!):
 Logical complement (kebalikan)
x !y
true false
false true

 Contoh: !(5 <=3) bernilai !(false) maka true

11/02/21 Algoritma & Pemrograman 40


Operator Bitwise: &, ^, dan |
 Operator and (&), xor (^), dan OR (|)
pada tataran bit
 Contoh:
 A = 217  11011001
 B = 163  10100011

 A & B = 129  10000001


 A | B = 251  11111011
 A ^ B = 122  01111010
11/02/21 Algoritma & Pemrograman 41
Operator Bitwise: ~
 Operator complement (~)
 Untuk memberikan hasil dengan masing-masing bit
berupa kebalikan dari bit operand
 Contoh:
A = 217

00000000000000000000000000000000000000000000000
00000000011011001

~A

11111111111111111111111111111111111111111111111
11111111100100110 = -218
11/02/21 Algoritma & Pemrograman 42
Operator Bitwise: <<
 Operator left shift (<<)
 untuk menggeser bit-bit ke kiri sebanyak operand sebelah kanan
 Identik dengan pengalian dengan bilangan 2
 x << n identik dengan x * 2n
 Contoh:
A = 29

0000000000000000000000000000000000000000000000000000
000000011101

A << 2

0000000000000000000000000000000000000000000000000000
000001110100 = 116 = 29 * 22
11/02/21 Algoritma & Pemrograman 43
Operator Bitwise: >>
 Operator right shift (>>)
 untuk menggeser bit-bit ke kanan sebanyak operand sebelah kanan
 Identik dengan pembagian dengan bilangan 2
 x >> n identik dengan x / 2n
 Contoh:
A = 29

000000000000000000000000000000000000000000000000000000
0000011101

A >> 2

000000000000000000000000000000000000000000000000000000
0000000111 = 7 = 29 / 22

11/02/21 Algoritma & Pemrograman 44


Operator Bitwise: >>> [1]
 Operator unsigned right shift (>>>) untuk
bilangan positif
 untuk menggeser bit-bit ke kanan sebanyak operand
sebelah kanan, dan bit terkanan diisi dengan nol
 32 bit
 Contoh:
A = 29
00000000000000000000000000011101

A >>> 2
00000000000000000000000000000111 = 7
11/02/21 Algoritma & Pemrograman 45
Operator Bitwise: >>> [2]
 Operator unsigned right shift (>>>) untuk bilangan negatif
 32 bit
 Contoh:
A = -29 (two’s complement of 29)
00000000000000000000000000011101 = 29
- 29 = complement dari 29 + 1
11111111111111111111111111100010 = ~29
00000000000000000000000000000001 = 1
---------------------------------------------------------------+
11111111111111111111111111100011 = -29

A >>> 2
00111111111111111111111111111000 = 1073741816

11/02/21 Algoritma & Pemrograman 46


Operator Assignment
 Evaluasi nilai ekspresi dan disimpan ke
variabel.
 Bentuk: x op= y (lebih efisien)  sx = x op y
 Contoh:
=, *=, /=, +=, &=
Misalkan: a %= 3 berarti: a = a % 3
 Eksekusi assignment: evaluasi assigment di sebelah
kanan, lalu nilainya disimpan ke variabel di sebelah
kiri.

11/02/21 Algoritma & Pemrograman 47


Presedensi & Asosiasi Operator [1]
int a = 2 + 3 * 5;
System.out.println(a); // cetak: ...
int b = 20 / 2 * 5;
System.out.println(b); // cetak: ...
int i = 2;
int j = i * (i = 3);
System.out.println(j); // cetak: ...
j = (i = 3) * i;
System.out.println(j); // cetak: ...

11/02/21 Algoritma & Pemrograman 48


Presedensi & Asosiasi Operator [2]

11/02/21 Algoritma & Pemrograman 49


Presedensi & Asosiasi Operator [3]

11/02/21 Algoritma & Pemrograman 50


Presedensi & Asosiasi Operator [4]

11/02/21 Algoritma & Pemrograman 51


Presedensi & Asosiasi Operator [5]

11/02/21 Algoritma & Pemrograman 52


Expression
 Ekspresi:
 Serangkaian variabel, operator, method, dan
konstanta yang dapat dievaluasi untuk menghasilkan
sebuah nilai.
 Tugas ekspresi adalah melakukan komputasi dan
menghasilkan suatu nilai (dapat disimpan pada suatu
variabel).
 Kumpulan ekspresi diakhir dengan tanda ; merupakan
suatu statement (perintah).
 Contoh:
ekspresi: 7 % 3
nilai ekspresi: 1
statement: cacah = 7 % 3;

11/02/21 Algoritma & Pemrograman 53


Expression: Value
 Nilai & tipe ekspresi:
 Bergantung pada unsur-unsur ekspresi:
 Contoh:
(3 < 5) bernilai “boolean” true
(3 + 5) bernilai int 8
(“3” + 5) bernilai string “35”
(3.0 + 5) bernilai double 8.0
 Contoh ekspresi dengan method
Math.floor (3.6) > 3.0
 method dengan hasil double 3.0
11/02/21 Algoritma & Pemrograman 54
Expression: Parentheses
 Ekspresi majemuk:
 Kita dapat membuat ekspresi majemuk yang terdiri dari
ekspresi sederhana asalkan tipe nilai dapat “compatible”.
 Kalau ekspresi lebih dari satu operator  operator mana
yang beroperasi lebih dahulu?
 Contoh: ekspresi 3 + 7 / 10 ?  1 atau 3?
 Aturan yang berlaku operator / mempunyai “precedence” lebih
tinggi dari operator +,
 Hasilnya adalah: 3
 Tapi: ekspresi (3 + 7) / 10 ?  bernilai 1
 Tanda kurung “(..)” menaikkan urutan precedence.
 Kurung paling dalam menyatakan precedence paling dahulu.
 Gunakan kurung untuk memastikan order operasi.

11/02/21 Algoritma & Pemrograman 55


Ringkasan [1]
 Dua jenis tipe data:
 Primitive types: numeric type, boolean type
 Reference types: class, array, String

11/02/21 Algoritma & Pemrograman 56


Ringkasan [2]

 Operator: Presedensi & Asosiasi


 Ekspresi
11/02/21 Algoritma & Pemrograman 57

Anda mungkin juga menyukai