Proses Sederhana
Pemrograman Dasar
2012
1
Learning Outcomes
Pada akhir pertemuan ini, diharapkan mahasiswa akan
mampu :
Memahami tentang proses sederhana (simple process)
berupa pemanggilan metode (fungsi) dan ekspresi serta
dapat menerapkannya dalam algorithma ataupun
pemrograman dengan bahasa pemrograman Java.
2
Outline Materi
Proses Sederhana (Simple Statement)
Ekspresi
Operator Penugasan (assignment)
Operator Logika
Operator Aritmetika
Operator Relasional
Operator Bitwise
3
Proses Sederhana
Dikatakan proses sederhana karena dipandang sebagai proses yang
hanya mempunyai sebuah aliran masukan dan sebuah aliran keluaran.
Proses sederhana dalam pemrograman komputer terdiri dari:
• Pemanggilan metode atau procedure atau fungsi
• Perhitungan arithmatika atau logika
atau
Var perhitungan A/L Ekspresi
5
Ekspresi
Contoh:
Dlm bhs pemrograman Java dapat ditulis:
cc+1
c=c+1; atau c+=1; atau ++c; atau c++;
6
Ekspresi
Komponen utama ekspresi 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.
Dalam pemrograman komputer penulisan perhitungan
arithmatika/logika TIDAK BOLEH BERTINGKAT. Contoh:
7
Untuk itu
Presedensi dan Assosiativitas Operator
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).
Assosiativitas berlaku untuk operator-operator yang memiliki
presedensi yang sama.
8
OPERATOR dengan
Prioritas dan Urutan Pengerjaan
URUTAN
KATEGORI SIMBOL NAMA PRIORITAS
PENGERJAAN
[] Elemen array
Indeks larik,
kurung dan () Merubah Prioritas 1 Kiri-Kanan
akses elemen
. Akses anggota/elemen
++ Pre-increment
-- Pre-decrement
! Logika not
~ Komplemen Bitwise
Operator Unary - 2 Kanan-Kiri
Unary minus
+ Unary plus
(type) Type casting
new Mengalokasi objek
Operator * Perkalian
aritmatika / Pembagian 3 Kiri-Kanan
perkalian % Sisa Pembagian
+ Penambahan
Operator
- Pengurangan 4 Kiri-Kanan
penambahan
+ String Concatenation
<< Geser bit keKiri
Pergeseran bit >> Geser bit ke Kanan 5 Kiri-Kanan
>>> Geser bit ke kanan positip
9
OPERATOR dengan
Prioritas dan Urutan Pengerjaan
URUTAN
KATEGORI SIMBOL NAMA PRIORITAS
PENGERJAAN
< Lebih kecil
<= Lebih kecil sama dg
Operator Relational > Lebih besar 6 Kiri-Kanan
>= Lebih besar sama dg
instanceof Tes referensi
== Sama dengan
Operator Relational 7 Kiri-Kanan
!= Tidak sama dengan
& Bitwise AND
8
& Boolean (Logika) AND
Operator Bitwise dan ^ Bitwise XOR
9 Kiri-Kanan
Boolean (Logika) ^ Boolean (Logika) XOR
| Bitwise OR
10
| Boolean (Logika) OR
&& Logika AND 11
Operator Logika Kiri-Kanan
|| Logika OR 12
Operator Ternary ?: Operator kondisi 13 Kanan-Kiri
=, +=, -=, *=,
Operator penugasan arithmatika
Operator Penugasan /=, %=
14 Kanan-Kiri
Majemuk &=, ^=, |=,
Operator penugasan bitwise
<<=, >>=
10
OPERATOR dengan
Prioritas dan Urutan Pengerjaan
Contoh: xy yz
x
xy yz
Ditulis dalam bhs pemrograman C:
x = (x * y + y * z)/(x * y – y * z);
1 2 4 5
3 6
11
Precedence dan Associativity
12
Operator
Didasarkan atas jumlah operand, operator dapat dibedakan
menjadi tiga jenis, yaitu :
• Unary operator
• Binary operator
• Ternary operator
13
Operator
Berdasarkan jenis operasinya, operator dalam bahasa
pemrograman Java dapat dikelompokkan :
• Operator Penugasan (assignment operator)
• Operator Logika
• Operator Aritmatika
• Operator Relasional
• Operator Bitwise
14
Operator Penugasan (assignment)
Termasuk Binary operator
Digunakan untuk memberikan nilai kepada suatu
Operand. Sintak sbb:
operand1 operator operand2;
Operand1 harus berupa variabel, sedangkan operand2
dapat sebarang operand termasuk variabel dari operand1.
Urutan pengerjaan (assosiativitas) operator penugasan
dari kanan ke kiri.
15
Operator Penugasan
Contoh
x = 2; // konstanta
x = y; // variabel lain
x = 2 * y; // ekspresi
a = sin (y); // fungsi
16
Operator Aritmatika
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 Priority x=(2+3)*5
17
Operator Aritmatika
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
18
Operator Aritmatika
Contoh:
n++; //post increment
++n; //pre increment
n--; //post decrement
--n; //pre decrement
19
Operator Aritmatika
Contoh:
20
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
21
Operator Aritmatika
22
Operator Aritmatika
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;
a=a^b; a ^= b;
23
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
24
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
25
Conditional Expressions
Conditional expression menggunakan ternary operator ?:
Sintak : exp1 ? exp2 : exp3;
• Jika exp1 bernilai true, maka exp2 dieksekusi. Sebaliknya jika exp1
bernilai false, maka exp3 dieksekusi.
26
Conditional Expressions
Contoh:
27
Operator Logika
Digunakan untuk melakukan operasi logika
Simbol Fungsi
&& AND
|| OR
! NOT
29
Operator Bitwise
Simbol Fungsi Contoh
& AND A&B
| OR A | B;
^ XOR A ^ B;
~ Complement 1 ~A;
30
Operator Bitwise
Operasinya dilakukan bit per bit
Contoh: a=24 Binernya: 011000
b=35 Binernya: 100011
int a=24; int b=35; int c; (a&b) per bit hasilnya :
c = a & b; //nilai c = 0 000000 desimalnya 0
c = a | b; //nilai c = 59 (a | b) per bit hasilnya :
111011 desimalnya 59
31
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.
32
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;
Di-komplemenkan hasilnya:
A=~B; //nilai A=0xFFFFFF3C;
0011 1100 atau dlm notasi
hexadecimal menjadi 3C
Catatan:
Penulisan bilangan hexadesimal pada
bhs pemrograman C menggunakan
awalan 0x atau 0X (nol-X).
33
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=78; Catatan:
78 binernya: 00100 1110
A = B>>3; //nilai A=9 Geser kekanan 3 bit: 000001001 = 9
A = B<<2; //nilai A=312 Geser kekiri 2 bit : 100111000 = 312
34
Kelas Math
Kelas Math terdapat pada paket java.lang yang diperlukan untuk
berbagai operasi matematika seperti sinus, cosinus, akar kuadrat dsb.
Kelas Math mempunyai 2 konstanta, yaitu PI dan E. Konstanta
tersebut didefinisikan sbb.:
public static final double E = 2.7182818284590452354;
public static final double PI = 3.14159265358979323846;
Kelas Math mempunyai sejumlah metode sebagaimana dapat
dilihat pada tabel berikut:
35
Metode di Kelas Math
No Tipe Hasil Metode Keterangan
Menghasilkan nilai absolute bertipe
1 static double abs(double a)
double
Menghasilkan nilai absolute bertipe
2 static float abs(float a)
float
Menghasilkan nilai absolute bertipe
3 static int abs(int a)
int
Menghasilkan nilai absolute bertipe
4 static long abs(long a)
long
Menghasilkan nilai arc cosine
5 static double acos(double a)
bertipe double (a berjangkauan 0..pi)
Menghasilkan nilai arc sine bertipe
6 static double asin(double a)
double (a berjangkauan –pi/2..pi/2)
36
Metode di Kelas Math
No Tipe Hasil Metode Keterangan
Menghasilkan nilai arc tangent
7 static double atan(double a) bertipe double (a berjangkauan
–pi/2..pi/2)
Menghasilkan nilai komponen theta
pada koordinat polar dengan tipe
atan2(double y,
8 static double double (x dan y menyatakan
double x)
komponen x dan y pada koordinat
persegi)
Menghasilkan nilai akar pangkat tiga
9 static double cbrt(double a)
bertipe double
Menghasilkan nilai terkecil yg lebih
10 static double ceil(double a) besar atau sama dengan a bertipe
double
37
Metode di Kelas Math
No Tipe Hasil Metode Keterangan
38
Metode di Kelas Math
No Tipe Hasil Metode Keterangan
Menghasilkan nilai cosine bertipe
14 static double cos(double a)
double (a dalam satuan radian)
Menghasilkan nilai hyperbolic
15 static double cosh(double x)
cosine bertipe double.
16 static double exp(double a) Menghasilkan nilai ea bertipe double
Menghasilkan nilai ea-1 bertipe
17 static double expm1(double x)
double
Menghasilkan nilai terbesar yg lebih
18 static double floor(double a) kecil atau sama dengan a bertipe
double
Menghasilkan nilai unbiased
getExponent
19 static int exponent yang digunakan dalam
(double d)
representasi dari a bertipe double.
39
Metode di Kelas Math
No Tipe Hasil Metode Keterangan
Menghasilkan nilai unbiased
getExponent
20 static int exponent yang digunakan dalam
(float f)
representasi dari a bertipe float.
Menghasilkan nilai sqrt (x2 + y2)
hypot(double x,
21 static double tanpa intermediate overflow atau
double y)
underflow.
IEEEremainder Menghasilkan nilai hasil pembagian
22 static double (double f1, f1 dan f2 dengan standart IEEE754
double f2) dan bertipe double.
Menghasilkan nilai logarithma a
23 static double log(double a)
(elog a) bertipe double.
Menghasilkan nilai logarithma (10)
24 static double log10(double a)
dari a (10log a) bertipe double.
40
Metode di Kelas Math
No Tipe Hasil Metode Keterangan
Menghasilkan nilai logaritma natural
25 static double log1p(double x)
dari jumlah argumen dan 1.
max(double a, Menghasilkan nilai maksimum dari a
26 static double
double b) dan b bertipe double.
max(float a, Menghasilkan nilai maksimum dari a
27 static float
float b) dan b bertipe float.
max(int a, Menghasilkan nilai maksimum dari a
28 static int
int b) dan b bertipe int.
max(long a, Menghasilkan nilai maksimum dari a
29 static long
long b) dan b bertipe long.
min(double a, Menghasilkan nilai minimum dari a
30 static double
double b) dan b bertipe double.
41
Metode di Kelas Math
No Tipe Hasil Metode Keterangan
min(float a, Menghasilkan nilai minimum dari a
31 static float
float b) dan b bertipe float.
min(int a, Menghasilkan nilai minimum dari a
32 static int
int b) dan b bertipe int.
min(long a, Menghasilkan nilai minimum dari a
33 static long
long b) dan b bertipe long.
nextAfter Menghasilkan nilai decimal pecahan
(double start, berdekatan dengan argumen pertama
34 static double
double ke arah argumen kedua bertipe
direction) double.
nextAfter Menghasilkan nilai decimal pecahan
(float start, berdekatan dengan argumen pertama
35 static float
double ke arah argumen kedua bertipe float.
direction)
42
Metode di Kelas Math
No Tipe Hasil Metode Keterangan
Menghasilkan nilai decimal pecahan
36 static double nextUp(double d) berdekatan dengan d ke arah positif
tak hingga bertipe double.
Menghasilkan nilai decimal pecahan
37 static float nextUp(float f) berdekatan dengan f ke arah positif
tak hingga bertipe float.
pow(double a,
38 static double Menghasilkan nilai ab bertipe double.
double b)
Menghasilkan nilai acak antara 0.0
39 static double random()
dan 1.0 bertipe double.
Menghasilkan nilai bilangan bulat
40 static double rint(double a)
terdekat dari a bertipe double.
43
Metode di Kelas Math
No Tipe Hasil Metode Keterangan
Menghasilkan nilai bilangan bulat
41 static long round(double a)
terdekat dari a bertipe long.
Menghasilkan nilai bilangan bulat
42 static int round(float a)
terdekat dari a bertipe int.
Menghasilkan nilai bertipe double,
yaitu nol jika argumen adalah nol,
43 static double signum(double d)
1,0 jika argumen lebih besar dari nol,
-1.0 jika argumen kurang dari nol.
Menghasilkan nilai bertipe float,
yaitu nol jika argumen adalah nol,
44 static float signum(float f)
1,0 jika argumen lebih besar dari nol,
-1.0 jika argumen kurang dari nol.
44
Metode di Kelas Math
No Tipe Hasil Metode Keterangan
Menghasilkan nilai sine bertipe
45 static double sin(double a
double (a dalam satuan radian)
Menghasilkan nilai hyperbolic sine
46 static double sinh(double x)
bertipe double.
Menghasilkan nilai akar kuadrat dari
47 static double sqrt(double a)
a bertipe double.
Menghasilkan nilai tangent bertipe
48 static double tan(double a)
double (a dalam satuan radian)
Menghasilkan nilai hyperbolic
49 static double tanh(double x)
tangent bertipe double.
Menghasilkan nilai sudut dalam
toDegrees
50 static double derajat sebagai hasil konversi dari
(double angrad)
argument dalam radian.
45
Metode di Kelas Math
No Tipe Hasil Metode Keterangan
Menghasilkan nilai sudut dalam
toRadians
51 static double radian sebagai hasil konversi dari
(double angdeg)
argument dalam derajat.
46
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;
47
Latihan
Sebutkan contoh operator yang termasuk :
1. Unary Operator
2. Binary Operator
3. Ternary Operator
48
Latihan
Apakah keluaran yang akan ditampilkan di layar monitor bila
program di bawah berhasil dieksekusi?
49
Latihan
• Bagaimanakah hasil keluaran yang ditampilkan di
layar monitor dari program di bawah?, Jelaskan?
• Bila tipe data x diganti dengan float, jelaskan apa
hasilnya, mengapa?
50
Latihan
51
Latihan
52
Latihan
z = (n > 0) ? f : b;
Perhatikan conditional expression diatas, bolehkah sekiranya
variabel f dan b memiliki tipe data yang berbeda?
53