SlideShare a Scribd company logo
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 1
STMIK Bumigora Mataram
www.stmikbumigora.ac.id
AlgoritmaDAN
Pemrograman
Java
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 2
PRAKATA
Puji syukur saya ucapkan kepada Allah SWT, Tuhan Yang Maha Esa karena berkat
bimbingan-Nya Modul sederhana ini bisa diselesaikan tepat pada waktunya. Terima kasih saya
ucapkan kepada orang tua yang selalu membimbing dan mendoakan saya. Terima kasih juga
saya ucapkan kepada teman-teman yang selalu memberi semangat dan motivasi.
Perkembangan dunia yang semakin cepat membawa banyak pengaruh dan perubahan
dalam kehidupan, salah satunya pemrograman. Pemrograman merupakan hal yang sangat
menarik. Hal tersebut menyebabkan pemrograman semakin diminati oleh banyak kalangan,
sehingga hampir disetiap profesi selalu ada penerapan teknologi pemrograman.
Modul ini ditujukan untuk siapa saja yang ingin mengenal pemrograman. Buku ini
disusun secara ringkas, padat dan jelas, sehingga akan sangat mudah dipelajari. Buku ini
memuat pengantar algoritma dan pemrograman dengan bahasa Java, sehingga hanya akan
membahas dasar-dasar pemrograman saja seperti: tipe data, percabangan, perulangan, larik,
metode, rekursi, pengurutan dan pencarian.
Buku ini ditulis dengan sasaran untuk memperkenalkan pemrograman Java kepada
kalangan akademis, khususnya mahasiswa informatika. Untuk lebih mendalami, disarankan
untuk lanjut mempelajari buku-buku berikutnya seperti: Metode Analisis Perancangan
Program, Struktur Data, Pemrograman Berorientasi Objek, Basis Data, dan lain-lain.
Akhir kata, saya ucapkan terima kasih.
Mataram, September 2016
Muhammad Yunus
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 3
DAFTAR ISI
PRAKATA i
DAFTAR ISI ii
(1) TIPE DATA 1
1.1 Definisi 1
1.2 Tipe Dasar 2
1.3 Penulisan Tipe Dasar 2
1.4 Penulisan Tipe Bentukan 3
1.5 Operator 4
1.6 Komentar 5
(2) PERCABANGAN 6
2.1 Percabangan If 6
2.2 Percabangan Case 8
(3) PERULANGAN 10
3.1 Perulangan For 10
3.2 Perulangan While-Do 11
3.3 Perulangan Repeat-Until 12
(4) LARIK 13
4.1 Definisi 13
4.2 Array 1 Tingkat 14
4.3 Array 2 Tingkat 15
(5) METODE 16
5.1 Definisi 16
5.2 Prosedur 16
5.3 Fungsi 19
(6) REKURSI 20
6.1 Definisi 20
6.2 Bentuk Umum Rekursi 20
6.3 Contoh Rekursi 21
(7) PENGURUTAN 24
7.1 Pengurutan Sisipan 24
7.2 Pengurutan Seleksi 26
7.3 Pengurutan Gelembung 28
(8) PENCARIAN 30
Pencarian Beruntun 30
Pencarian Bagi Dua 32
REFERENSI iii
TENTANG iv
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 4
1. TIPE DATA
1.1 Definisi
Setiap data memiliki informasi yang khas. Informasi inilah yang membedakan suatu
data dengan data yang lain. Informasi yang dimiliki oleh suatu data antara lain tipe data,
variabel dan nilai.
Tipe data adalah jenis suatu data. Jenis data bisa berupa bilangan bulat, bilangan
pecahan, karakter dsb. Variabel adalah nama suatu data. Nama inilah yang merupakan ciri
pembeda utama suatu data dengan data lainnya. Nilai adalah harga suatu data. Nilai inilah
yang nantinya dioperasikan saat program berjalan.
contoh :
1 Data : umur mahasiswa 2 Data : kecepatan mobil
Tipe data : bilangan bulat Tipe data : bilangan pecahan
Variabel : umur_mhs Variabel : v
Nilai : 17 Nilai : 86.77792
3 Data : alamat rumah 4 Data : huruf kelima
Tipe data : kalimat Tipe data : karakter
Variabel : almt Variabel : fifth_char
Nilai : “Jl. Sekeloa No. 48A” Nilai : “e”
5 6Data : nilai π Data : pengecek kebenaran
Tipe data : konstanta Tipe data : logika
Variabel : pi Variabel : pengecek_kebenaran
Nilai : 3.14 Nilai : true
Secara umum tipe data dibagi dua, yaitu tipe dasar dan tipe bentukan. Tipe dasar
adalah tipe yang sudah tersedia dalam suatu bahasa pemrograman, misalnya bilangan bulat
(integer), bilangan pecahan (real), tetapan (const), karakter (char), kalimat (string) dan logika
(boolean). Sedangkan tipe bentukan adalah tipe yang dibuat sendiri dengan menggabungkan
tipe dasar, misalnya larik (array) dan rekaman (record).
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 5
1.2 Tipe Dasar
No Tipe Data Algoritma Java Contoh
1 Bilangan bulat integer long -25, 0, 32
int
short
2 Bilangan pecahan real float -7.5, 0.25, 12E-2
double
3 Konstanta const final long π (3.14)
final int
final short
final float
final double
4 Karakter character char A, z, 1, spasi, enter
5 Kumpulan string String “ayam”, “1250”
karakter, bisa
berupa kalimat
atau kata
6 Logika boolean boolean true, false
1.3 Penulisan Tipe Dasar
Algoritma Java
namavariabel : tipedata tipedata namavariabel;
contoh :
No Tipe Data Algoritma Java
1 Bilangan bulat n : integer int n;
jumlah : integer int jumlah;
bilangan : integer long bilangan;
2 Bilangan pecahan x : real double x;
hasilpembagian : real double hasilpembagian;
biaya : real float biaya;
3 Konstanta pi ←3.14 : const final double pi = 3.14;
4 Karakter inisial : char char inisial;
hurufkelima : char char hurufkelima;
5 Kata masukanx : string String masukanx;
namax : string String namax;
nimx : string String nimx;
6 Logika apakahbenar : boolean boolean apakahbenar;
kondisimengulang : boolean boolean kondisimengulang;
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 6
1.4 Penulisan Tipe Bentukan
Keterangan Algoritma Java
Deklarasi tipe type namatipebentukan : (semua_ enum namatipebentukan
bentukan nilai_yang_diperbolehkan) {
sebagai semua_nilai_yang_
prosedur diperbolehkan;
}
Deklarasi namavariabel : namatipebentukan namatipebentukan namavariabel;
variabel
Pengisian nilai namavariabel ← namavariabel = namatipebentukan.
variabel nilai_yang_diperbolehkan nilai_yang_diperbolehkan;
contoh 1 :
Sebagai contoh kita akan membuat tipe bentukan umur mahasiswa yang nilainya antara lain
17, 18, 19, 20, 21, 22, 23.
Keterangan Algoritma Java
Deklarasi tipe type umurmahasiswa : (17, 18, 19, enum umurmahasiswa
bentukan 20, 21, 22, 23) {
sebagai 17, 18, 19, 20, 21, 22, 23;
prosedur }
Deklarasi umursaya : umurmahasiswa umurmahasiswa umursaya;
variabel
Pengisian nilai umursaya ← 17 umursaya = umurmahasiswa.17;
variabel
contoh 2 :
Contoh lainnya, seandainya kita akan membuat tipe bentukan hari yang nilainya antara lain
senin, selasa, rabu, kamis, jumat, sabtu, minggu.
Keterangan Algoritma Java
Deklarasi tipe type hari : (senin, selasa, rabu, enum hari
bentukan kamis, jumat, sabtu, minggu) {
sebagai senin, selasa, rabu, kamis,
prosedur jumat, sabtu, minggu;
}
Deklarasi today : hari hari today;
variabel
Pengisian nilai today ← minggu today = hari.minggu;
variabel
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 7
1.5 Operator
Operator adalah media yang digunakan untuk memproses data sehingga memberikan
hasil. Secara umum operator dibagi tiga, yaitu operator aritmatika, operator relasi dan
operator logika. Operator aritmatika digunakan untuk mengoperasikan data secara
matematika, misalnya (+), (-). Operator relasi digunakan untuk membandingkan dua buah
data, misalnya (<), (>). Operator logika digunakan untuk mengaitkan dua buah kondisi menjadi
sebuah kondisi, misalnya (dan), (atau).
(a) Operator aritmatika
No Jenis Operasi Tipe Tipe Algoritma Java
Masukan Keluaran
1 Penjumlahan (+) integer integer + +
real real
2 Pengurangan (-) integer integer - -
real real
3 Perkalian (*) integer integer * *
real real
4 Pembagian (/) integer integer / /
real real
5 Bilangan bulat integer integer div /
pembagian (div)
6 Sisa pembagian (mod) integer integer mod %
(b) Operator relasi
No Jenis Operasi Algoritma Java
1 Sama dengan (=) = ==
2 Tidak sama dengan (≠) <> !=
3 Lebih dari (>) > >
4 Kurang dari (<) < <
5 Lebih dari sama dengan (≥) ≥ >=
6 Kurang dari sama dengan (≤) ≤ <=
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 8
(c) Operator logika
No Jenis Operasi Algoritma Java
1 Dan (and) AND &&
2 Atau (or) OR ||
3 Bukan (negasi) NOT !
Kondisi A Kondisi B A dan B A atau B Bukan A Bukan B
B B B B S S
B S S B S B
S B S B B S
S S S S B B
Tabel kebenaran untuk operator logika
1.6 Komentar
Komentar adalah bagian kode program yang tidak dibaca saat program dijalankan.
Komentar sangatlah penting untuk memperjelas kode program agar lebih mudah dipahami.
Berikut ini adalah tata cara penulisan komentar.
Jenis Komentar Algoritma Java
Komentar untuk satu baris {komentar} //komentar
Komentar untuk beberapa baris { /*
.......... ..........
komentar komentar
.......... ..........
} */
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 9
2. PERCABANGAN
Percabangan atau branching merupakan sebuah blok program yang menyatakan
bahwa sebuah aksi akan dijalankan jika kondisi sebuah percabangan terpenuhi. Pada
umumnya konsep percabangan dibagi dua, yaitu percabangan if dan percabangan case.
2.1 Percabangan If
(a) Satu kasus
bentuk umum :
Algoritma Java
if (kondisi) then if (kondisi)
aksi {
end if aksi;
}
contoh :
Algoritma Java
if (bilangan > 0) then if (bilangan > 0)
write (“bilangan positif”) {
end if System.out.println(“bilangan positif”);
}
(b) Dua kasus
bentuk umum :
Algoritma Java
if (kondisi1) then if (kondisi1)
aksi1 {
else {bukan kondisi1} aksi1;
aksi2 }
end if else //bukan kondisi1
{
aksi2;
}
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 10
contoh :
Algoritma Java
if (bilangan mod 2 = 0) then if (bilangan % 2 == 0)
write (“bilangan genap”) {
else {bilangan mod 2 <> 0} System.out.println(“bilangan genap”);
write (“bilangan ganjil”) }
end if else // bilangan mod 2 != 0
{
System.out.println(“bilangan ganjil”);
}
(c) Banyak kasus
bentuk umum :
Algoritma Java
if (kondisi1) then if (kondisi1)
aksi1 {
else aksi1;
if (kondisi2) then }
aksi2 else if (kondisi2)
else {
if (kondisi3) then aksi2;
aksi3 }
else else if (kondisi3)
if (kondisin) then {
aksin aksi3;
else {bukan kondisi 1, 2, 3, n} }
aksix else if (kondisin)
end if {
end if aksin;
end if }
end if else //bukan kondisi 1, 2, 3, n
{
aksix;
}
contoh :
Algoritma Java
if (hobi = 1) then if (hobi==1)
write (“jalan-jalan”) {
end if System.out.println(“jalan-jalan”);
else if (hobi = 2) then }
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 11
write (“bermain”) else if (hobi==2)
end if {
else if (hobi = 3) then System.out.println(“bermain”);
write (“nonton”) }
end if else if (hobi==3)
else if (hobi = 4) then {
write (“dengar lagu”) System.out.println(“nonton”);
end if }
else {hobi <> 1, 2, 3, 4} else if (hobi==4)
write (“belajar”) {
end else System.out.println(“dengar lagu”);
}
else //hobi != 1, 2, 3, 4
{
System.out.println(“belajar”);
}
2.2 Percabangan Case
bentuk umum :
Algoritma Java
case (namavariabel) switch (namavariabel)
namavariabel = 1 : aksi1 {
namavariabel = 2 : aksi2 case 1 : aksi1;
namavariabel = 3 : aksi3 break;
namavariabel = 4 : aksi4 case 2 : aksi2;
namavariabel = 5 : aksi5 break;
namavariabel = n : aksin case 3 : aksi3;
otherwise : aksix break;
end case case 4 : aksi4;
break;
case 5 : aksi5;
break;
case n : aksin;
break;
default : aksix;
}
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 12
contoh :
Algoritma Java
case (hari) switch (hari)
hari = 1 : write (“senin”) {
hari = 2 : write (“selasa”) case 1 : System.out.println(“senin”);
hari = 3 : write (“rabu”) break;
hari = 4 : write (“kamis”) case 2 : System.out.println(“selasa”);
hari = 5 : write (“jumat”) break;
hari = 6 : write (“sabtu”) case 3 : System.out.println(“rabu”);
hari = 7 : write (“minggu”) break;
otherwise : write (“salah”) case 4 : System.out.println(“kamis”);
end case break;
case 5 : System.out.println(“jumat”);
break;
case 6 : System.out.println(“sabtu”);
break;
case 7 : System.out.println(“minggu”);
break;
default : System.out.println(“salah”);
}
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 13
3. PERULANGAN
Perulangan atau looping adalah bagian kode program yang bertugas melakukan suatu
proses terus-menerus sampai kondisi berhenti terpenuhi. Secara umum perulangan dibagi tiga,
yaitu perulangan for, perulangan while-do dan perulangan repeat-until.
3.1 Perulangan For
Perulangan for digunakan jika sudah dapat dipastikan kapan pengulangan berhenti.
Dengan kata lain, jumlah perulangan yang dibutuhkan sudah diketahui sebelumnya. Ada dua
model perulangan dalam for, yaitu perulangan for naik dan perulangan for turun.
(a) Perulangan for
naik bentuk umum :
Algoritma Java
for namavariabel ← nilaiawal to nilaiakhir do for (namavariabel = nilaiawal ; namavariabel
proses_perulangan operatorrelasi nilaiakhir ; namavariabel++)
end for {
proses_perulangan;
}
contoh :
Algoritma Java
for i ← 1 to 10 do for (i=1 ; i<=10 ; i++)
write(“angka ”, i) {
end for System.out.println(“angka ” +i);
}
(b) Perulangan for turun
bentuk umum :
Algoritma Java
for namavariabel ← nilaiawal downto for (namavariabel = nilaiawal ; namavariabel
nilaiakhir do operatorrelasi nilaiakhir ; namavariabel--)
proses_perulangan {
end for proses_perulangan;
}
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 14
contoh :
Algoritma Java
for i ← 10 downto 1 do for (i=10 ; i>=1 ; i--)
write(“angka ”, i) {
end for System.out.println(“angka ” +i);
}
3.2 Perulangan While-Do
Perulangan while-do biasanya digunakan jika banyaknya perulangan tidak diketahui.
Misalnya pada program login password, dimana program akan terus mengulang meminta
password selama password masih salah, dan jika password benar proses perulangan berhenti.
bentuk umum :
Algoritma Java
while kondisimengulang do while (kondisimengulang)
aksi {
end while aksi;
}
contoh :
Algoritma Java
password : string String password;
write (“masukkan password”) password = JoptionPane.showInput
read (password) Dialog(null,”masukkan password”);
while password <> “123” do while (!password.equals(“123”))
write (“password salah”) {
write (“masukkan password”) JoptionPane.showMessageDialog
read (password) (null,”password salah”);
end while
password = JoptionPane.showInput
Dialog(null,”masukkan password”);
}
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 15
3.3 Perulangan Repeat-Until
Perulangan repeat-until juga dapat digunakan jika jumlah perulangan tidak diketahui,
namun prinsip kerjanya berbeda dengan perulangan while-do. Pada perulangan while-do
program akan menyesuaikan variabel dengan kondisi perulangan, jika tidak memenuhi maka
perulangan tidak dilakukan. Berbeda dengan repeat-until karena minimal perulangan akan
dijalankan sekali sebelum masuk ke kondisi perulangan. Hal tersebut dapat terjadi karena
perulangan repeat-until meletakkan kondisi perulangannya dibagian akhir.
bentuk umum :
Algoritma Java
repeat do
aksi {
until kondisiberhenti aksi;
}
while (kondisiperulangan);
contoh :
Algoritma Java
password : string String password;
repeat do
read (password) {
until password = “sandi123” password = JoptionPane.showInput
Dialog(null,”masukkan password”);
}
while (!password.equals(“sandi123”));
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 16
4. LARIK
4.1 Definisi
Larik atau array dapat didefinisikan sebagai tabel yang terstruktur. Sebuah array terdiri
dari tabel-tabel yang dapat diisi dengan variabel-variabel bertipe sama. Array bertipe integer
hanya dapat menampung integer, array bertipe char hanya dapat menampung karakter. Tiap
tabel memiliki indeks (nomor tabel), pada java indeks dimulai dari 0 (nol). Tiap tabel dapat diisi
oleh satu variabel.
Secara umum array dibedakan berdasarkan tingkatannya. Array 1 tingkat hanya
memiliki tabel utama. Array 2 tingkat memiliki tabel utama dan sub-tabel. Array 3 tingkat
memiliki tabel utama, sub-tabel dan sub-sub-tabel. Untuk memperjelas, perhatikan ilustrasi
berikut:
Array 1 tingkat : [4]
indeks
0 1 2 3 tingkat 1
Array 2 tingkat : [4] [2]
indeks 0 1 2 3 tingkat 1
0.0 0.1 1.0 1.1 2.0 2.1 3.0 3.1 tingkat 2
Array 3 tingkat : [2] [2] [2]
0 1 tingkat 1
indeks 0.0 0.1 1.0 1.1 tingkat 2
0.0.0 0.0.1 0.1.0 0.1.1 1.0.0 1.0.1 1.1.0 1.1.1 tingkat 3
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 17
4.2 Array 1 Tingkat
Array 1 tingkat hanya terdiri atas satu jenis indeks. Saat mendeklarasikan array kita
harus menentukan banyaknya indeks dan tipe data untuk variabel.
(a) Deklarasi array
bentuk umum :
Algoritma Java
namaarray : array [1...jumlahindeks] of tipedata namaarray [] = new tipedata
tipedata [jumlahindeks];
contoh :
Algoritma Java
hari : array [1...7] of string String hari [] = new String [7];
ruang : array [1...100] of integer int ruang [] = new int [100];
(b) Mengisi indeks array
Bentuk umum :
Algoritma Java
namaarray[indeks] ← nilai namaarray[indeks] = nilai;
contoh :
Algoritma Java
hari[1] ← “senin” hari[0] = “senin”;
ruang[1] ← 45 ruang[0] = 45;
(c) Mengakses nilai pada indeks tertentu
Bentuk umum :
Algoritma Java
namaarray[indeks] namaarray[indeks];
contoh :
Algoritma Java
hari[3] hari[2];
ruang[50] ruang[49];
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 18
4.3 Array 2 Tingkat
Pada dasarnya konsep array 2 tingkat sama seperti array 1 tingkat, hanya saja pada
deklarasi array 2 tingkat ada dua macam indeks yang harus kita tentukan. Salah satu
penggunaan array 2 tingkat adalah pada operasi matriks, dimana saat mendeklarasikan array
kita harus menentukan jumlah indeks kolom dan jumlah indeks baris.
Berikut ini adalah penjelasan untuk array matriks yang terdiri atas 2 kolom dan 3 baris.
(a) Deklarasi array
bentuk umum :
Algoritma Java
namaarray : array tipedata namaarray [] [] = new tipedata
[1...jumlah_indeks_pertama] [jumlah_indeks_pertama]
[1...jumlah_indeks_kedua] of tipedata [jumlah_indeks_kedua];
contoh :
Algoritma Java
matriks : array [1...2] [1...3] of integer int matriks [] [] = new int [2] [3];
(b) Mengisi indeks array
Bentuk umum :
Algoritma Java
namaarray[indekspertama] [indekskedua] ← namaarray[indekspertama] [indekskedua] =
nilai nilai;
contoh :
Algoritma Java
matriks[1] [3]← 2 matriks[0][2] = 2;
(c) Mengakses nilai pada indeks tertentu
Bentuk umum :
Algoritma Java
namaarray[indekspertama] [indekskedua] namaarray[indekspertama] [indekskedua];
contoh :
Algoritma Java
matriks[2] [2] matriks[1] [1];
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 19
5. METODE
5.1 Definisi
Metode atau method adalah sebuah blok program yang berisikan instruksi singkat
yang mengerjakan tugas atau proses tertentu. Metode bersifat khas, artinya metode yang satu
sangat berbeda dengan metode lainnya. Metode memiliki fungsi yang unik, sehingga dengan
adanya metode adalam sebuah program, program akan menjadi semakin sederhana.
Saat kita bertujuan membuat program yang berisikan beberapa instruksi yang sama,
menggunakan metode merupakan pilihan yang tepat. Kita cukup membuat sebuah metode
yang berisikan instruksi. Selanjutnya, jika kita membutuhkan instruksi tersebut, kita tinggal
memanggil metode yang telah kita buat tadi, demikian seterusnya.
Jadi kesimpulannya, dengan metode kita tidak perlu membuat beberapa instruksi yang
sama dalam sebuah program. Saat instruksi dibutuhkan, kita tinggal memanggil metode yang
memuat instruksi tersebut. Metode dapat dipanggil/digunakan lebih dari sekali.
Dalam Java, ada dua macam metode, yaitu Prosedur dan Fungsi. Prosedur merupakan
metode yang hanya berisikan proses, sedangkan Fungsi adalah metode yang berisikan proses
dan menghasilkan nilai keluaran.
5.2 Prosedur
Berdasarkan jenis input-output prosedur dibagi menjadi empat macam, yaitu Prosedur
Input, Prosedur Output, Prosedur Input dan Output, dan Prosedur Input/Output. Berikut ini
adalah cara kerja dari masing-masing jenis prosedur tersebut.
Prosedur Input. Pada awalnya prosedur sudah mendeklarasikan variabel input.
Selanjutnya variabel input dimasukkan kedalam prosedur. Setelah prosedur dijalankan nilai
variabel input tersebut tidak berubah.
Prosedur Output. Pada awalnya prosedur sudah mendeklarasikan variabel output. Nilai
variabel output akan didefinisikan saat prosedur dijalankan.
Prosedur Input dan Output. Pada awalnya prosedur sudah mendeklarasikan variabel
input dan variabel output. Selanjutnya variabel input dimasukkan kedalam prosedur. Setelah
prosedur dijalankan nilai variabel input tidak berubah. Hasil yang diperoleh dari proses akan
didefinisikan sebagai nilai output.
Prosedur Input/Output. Pada awalnya prosedur sudah mendeklarasikan variabel
input/output. Selanjutnya variabel input dimasukkan kedalam prosedur. Setelah prosedur
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 20
dijalankan nilai variabel input akan berubah yang kemudian akan didefinisikan menjadi
variabel output.
(a) Deklarasi prosedur
Cara mendeklarasikan prosedur berbeda-beda, tergantung pada jenisnya. Pada tabel
dibawah ini akan dijelaskan cara mendeklarasikan setiap jenis prosedur tersebut.
bentuk umum :
Jenis Algoritma Java
Prosedur procedure namaprosedur (input : public static void namaprosedur
Input namavariabel1 : tipedata1, (tipedata1 namavariabel1,
namavariabel-n : tipedata-n) tipedata-n namavariabel-n)
{
{proses} //proses
end procedure }
Prosedur procedure namaprosedur (output : public static void namaprosedur
Output namavariabel1 : tipedata1, (tipedata1 namavariabel1,
namavariabel-n : tipedata-n) tipedata-n namavariabel-n)
{
{proses} //proses
end procedure }
Prosedur procedure namaprosedur (input : public static void namaprosedur
Input dan namavariabelin1 : tipedatain1, (tipedatain1 namavariabelin1,
Output namavariabelin-n : tipedatain-n, tipedatain-n namavariabelin-n,
output : tipedataout1 namavariabelout1,
namavariabelout1 : tipedataout1, tipedataout-n namavariabelout-n)
namavariabelout-n : tipedataout-n) {
{proses} //proses
end procedure }
Prosedur procedure namaprosedur (input/ public static void namaprosedur
Input/Output output : namavariabel1 : tipedata1, (tipedatainout1 namavariabelinout1,
namavariabel-n : tipedata-n) tipedatainout-n tipedatainout-n)
{
{proses} //proses
end procedure }
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 21
contoh :
Jenis Algoritma Java
Prosedur procedure tulis (input : a : integer) public static void tulis (int a)
Input {
write (a) System.out.print(a);
end procedure }
Prosedur procedure baca (output : a : integer) public static void baca (int a)
Output {
a ← read (a) a = JoptionPane.showInputDialog
(null,“masukkan nilai “ +a);
end procedure }
Prosedur procedure nilailain (input : a : integer public static void nilailain (int a, int b)
Input dan output : b : integer) {
Output
b ← a+5 b = a+5;
end procedure }
Prosedur procedure nilaibaru (input/output : public static void nilaibaru (int a)
Input/Output a : integer) {
a ← a*3 a = a*3;
end procedure }
(b) Memanggil prosedur
Setelah prosedur dideklarasikan, tentu saat instruksi pada prosedur tersebut
dibutuhkan kita akan memanggil prosedurnya. Berikut ini adalah bentuk umum dan contoh
memanggil prosedur.
bentuk umum :
Algoritma Java
namaprosedur (variabelinput) namaprosedur (variabelinput);
contoh :
Algoritma Java
tulis (10) tulis (10);
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 22
5.3 Fungsi
Fungsi adalah metode yang berisikan satu atau sekumpulan proses yang kemudian
menghasilkan nilai keluaran.
(a) Deklarasi fungsi
bentuk umum :
Algoritma Java
function namafungsi public static tipedataout namafungsi
(namavariabelin1 : tipedatain1, (tipedatain1 namavariabelin1,
namavariabelin-n : tipedatain-n) -> tipedatain-n namavariabelin-n)
tipedataout {
{proses} //proses
return (variabeloutput) return(variabeloutput);
end function }
contoh :
Algoritma Java
function rumuskali (a : integer, b : integer) -> public static int rumuskali (int a, int b)
integer {
hasil : integer int hasil;
hasil ← a*b hasil = a*b;
return (hasil) return (hasil);
end function }
(b) Memanggil fungsi
bentuk umum :
Algoritma Java
namavariabel ← namafungsi (variabelinput) namavariabel = namafungsi (variabelinput);
contoh :
Algoritma Java
hasilperkalian ← rumuskali (2,5) hasilperkalian = rumuskali (2,5);
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 23
6. REKURSI
6.1 Definisi
Rekursi atau recurrence dapat didefinisikan sebagai metode yang mengulang
prosesnya sendiri. Saat sebuah rekursi dipanggil, proses akan dijalankan dan diulang sampai
kondisi berhenti terpenuhi.
Dua hal yang selalu ada dalam sebuah rekursi adalah Blok Rekursi dan Blok Basis. Blok
Rekursi merupakan kode program yang memuat kondisi mengulang. Blok inilah yang nantinya
berfungsi mengulang prosesnya terus-menerus. Blok Basis merupakan kode program yang
memuat kondisi berhenti. Blok inilah yang menyebabkan sebuah rekursi menghentikan
prosesnya, sehingga diperoleh hasil akhir.
Rekursi digunakan pada metode yang menggunakan perhitungan/proses berulang,
semisal perkalian, pangkat, dan faktorial. Perkalian merupakan perhitungan berulang dari
proses penjumlahan. Pangkat merupakan perhitungan berulang dari proses perkalian. Begitu
pula faktorial yang merupakan perhitungan berulang dari proses perkalian mundur.
6.2 Bentuk Umum Rekursi
(a) Konsep
Untuk menyusun rekursi, terlebih dahulu kita harus menentukan konsep. Konsep
bukanlah bagian program, melainkan hanya merupakan cara kerja atau proses dasar sebuah
rekursi. Konsep ini akan memudahkan kita dalam menyusun rekursi kedalam kode program.
Konsep berisikan urutan/langkah terperinci yang menjelaskan proses rekursi dari awal
sampai akhir. Konsep terdiri atas permisalan, langkah-langkah, dan hasil akhir. Permisalan
dapat berisikan nilai awal. Langkah-langkah meliputi urutan dan hasil sementara di setiap
perulangan. Hasil akhir merupakan nilai dari proses rekursi.
(b) Deklarasi rekursi
Telah kita ketahui bersama bahwa rekursi merupakan metode. Oleh sebab itu cara
mendeklarasikan rekursi mirip dengan cara mendeklarasikan metode. Ada sedikit perbedaan
dalam mendeklarasikan rekursi, yaitu kita harus memisahkan antara blok perulangan dan blok
penghentian.
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 24
Algoritma Java
method* namarekursi public static tipedataout** namarekursi
(namavariabelin1 : tipedatain1, (tipedatain1 namavariabelin1,
namavariabelin-n : tipedatain-n) -> tipedatain-n namavariabelin-n)
tipedataout {
if (kondisiberhenti)if (kondisiberhenti) then
{1
return(nilainetral***) 1
return(nilainetral***);
else {kondisimengulang} }
2
return(pemanggilanulang) else //kondisimengulang
end if
2
{
end method**** return(pemanggilanulang);
}
}
ket:
* method = dapat berupa procedure atau function
** tipedataout = void untuk procedure dan tipe data tertentu untuk function
*** nilainetral = merupakan nilai yang tidak mengubah hasil sebenarnya
**** end method = dapat berupa end procedure atau end function
1
2
blok basis
blok rekursi
(c) Memanggil rekursi
Sama halnya dengan metode, rekursi juga akan dipanggil jika dibutuhkan. Saat rekursi
dipanggil proses didalam rekursi akan berjalan, berulang, berhenti lalu memberikan hasil akhir.
Cara memanggil rekursi juga mirip dengan cara memanggil metode.
Algoritma Java
namavariabel ← namarekursi (variabelinput) namavariabel = namarekursi (variabelinput);
6.3 Contoh Rekursi
Penerapan rekursi sangat luas, namun disini hanya akan dijelaskan beberapa contoh
saja seperti Rekursi Perkalian, Rekursi Pangkat, dan Rekursi Faktorial.
Contoh 1 : Rekursi Perkalian dengan Proses Penjumlahan
(a) Konsep
misalnya : 5 x 3
maka : - perulangan pertama : 5 + (5x2)
- perulangan kedua : 5 + 5 + (5x1)
- perulangan ketiga : 5 + 5 + 5 + (5x0)
- perulangan keempat : 5 + 5 + 5 + 0
- hasil akhir = 15
Perkalian dengan 0 memberi hasil 0
dan merupakan kondisi berhenti
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 25
(b) Deklarasi rekursi
Algoritma Java
function rekursikali (a : integer, b : integer) -> public static int rekursikali (int a, int b)
integer {
if (b==0) then if (b==0)
{
return(0)
return(0);
else {b>0} }
return(a+rekursikali(a,(b-1))) else //b>0
end if {
end function return(a+rekursikali(a,(b-1)));
}
}
(c) Memanggil rekursi
Algoritma Java
hasilkali ← rekursikali (5,3) hasilkali = rekursikali (5,3);
Contoh 2 : Rekursi Pangkat dengan Proses Perkalian
(a) Konsep
misalnya : 2
4
maka : - perulangan pertama : 2 x (2
3
)
- perulangan kedua : 2 x 2 x (2
2
)
- perulangan ketiga : 2 x 2 x 2 x (2
1
)
- perulangan keempat : 2 x 2 x 2 x 2 x (2
0
)
- perulangan kelima : 2 x 2 x 2 x 2 x 1
- hasil akhir = 16
(b) Deklarasi rekursi
Pangkat 0 memberi hasil 1 dan
merupakan kondisi berhenti
Algoritma Java
function rekursipangkat (a: integer, b: integer) public static int rekursipangkat (int a, int b)
-> integer {
if (b==0) then if (b==0)
{
return(1)
return(1);
else {b>0}
}
return(a*rekursipangkat(a,(b-1))) else //b>0
end if {
end function return(a*rekursipangkat(a,(b-1)));
}
}
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 26
(c) Memanggil rekursi
Algoritma Java
hasilpangkat ← rekursipangkat (2,4) hasilpangkat = rekursipangkat (2,4);
Contoh 3 : Rekursi Faktorial dengan Proses Perkalian Mundur
(a) Konsep
misalnya : 6!
maka : - perulangan pertama : 6 x (5!)
- perulangan kedua : 6 x 5 x (4!)
- perulangan ketiga : 6 x 5 x 4 x (3!)
- perulangan keempat : 6 x 5 x 4 x 3 x (2!)
- perulangan kelima : 6 x 5 x 4 x 3 x 2 x (1!)
- perulangan keenam : 6 x 5 x 4 x 3 x 2 x 1 x (0!)
- perulangan ketujuh : 6 x 5 x 4 x 3 x 2 x 1 x 1
- hasil akhir = 720
(b) Deklarasi rekursi
Faktorial 0 memberi hasil 1 dan
merupakan kondisi berhenti
Algoritma Java
function rekursifaktorial (a : integer) public static int rekursifaktorial (int a)
-> integer {
if (a==0) then if (a==0)
{
return(1)
return(1);
else {b>0} }
return(a*rekursifaktorial(a -1)) else //b>0
end if {
end function return(a*rekursifaktorial(a-1));
}
}
(c) Memanggil rekursi
Algoritma Java
hasilfaktorial ← rekursifaktorial (6) hasilfaktorial = rekursifaktorial (6);
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 27
7. PENGURUTAN
Pengurutan atau sorting adalah sekumpulan instruksi yang bertugas mengurutkan
sekumpulan data. Ada dua jenis pengurutan yaitu pengurutan menaik (ascending) dan
pengurutan menurun (descending). Berdasarkan cara kerjanya, pengurutan dibagi tiga yaitu
Pengurutan Sisipan (Insertion Sort), Pengurutan Seleksi (Selection Sort), dan Pengurutan
Gelembung (Bubble Sort).
Setiap metode pengurutan selalu didasarkan pada kriteria. Kriteria adalah suatu
kondisi yang menyatakan minimum atau maksimum, tergantung pada jenis pengurutan,
menaik atau menurun.
7.1 Pengurutan Sisipan
Pengurutan sisipan merupakan suatu metode pengurutan yang menjadikan sebuah
data sebagai data sisip, yang kemudian membandingkan data sisip tersebut dengan data-data
sebelumnya, lalu meletakkan data sisip tersebut pada tempat yang sesuai.
Pada perulangan pertama data pada indeks kedua dijadikan data sisip, kemudian
dibandingkan dengan data pertama. Jika ternyata memenuhi kriteria maka data tersebut
diletakkan pada tempat yang sesuai. Selanjutnya pada perulangan kedua data pada indeks
ketiga dijadikan data sisip, kemudian dibandingkan dengan data pertama dan data kedua. Jika
memenuhi kriteria maka data tersebut diletakkan pada tempat yang sesuai, demikian
seterusnya.
Ket Algoritma Java
1 import javax.swing.JOptionPane;
2 Algorithm PengurutanSisipan public class PengurutanSisipan {
public static void main (String args []) {
3 bilangan : array [1...n] of integer int n = Integer.parseInt
(JOptionPane.showInputDialog
(null,"Masukkan banyaknya bilangan"));
4 DEKLARASI : int bilangan [] = new int [n];
n : integer
i, j : integer
outputawal : string ← ""
outputakhir : string ← ""
5 DESKRIPSI : int i, j;
write ("Masukkan banyaknya bilangan") String outputawal = "";
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 28
read (n) String outputakhir = "";
6 for i ← 1 to n do for (i=0;i<n;i++)
write ("Masukkan bilangan ke ", (i+1)) {
bilangan[i] ← read (bilangan[i]) bilangan[i] = Integer.parseInt
(JOptionPane.showInputDialog
outputawal+ ← bilangan[i], " "
(null,"Masukkan bilangan ke " +(i+1)));
end for outputawal += bilangan[i]+ " ";
}
7 for i ← 2 to n do for (i=1;i<n;i++)
datasisip : integer {
datasisip ← bilangan*i+ int datasisip = bilangan[i];
j = i-1;
j ← i-1
while (kondisi kriteria* AND j>0)
while (kondisi kriteria* && j>0)
{
bilangan[j+1] ← bilangan *j+ bilangan[j+1] = bilangan[j];
j = j-1 j = j-1;
end while }
bilangan[j+1] ← datasisip bilangan[j+1] = datasisip;
end for }
8 for i ← 1 to n do for (i=0;i<n;i++)
outputakhir+ ← bilangan[i], " " {
end for outputakhir += bilangan[i]+ " ";
}
9 write ("Susunan awal: ", outputawal, JOptionPane.showMessageDialog(null,"Susu
"newlineSusunan akhir: ", outputakhir) nan awal: " +outputawal+ "nSusunan akhir:
" +outputakhir);
10 }
11 end Algorithm }
ket:
(1) Java : menggunakan kotak dialog JOptionPane.
(2) Algoritma : nama algoritma,
awal algoritma.
Java : nama kelas (yang juga merupakan awal kelas),
awal program utama (main program).
(3) Algoritma : deklarasi array bilangan bertipe integer dengan jumlah indeks sebanyak n.
Java : meminta nilai n dan mendefenisikan n sebagai banyaknya bilangan.
(4) Algoritma : deklarasi variabel.
Java : deklarasi array bilangan bertipe integer dengan jumlah indeks sebanyak n.
(5) Algoritma : awal deskripsi,
meminta nilai n dan mendefenisikan n sebagai banyaknya bilangan.
Java : deklarasi variabel.
(6) Algoritma : perulangan untuk mengisi indeks array bilangan. Lalu merekam setiap
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 29
indeks array bilangan dan menyimpannya pada variabel outputawal.
Java : perulangan untuk mengisi indeks array bilangan. Lalu merekam setiap
indeks array bilangan dan menyimpannya pada variabel outputawal.
(7) Algoritma : perulangan untuk mengurutkan data.
Java : perulangan untuk mengurutkan data.
ket : *kondisi kriteria,
untuk ascending (datasisip<bilangan[j])
untuk descending (datasisip>bilangan[j])
(8) Algoritma : Merekam setiap indeks array bilangan yang telah diurutkan dan
menyimpannya pada variabel outputakhir.
Java : Merekam setiap indeks array bilangan yang telah diurutkan dan
menyimpannya pada variabel outputakhir.
(9) Algoritma : menampilkan hasil pengurutan.
Java : menampilkan hasil pengurutan.
(10) Java : akhir program utama (main program).
(11) Algoritma : akhir algoritma
Java : akhir kelas
7.2 Pengurutan Seleksi
Pengurutan seleksi merupakan suatu metode pengurutan yang membandingkan
beberapa data dan memilih satu data yang memenuhi kriteria, kemudian data tersebut
ditukartempatkan ke depan.
Pada perulangan pertama dilakukan perbandingan dari data pertama hingga data
terakhir, lalu dipilih satu data yang memenuhi kriteria, kemudian data tersebut
ditukartempatkan dengan data pertama. Selanjutnya pada perulangan kedua dilakukan
perbandingan dari data kedua hingga data terakhir, lalu dipilih satu data yang memenuhi
kriteria, kemudian data tersebut ditukartempatkan dengan data kedua, demikian seterusnya.
Ket Algoritma Java
1 import javax.swing.JOptionPane;
2 Algorithm PengurutanSeleksi public class PengurutanSeleksi {
public static void main (String args []) {
3 bilangan : array [1...n] of integer int n = Integer.parseInt
(JOptionPane.showInputDialog
(null,"Masukkan banyaknya bilangan"));
4 DEKLARASI : int bilangan [] = new int [n];
n : integer
i, j : integer
outputawal : string ← ""
outputakhir : string ← ""
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 30
5 DESKRIPSI : int i, j;
write ("Masukkan banyaknya bilangan") String outputawal = "";
read (n) String outputakhir = "";
6 for i ← 1 to n do for (i=0;i<n;i++)
write ("Masukkan bilangan ke ", (i+1)) {
bilangan[i] ← read (bilangan[i]) bilangan[i] = Integer.parseInt
(JOptionPane.showInputDialog
outputawal+ ← bilangan[i], " "
(null,"Masukkan bilangan ke " +(i+1)));
end for outputawal += bilangan[i]+ " ";
}
7 for i ← 1 to (n-1) do for (i=0;i<n-1;i++)
for j ← (i+1) to n do {
if (kondisi tergantung kriteria*) then for (j=i+1;j<n;j++)
{
temp : integer
if (kondisi tergantung kriteria*)
temp ← bilangan*i+ {
bilangan[i] ← bilangan*j+ int temp = bilangan[i];
bilangan[j] ← temp bilangan[i] = bilangan[j];
end if bilangan[j] = temp;
end for }
end for }
}
8 for i ← 1 to n do for (i=0;i<n;i++)
outputakhir+ ← bilangan[i], " " {
end for outputakhir += bilangan[i]+ " ";
}
9 write ("Susunan awal: ", outputawal, JOptionPane.showMessageDialog(null,"Susu
"newlineSusunan akhir: ", outputakhir) nan awal: " +outputawal+ "nSusunan akhir:
" +outputakhir);
10 }
11 end Algorithm }
ket:
keterangan lainnya dapat dilihat pada (7.1 Pengurutan Sisipan)
(7) Algoritma : perulangan untuk mengurutkan data.
Java : perulangan untuk mengurutkan data.
ket : *kondisi tergantung kriteria,
untuk ascending (bilangan[i]>bilangan[j])
untuk descending (bilangan[i]<bilangan[j])
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 31
7.3 Pengurutan Gelembung
Pengurutan gelembung merupakan suatu metode pengurutan yang membandingkan
dua buah data secara terus-menerus. Proses membandingkan akan berhenti saat proses
perulangan selesai.
Pada setiap perulangan hanya terjadi satu kali proses perbandingan. Pada perulangan
pertama dilakukan perbandingan antara data pertama dan data kedua. Selanjutnya pada
perulangan kedua dilakukan perbandingan antara data kedua dan data ketiga, demikian
seterusnya.
Ket Algoritma Java
1 import javax.swing.JOptionPane;
2 Algorithm PengurutanGelembung public class PengurutanGelembung {
public static void main (String args []) {
3 bilangan : array [1...n] of integer int n = Integer.parseInt
(JOptionPane.showInputDialog
(null,"Masukkan banyaknya bilangan"));
4 DEKLARASI : int bilangan [] = new int [n];
n : integer
i, j : integer
outputawal : string ← ""
outputakhir : string ← ""
5 DESKRIPSI : int i, j;
write ("Masukkan banyaknya bilangan") String outputawal = "";
read (n) String outputakhir = "";
6 for i ← 1 to n do for (i=0;i<n;i++)
write ("Masukkan bilangan ke ", (i+1)) {
bilangan[i] ← read (bilangan[i]) bilangan[i] = Integer.parseInt
(JOptionPane.showInputDialog
outputawal+ ← bilangan[i], " "
(null,"Masukkan bilangan ke " +(i+1)));
end for outputawal += bilangan[i]+ " ";
}
7 for i ← 1 to (n-1) do for (i=0;i<n-1;i++)
for j ← 1 to (n-1) do {
if (kondisi tergantung kriteria*) then for (j=0;j<n-1;j++)
{
temp : integer
if (kondisi tergantung kriteria*)
temp ← bilangan[j] {
bilangan[j] ← bilangan*j+1] int temp = bilangan[j];
bilangan[j+1] ← temp bilangan[j] = bilangan[j+1];
end if bilangan[j+1] = temp;
end for }
}
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 32
end for }
8 for i ← 1 to n do for (i=0;i<n;i++)
outputakhir+ ← bilangan[i], " " {
end for outputakhir += bilangan[i]+ " ";
}
9 write ("Susunan awal: ", outputawal, JOptionPane.showMessageDialog(null,"Susu
"newlineSusunan akhir: ", outputakhir) nan awal: " +outputawal+ "nSusunan akhir:
" +outputakhir);
10 }
11 end Algorithm }
ket:
keterangan lainnya dapat dilihat pada (7.1 Pengurutan Sisipan)
(7) Algoritma : perulangan untuk mengurutkan data.
Java : perulangan untuk mengurutkan data.
ket : *kondisi tergantung kriteria,
untuk ascending (bilangan[j]>bilangan[j+1])
untuk descending (bilangan[j]<bilangan[j+1])
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 33
8. PENCARIAN
Pencarian atau searching adalah sekumpulan instruksi yang bertugas menemukan nilai
suatu data. Dalam kehidupan nyata pencarian merupakan proses yang sangat penting.
Berdasarkan cara kerjanya, pencarian dibagi dua yaitu Pencarian Beruntun (Sequential Search)
dan Pencarian Bagi Dua (Binary Search).
8.1 Pencarian Beruntun
Pencarian beruntun dapat diimplementasikan pada data yang telah terurut maupun
belum. Pencarian beruntun dilakukan dengan menelusuri data satu persatu, kemudian
dicocokkan dengan data yang dicari. Jika data yang dicari sama dengan data yang dicocokkan,
maka penelusuran dihentikan, sebaliknya jika data yang dicari belum sama dengan data yang
dicocokkan maka penelusuran dilanjutkan, demikian seterusnya.
Ket Algoritma Java
1 import javax.swing.JOptionPane;
2 Algorithm PencarianBeruntun public class PencarianBeruntun {
public static void main (String args []) {
3 bilangan : array [1...n] of integer int n = Integer.parseInt
(JOptionPane.showInputDialog
(null,"Masukkan banyaknya bilangan"));
4 DEKLARASI : int bilangan [] = new int [n];
n : integer
i : integer
bilygdicari : integer
indeks : integer
ditemukan : boolean
5 DESKRIPSI : int i;
write ("Masukkan banyaknya bilangan") boolean ditemukan;
read (n)
6 for i ← 1 to n do for (i=0;i<n;i++)
write ("Masukkan bilangan ke ", i) {
bilangan[i] ← read (bilangan[i]) bilangan[i] = Integer.parseInt
(JOptionPane.showInputDialog
end for
(null,"Masukkan bilangan ke " +(i+1)));
}
7 write ("Masukkan bilangan yang dicari :") int bilygdicari = Integer.parseInt
read (bilygdicari) (JOptionPane.showInputDialog
(null,"Masukkan bilangan yang dicari :"));
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 34
8 ditemukan ← false ditemukan = false;
9 i ← 0 i = 0;
10 indeks ← 0 int indeks = 0;
11 repeat do
if (bilangan[i]=bilygdicari) then {
ditemukan ← true if (bilangan[i]==bilygdicari)
{
end if
ditemukan = true;
i ← i+1 }
until (ditemukan=true OR i=(n-1)) i = i+1;
}
while (ditemukan==false || i!=(n-1))
12 indeks ← i+1 indeks = i+1;
13 if (ditemukan=true) then if (ditemukan==true)
write ("Ditemukan pada indeks ke “, {
indeks) System.out.println("Ditemukan pada
indeks ke " +indeks);
else
}
write ("Tidak ditemukan") else
end if {
System.out.println("Tidak ditemukan");
}
14 }
15 end Algorithm }
ket:
(1) Java : menggunakan kotak dialog JOptionPane.
(2) Algoritma : nama algoritma,
awal algoritma.
Java : nama kelas (yang juga merupakan awal kelas),
awal program utama (main program).
(3) Algoritma : deklarasi array bilangan bertipe integer dengan jumlah indeks sebanyak n.
Java : meminta nilai n dan mendefenisikan n sebagai banyaknya bilangan.
(4) Algoritma : deklarasi variabel.
Java : deklarasi array bilangan bertipe integer dengan jumlah indeks sebanyak n.
(5) Algoritma : awal deskripsi,
meminta nilai n dan mendefenisikan n sebagai banyaknya bilangan.
Java : deklarasi variabel.
(6) Algoritma : perulangan untuk mengisi indeks array bilangan.
Java : perulangan untuk mengisi indeks array bilangan.
(7) Algoritma : meminta nilai bilygdicari dan mendefenisikan bilygdicari sebagai bilangan
yang ingin dicari.
Java : meminta nilai bilygdicari dan mendefenisikan bilygdicari sebagai bilangan
yang ingin dicari.
(8) Algoritma : memberi nilai ditemukan dengan false.
Java : memberi nilai ditemukan dengan false.
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 35
(9) Algoritma : memberi nilai i dengan 0.
Java : memberi nilai i dengan 0.
(10) Algoritma : memberi nilai indeks dengan 0.
Java : deklarasi indeks sebagai integer, dan memberi nilai indeks dengan 0.
(11) Algoritma : perulangan untuk mencocokkan bilygdicari dengan setiap indeks array,
perulangan akan berhenti jika bilygdicari sama dengan indeks tertentu.
Java : perulangan untuk mencocokkan bilygdicari dengan setiap indeks array,
perulangan akan berhenti jika bilygdicari sama dengan indeks tertentu.
(12) Algoritma : memberi nilai indeks dengan i+1.
Java : memberi nilai indeks dengan i+1.
(13) Algoritma : menampilkan pesan ditemukan atau tidak.
Java : menampilkan pesan ditemukan atau tidak.
(14) Java : akhir program utama (main program).
(15) Algoritma : akhir algoritma
Java : akhir kelas
8.2 Pencarian Bagi Dua
Pencarian bagi dua hanya dapat diimplementasikan pada data yang telah terurut.
Pencarian bagi dua dilakukan dengan membagi data menjadi dua bagian, kemudian
dicocokkan dengan data yang dicari. Jika data yang dicari sama dengan data yang dicocokkan,
maka pembagian dihentikan, sebaliknya jika data yang dicari belum sama dengan data yang
dicocokkan maka pembagian dilanjutkan, demikian seterusnya.
Ket Algoritma Java
1 import javax.swing.JOptionPane;
2 Algorithm PencarianBagiDua public class PencarianBagiDua {
public static void main (String args []) {
3 bilangan : array [1...n] of integer int n = Integer.parseInt
(JOptionPane.showInputDialog
(null,"Masukkan banyaknya bilangan"));
4 DEKLARASI : int bilangan [] = new int [n];
n : integer
i : integer
awal : integer
akhir : integer
mid : integer
bilygdicari : integer
ditemukan : boolean
5 DESKRIPSI : int i;
write ("Masukkan banyaknya bilangan") int awal;
read (n) int akhir;
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 36
int mid;
boolean ditemukan;
6 for i ← 1 to n do for (i=0;i<n;i++)
write ("Masukkan bilangan ke ", (i+1)) {
bilangan[i] ← read (bilangan[i]) bilangan[i] = Integer.parseInt
(JOptionPane.showInputDialog
end for
(null,"Masukkan bilangan ke " +(i+1)));
}
7 write ("Masukkan bilangan yang dicari :") int bilygdicari = Integer.parseInt
read (bilygdicari) (JOptionPane.showInputDialog
(null,"Masukkan bilangan yang dicari :"));
8 ditemukan ← false ditemukan = false;
9 awal ← 1 awal = 1;
10 akhir ← n akhir = n;
11 repeat do
mid ← (awal+akhir)div2 {
if (bilangan[mid]=bilygdicari) then mid = (awal+akhir)/2
if (bilangan[mid]==bilygdicari)
ditemukan ← true
{
else ditemukan = true;
if (bilangan[mid]>bilygdicari) then }
akhir ← mid-1 else if (bilangan[mid]>bilygdicari)
else {
awal ← mid+1 akhir = mid-1;
end if }
else
end if
{
until (ditemukan=true OR awal=akhir) awal = mid+1;
}
}
while (ditemukan==false || awal!=akhir)
12 if (ditemukan=true) then if (ditemukan==true)
write ("Ditemukan pada indeks ke “, {
mid) System.out.println("Ditemukan pada
indeks ke " +mid);
else
}
write ("Tidak ditemukan") else
end if {
System.out.println("Tidak ditemukan");
}
13 }
14 end Algorithm }
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 37
ket:
(1) Java : menggunakan kotak dialog JOptionPane.
(2) Algoritma : nama algoritma,
awal algoritma.
Java : nama kelas (yang juga merupakan awal kelas),
awal program utama (main program).
(3) Algoritma : deklarasi array bilangan bertipe integer dengan jumlah indeks sebanyak n.
Java : meminta nilai n dan mendefenisikan n sebagai banyaknya bilangan.
(4) Algoritma : deklarasi variabel.
Java : deklarasi array bilangan bertipe integer dengan jumlah indeks sebanyak n.
(5) Algoritma : awal deskripsi,
meminta nilai n dan mendefenisikan n sebagai banyaknya bilangan.
Java : deklarasi variabel.
(6) Algoritma : perulangan untuk mengisi indeks array bilangan.
Java : perulangan untuk mengisi indeks array bilangan.
(7) Algoritma : meminta nilai bilygdicari dan mendefenisikan bilygdicari sebagai bilangan
yang ingin dicari.
Java : meminta nilai bilygdicari dan mendefenisikan bilygdicari sebagai bilangan
yang ingin dicari.
(8) Algoritma : memberi nilai ditemukan dengan false.
Java : memberi nilai ditemukan dengan false.
(9) Algoritma : memberi niali awal dengan 1.
Java : memberi niali awal dengan 1.
(10) Algoritma : memberi niali akhir dengan n.
Java : memberi niali akhir dengan n.
(11) Algoritma : perulangan untuk mencocokkan bilygdicari dengan setiap indeks bagian
tengah array, perulangan akan berhenti jika bilygdicari sama dengan indeks
bagian tengah tertentu.
Java : perulangan untuk mencocokkan bilygdicari dengan setiap indeks bagian
tengah array, perulangan akan berhenti jika bilygdicari sama dengan indeks
bagian tengah tertentu.
(12) Algoritma : menampilkan pesan ditemukan atau tidak.
Java : menampilkan pesan ditemukan atau tidak.
(13) Java : akhir program utama (main program).
(14) Algoritma : akhir algoritma
Java : akhir kelas
Muhammad Yunus, M.Kom./Diktat AlPro Java Page 38
REFERENSI
Horstmann, Cay dan Cornell, Gary. 2000. Core Java Volume 1, Fundamentals. Sun
Microsystems Inc. California.
Kadir, Abdul. 2006. Dasar Pemrograman Java 2. Penerbit ANDI. Yogyakarta.
Naughton, Patrick. 1996. The Java Handbook. McGraw-Hill Book Company. New York.
Shalahuddin, M dan Rosa, A. S. 2007. Belajar Pemrograman dengan Bahasa C++ dan Java.
Penerbit Informatika. Bandung.

More Related Content

PPTX
Cloud computing ppt
DOCX
Laporan Makalah Pembuatan Website E-Commerce-Basis Data
PDF
Makalah keamanan jaringan internet (internet, permasalahan dan penanggulangan...
PPT
Ppt cloudcomputing
DOCX
Makalah jaringan lan
PPTX
dasar-dasar pemrograman
PPT
Penjadualan CPU
PPT
Class diagram
Cloud computing ppt
Laporan Makalah Pembuatan Website E-Commerce-Basis Data
Makalah keamanan jaringan internet (internet, permasalahan dan penanggulangan...
Ppt cloudcomputing
Makalah jaringan lan
dasar-dasar pemrograman
Penjadualan CPU
Class diagram

What's hot (20)

PDF
Algoritma dan Struktur Data - Struktur Data
PPTX
#1 PENGENALAN PYTHON
DOCX
Makalah Sejarah Perkembangan Internet
PPTX
Manajemen file windows
PDF
Tutorial Lengkap Cara Membuat Aplikasi Android Sederhana
PPSX
Instalasi OpenGL – GLUT
PPTX
Efisiensi algoritma
DOCX
Makalah dasar komputer
PPTX
Informatika (BK).pptx
PPTX
AIJ - Materi Firewall.pptx
PPTX
Model data relasional (3)
PDF
Dampak Sosial Informatika .pdf
PPT
Presentasi Sejarah komputer
PPTX
Concurency, deadlock, starvation
PDF
Perancangan Data Warehouse (Logical dan Physical)
PDF
Algoritma dan Pemrograman C++ (Perulangan)
PDF
Prinsip User Interface Design
DOCX
Makalah Organisasi Komputer - Direct Memory Access (DMA)
PPTX
Pertemuan 2 ~ Flowchart
PPTX
Sorting ppt
Algoritma dan Struktur Data - Struktur Data
#1 PENGENALAN PYTHON
Makalah Sejarah Perkembangan Internet
Manajemen file windows
Tutorial Lengkap Cara Membuat Aplikasi Android Sederhana
Instalasi OpenGL – GLUT
Efisiensi algoritma
Makalah dasar komputer
Informatika (BK).pptx
AIJ - Materi Firewall.pptx
Model data relasional (3)
Dampak Sosial Informatika .pdf
Presentasi Sejarah komputer
Concurency, deadlock, starvation
Perancangan Data Warehouse (Logical dan Physical)
Algoritma dan Pemrograman C++ (Perulangan)
Prinsip User Interface Design
Makalah Organisasi Komputer - Direct Memory Access (DMA)
Pertemuan 2 ~ Flowchart
Sorting ppt
Ad

Viewers also liked (20)

PPT
Dasar pemograman java
PDF
Analisa Struktur 2 Bab 1 Golongan Struktur
PDF
Konsep Pemrograman Berorientasi Objek
PPTX
Team Building and Teamwork
PPTX
Pemrograman berorientasi objek ii 04 prosedur dan fungsi
PDF
Pemrograman Berorientasi Objek "Pengenalan JAVA"
DOCX
Laporan hasil praktikum modul ii tipe data
PPT
Algoritma Pencarian String matching
PDF
Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"
PDF
DIKTAT PANJAT TEBING (ROCK CLIMBING) ASTACALA - Bagian 8 Lintasan
PDF
DIKTAT PANJAT TEBING (ROCK CLIMBING) ASTACALA - Bagian 4 Etika
PDF
DIKTAT PANJAT TEBING (ROCK CLIMBING) ASTACALA - Bagian 6 Simpul
PDF
DIKTAT PANJAT TEBING (ROCK CLIMBING) ASTACALA - Bagian 5 Pengenalan Tebing da...
PDF
DIKTAT PANJAT TEBING (ROCK CLIMBING) ASTACALA - Bagian 3 Alat
PDF
DIKTAT PANJAT TEBING (ROCK CLIMBING) ASTACALA - Bagian 7 Teknik Lanjut
DOCX
Laporan Modul 1 Praktikum Pemrograman Berbasis Objek
DOCX
Laporan PBO pratikum 2
PPTX
Pertemuan vi (Function Java)
PDF
Modul 2- balok terjepit sebelah
PDF
Pemrograman Python untuk Pemula
Dasar pemograman java
Analisa Struktur 2 Bab 1 Golongan Struktur
Konsep Pemrograman Berorientasi Objek
Team Building and Teamwork
Pemrograman berorientasi objek ii 04 prosedur dan fungsi
Pemrograman Berorientasi Objek "Pengenalan JAVA"
Laporan hasil praktikum modul ii tipe data
Algoritma Pencarian String matching
Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"
DIKTAT PANJAT TEBING (ROCK CLIMBING) ASTACALA - Bagian 8 Lintasan
DIKTAT PANJAT TEBING (ROCK CLIMBING) ASTACALA - Bagian 4 Etika
DIKTAT PANJAT TEBING (ROCK CLIMBING) ASTACALA - Bagian 6 Simpul
DIKTAT PANJAT TEBING (ROCK CLIMBING) ASTACALA - Bagian 5 Pengenalan Tebing da...
DIKTAT PANJAT TEBING (ROCK CLIMBING) ASTACALA - Bagian 3 Alat
DIKTAT PANJAT TEBING (ROCK CLIMBING) ASTACALA - Bagian 7 Teknik Lanjut
Laporan Modul 1 Praktikum Pemrograman Berbasis Objek
Laporan PBO pratikum 2
Pertemuan vi (Function Java)
Modul 2- balok terjepit sebelah
Pemrograman Python untuk Pemula
Ad

Similar to Diktat Algoritma Pemrograman Java (20)

PPTX
Materi Algoritma dan Pemograman oca.pptx
PPTX
Materi Algoritma dan Pemograman oca.pptx
PPTX
MENTORING KODING PERTEMUAN 3 oleh M.Farhan GHIFARI, S.Kom
PDF
Modul PBO Bab-01 - Pengenalan Java
PDF
JavadasarjavadasarjavadasarJavaDasar.pdf
PDF
Java_Dasar dasar dasar java programming language
PDF
Java dasar-libre
PPTX
Menganalisis tata cahaya gambar bergerak (perekaman video).pptx
PDF
Modul 2 pbo
PPTX
Algoritma dan pemrograman
PDF
Java programming sns
PDF
Pengenalan Pemrograman Java
PPTX
Pertemuan 3 - Konsep Dasar Pemrograman
PPTX
01_Algoritma_Pemrogramanssssssssssssss.pptx
PPTX
Struktur Algoritma dan Tipe Data.pptx do
PPTX
3.1 tipe data
PPTX
3.1 tipe data
PDF
2-Variabel,Tipe Data, Operator (pemprograman berbasisobek).pdf
PPTX
PDF
Modul 2 variabel, tipe data dan operator
Materi Algoritma dan Pemograman oca.pptx
Materi Algoritma dan Pemograman oca.pptx
MENTORING KODING PERTEMUAN 3 oleh M.Farhan GHIFARI, S.Kom
Modul PBO Bab-01 - Pengenalan Java
JavadasarjavadasarjavadasarJavaDasar.pdf
Java_Dasar dasar dasar java programming language
Java dasar-libre
Menganalisis tata cahaya gambar bergerak (perekaman video).pptx
Modul 2 pbo
Algoritma dan pemrograman
Java programming sns
Pengenalan Pemrograman Java
Pertemuan 3 - Konsep Dasar Pemrograman
01_Algoritma_Pemrogramanssssssssssssss.pptx
Struktur Algoritma dan Tipe Data.pptx do
3.1 tipe data
3.1 tipe data
2-Variabel,Tipe Data, Operator (pemprograman berbasisobek).pdf
Modul 2 variabel, tipe data dan operator

More from Muhammad Yunus (6)

PPTX
Mendaftarkan Jurnal ke Indeks Garuda
PDF
Setting dan aktivasi doi m yunus rji
PDF
Update doi m yunus rji
PDF
Panduan submit author ojs 3
PPT
Bab 7 studi kasus
PDF
Modul as pdot-net-2015
Mendaftarkan Jurnal ke Indeks Garuda
Setting dan aktivasi doi m yunus rji
Update doi m yunus rji
Panduan submit author ojs 3
Bab 7 studi kasus
Modul as pdot-net-2015

Recently uploaded (9)

PPTX
Peranan AI dalam Dunia Pendidikan dan Industri Aplikasinya
DOCX
Keutuhan Aplikasi Konsep dan Praktik dalam Upaya menciptakan aplikasi Anti Vi...
PDF
Modul_Pemula_Merakit_Komputer untuk smppdf
PDF
Rekomendasi Riset Lanjutan : perspektif_futurologis.pdf
DOCX
Antivirus Versi.FULL.JALiN.KB.PRO Keutuhan Aplikasi Konsep dan Praktik dalam ...
PPTX
Implementasi Microservices pada Manufaktur
PPT
pengantar-sistem-informasi manajemen.ppt
PPTX
Materi asdsa asd asd sad sa dsa dsa d sa
PPTX
Materi_Array_Karakter_String untuk kelas XI sma.pptx
Peranan AI dalam Dunia Pendidikan dan Industri Aplikasinya
Keutuhan Aplikasi Konsep dan Praktik dalam Upaya menciptakan aplikasi Anti Vi...
Modul_Pemula_Merakit_Komputer untuk smppdf
Rekomendasi Riset Lanjutan : perspektif_futurologis.pdf
Antivirus Versi.FULL.JALiN.KB.PRO Keutuhan Aplikasi Konsep dan Praktik dalam ...
Implementasi Microservices pada Manufaktur
pengantar-sistem-informasi manajemen.ppt
Materi asdsa asd asd sad sa dsa dsa d sa
Materi_Array_Karakter_String untuk kelas XI sma.pptx

Diktat Algoritma Pemrograman Java

  • 1. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 1 STMIK Bumigora Mataram www.stmikbumigora.ac.id AlgoritmaDAN Pemrograman Java
  • 2. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 2 PRAKATA Puji syukur saya ucapkan kepada Allah SWT, Tuhan Yang Maha Esa karena berkat bimbingan-Nya Modul sederhana ini bisa diselesaikan tepat pada waktunya. Terima kasih saya ucapkan kepada orang tua yang selalu membimbing dan mendoakan saya. Terima kasih juga saya ucapkan kepada teman-teman yang selalu memberi semangat dan motivasi. Perkembangan dunia yang semakin cepat membawa banyak pengaruh dan perubahan dalam kehidupan, salah satunya pemrograman. Pemrograman merupakan hal yang sangat menarik. Hal tersebut menyebabkan pemrograman semakin diminati oleh banyak kalangan, sehingga hampir disetiap profesi selalu ada penerapan teknologi pemrograman. Modul ini ditujukan untuk siapa saja yang ingin mengenal pemrograman. Buku ini disusun secara ringkas, padat dan jelas, sehingga akan sangat mudah dipelajari. Buku ini memuat pengantar algoritma dan pemrograman dengan bahasa Java, sehingga hanya akan membahas dasar-dasar pemrograman saja seperti: tipe data, percabangan, perulangan, larik, metode, rekursi, pengurutan dan pencarian. Buku ini ditulis dengan sasaran untuk memperkenalkan pemrograman Java kepada kalangan akademis, khususnya mahasiswa informatika. Untuk lebih mendalami, disarankan untuk lanjut mempelajari buku-buku berikutnya seperti: Metode Analisis Perancangan Program, Struktur Data, Pemrograman Berorientasi Objek, Basis Data, dan lain-lain. Akhir kata, saya ucapkan terima kasih. Mataram, September 2016 Muhammad Yunus
  • 3. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 3 DAFTAR ISI PRAKATA i DAFTAR ISI ii (1) TIPE DATA 1 1.1 Definisi 1 1.2 Tipe Dasar 2 1.3 Penulisan Tipe Dasar 2 1.4 Penulisan Tipe Bentukan 3 1.5 Operator 4 1.6 Komentar 5 (2) PERCABANGAN 6 2.1 Percabangan If 6 2.2 Percabangan Case 8 (3) PERULANGAN 10 3.1 Perulangan For 10 3.2 Perulangan While-Do 11 3.3 Perulangan Repeat-Until 12 (4) LARIK 13 4.1 Definisi 13 4.2 Array 1 Tingkat 14 4.3 Array 2 Tingkat 15 (5) METODE 16 5.1 Definisi 16 5.2 Prosedur 16 5.3 Fungsi 19 (6) REKURSI 20 6.1 Definisi 20 6.2 Bentuk Umum Rekursi 20 6.3 Contoh Rekursi 21 (7) PENGURUTAN 24 7.1 Pengurutan Sisipan 24 7.2 Pengurutan Seleksi 26 7.3 Pengurutan Gelembung 28 (8) PENCARIAN 30 Pencarian Beruntun 30 Pencarian Bagi Dua 32 REFERENSI iii TENTANG iv
  • 4. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 4 1. TIPE DATA 1.1 Definisi Setiap data memiliki informasi yang khas. Informasi inilah yang membedakan suatu data dengan data yang lain. Informasi yang dimiliki oleh suatu data antara lain tipe data, variabel dan nilai. Tipe data adalah jenis suatu data. Jenis data bisa berupa bilangan bulat, bilangan pecahan, karakter dsb. Variabel adalah nama suatu data. Nama inilah yang merupakan ciri pembeda utama suatu data dengan data lainnya. Nilai adalah harga suatu data. Nilai inilah yang nantinya dioperasikan saat program berjalan. contoh : 1 Data : umur mahasiswa 2 Data : kecepatan mobil Tipe data : bilangan bulat Tipe data : bilangan pecahan Variabel : umur_mhs Variabel : v Nilai : 17 Nilai : 86.77792 3 Data : alamat rumah 4 Data : huruf kelima Tipe data : kalimat Tipe data : karakter Variabel : almt Variabel : fifth_char Nilai : “Jl. Sekeloa No. 48A” Nilai : “e” 5 6Data : nilai π Data : pengecek kebenaran Tipe data : konstanta Tipe data : logika Variabel : pi Variabel : pengecek_kebenaran Nilai : 3.14 Nilai : true Secara umum tipe data dibagi dua, yaitu tipe dasar dan tipe bentukan. Tipe dasar adalah tipe yang sudah tersedia dalam suatu bahasa pemrograman, misalnya bilangan bulat (integer), bilangan pecahan (real), tetapan (const), karakter (char), kalimat (string) dan logika (boolean). Sedangkan tipe bentukan adalah tipe yang dibuat sendiri dengan menggabungkan tipe dasar, misalnya larik (array) dan rekaman (record).
  • 5. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 5 1.2 Tipe Dasar No Tipe Data Algoritma Java Contoh 1 Bilangan bulat integer long -25, 0, 32 int short 2 Bilangan pecahan real float -7.5, 0.25, 12E-2 double 3 Konstanta const final long π (3.14) final int final short final float final double 4 Karakter character char A, z, 1, spasi, enter 5 Kumpulan string String “ayam”, “1250” karakter, bisa berupa kalimat atau kata 6 Logika boolean boolean true, false 1.3 Penulisan Tipe Dasar Algoritma Java namavariabel : tipedata tipedata namavariabel; contoh : No Tipe Data Algoritma Java 1 Bilangan bulat n : integer int n; jumlah : integer int jumlah; bilangan : integer long bilangan; 2 Bilangan pecahan x : real double x; hasilpembagian : real double hasilpembagian; biaya : real float biaya; 3 Konstanta pi ←3.14 : const final double pi = 3.14; 4 Karakter inisial : char char inisial; hurufkelima : char char hurufkelima; 5 Kata masukanx : string String masukanx; namax : string String namax; nimx : string String nimx; 6 Logika apakahbenar : boolean boolean apakahbenar; kondisimengulang : boolean boolean kondisimengulang;
  • 6. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 6 1.4 Penulisan Tipe Bentukan Keterangan Algoritma Java Deklarasi tipe type namatipebentukan : (semua_ enum namatipebentukan bentukan nilai_yang_diperbolehkan) { sebagai semua_nilai_yang_ prosedur diperbolehkan; } Deklarasi namavariabel : namatipebentukan namatipebentukan namavariabel; variabel Pengisian nilai namavariabel ← namavariabel = namatipebentukan. variabel nilai_yang_diperbolehkan nilai_yang_diperbolehkan; contoh 1 : Sebagai contoh kita akan membuat tipe bentukan umur mahasiswa yang nilainya antara lain 17, 18, 19, 20, 21, 22, 23. Keterangan Algoritma Java Deklarasi tipe type umurmahasiswa : (17, 18, 19, enum umurmahasiswa bentukan 20, 21, 22, 23) { sebagai 17, 18, 19, 20, 21, 22, 23; prosedur } Deklarasi umursaya : umurmahasiswa umurmahasiswa umursaya; variabel Pengisian nilai umursaya ← 17 umursaya = umurmahasiswa.17; variabel contoh 2 : Contoh lainnya, seandainya kita akan membuat tipe bentukan hari yang nilainya antara lain senin, selasa, rabu, kamis, jumat, sabtu, minggu. Keterangan Algoritma Java Deklarasi tipe type hari : (senin, selasa, rabu, enum hari bentukan kamis, jumat, sabtu, minggu) { sebagai senin, selasa, rabu, kamis, prosedur jumat, sabtu, minggu; } Deklarasi today : hari hari today; variabel Pengisian nilai today ← minggu today = hari.minggu; variabel
  • 7. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 7 1.5 Operator Operator adalah media yang digunakan untuk memproses data sehingga memberikan hasil. Secara umum operator dibagi tiga, yaitu operator aritmatika, operator relasi dan operator logika. Operator aritmatika digunakan untuk mengoperasikan data secara matematika, misalnya (+), (-). Operator relasi digunakan untuk membandingkan dua buah data, misalnya (<), (>). Operator logika digunakan untuk mengaitkan dua buah kondisi menjadi sebuah kondisi, misalnya (dan), (atau). (a) Operator aritmatika No Jenis Operasi Tipe Tipe Algoritma Java Masukan Keluaran 1 Penjumlahan (+) integer integer + + real real 2 Pengurangan (-) integer integer - - real real 3 Perkalian (*) integer integer * * real real 4 Pembagian (/) integer integer / / real real 5 Bilangan bulat integer integer div / pembagian (div) 6 Sisa pembagian (mod) integer integer mod % (b) Operator relasi No Jenis Operasi Algoritma Java 1 Sama dengan (=) = == 2 Tidak sama dengan (≠) <> != 3 Lebih dari (>) > > 4 Kurang dari (<) < < 5 Lebih dari sama dengan (≥) ≥ >= 6 Kurang dari sama dengan (≤) ≤ <=
  • 8. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 8 (c) Operator logika No Jenis Operasi Algoritma Java 1 Dan (and) AND && 2 Atau (or) OR || 3 Bukan (negasi) NOT ! Kondisi A Kondisi B A dan B A atau B Bukan A Bukan B B B B B S S B S S B S B S B S B B S S S S S B B Tabel kebenaran untuk operator logika 1.6 Komentar Komentar adalah bagian kode program yang tidak dibaca saat program dijalankan. Komentar sangatlah penting untuk memperjelas kode program agar lebih mudah dipahami. Berikut ini adalah tata cara penulisan komentar. Jenis Komentar Algoritma Java Komentar untuk satu baris {komentar} //komentar Komentar untuk beberapa baris { /* .......... .......... komentar komentar .......... .......... } */
  • 9. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 9 2. PERCABANGAN Percabangan atau branching merupakan sebuah blok program yang menyatakan bahwa sebuah aksi akan dijalankan jika kondisi sebuah percabangan terpenuhi. Pada umumnya konsep percabangan dibagi dua, yaitu percabangan if dan percabangan case. 2.1 Percabangan If (a) Satu kasus bentuk umum : Algoritma Java if (kondisi) then if (kondisi) aksi { end if aksi; } contoh : Algoritma Java if (bilangan > 0) then if (bilangan > 0) write (“bilangan positif”) { end if System.out.println(“bilangan positif”); } (b) Dua kasus bentuk umum : Algoritma Java if (kondisi1) then if (kondisi1) aksi1 { else {bukan kondisi1} aksi1; aksi2 } end if else //bukan kondisi1 { aksi2; }
  • 10. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 10 contoh : Algoritma Java if (bilangan mod 2 = 0) then if (bilangan % 2 == 0) write (“bilangan genap”) { else {bilangan mod 2 <> 0} System.out.println(“bilangan genap”); write (“bilangan ganjil”) } end if else // bilangan mod 2 != 0 { System.out.println(“bilangan ganjil”); } (c) Banyak kasus bentuk umum : Algoritma Java if (kondisi1) then if (kondisi1) aksi1 { else aksi1; if (kondisi2) then } aksi2 else if (kondisi2) else { if (kondisi3) then aksi2; aksi3 } else else if (kondisi3) if (kondisin) then { aksin aksi3; else {bukan kondisi 1, 2, 3, n} } aksix else if (kondisin) end if { end if aksin; end if } end if else //bukan kondisi 1, 2, 3, n { aksix; } contoh : Algoritma Java if (hobi = 1) then if (hobi==1) write (“jalan-jalan”) { end if System.out.println(“jalan-jalan”); else if (hobi = 2) then }
  • 11. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 11 write (“bermain”) else if (hobi==2) end if { else if (hobi = 3) then System.out.println(“bermain”); write (“nonton”) } end if else if (hobi==3) else if (hobi = 4) then { write (“dengar lagu”) System.out.println(“nonton”); end if } else {hobi <> 1, 2, 3, 4} else if (hobi==4) write (“belajar”) { end else System.out.println(“dengar lagu”); } else //hobi != 1, 2, 3, 4 { System.out.println(“belajar”); } 2.2 Percabangan Case bentuk umum : Algoritma Java case (namavariabel) switch (namavariabel) namavariabel = 1 : aksi1 { namavariabel = 2 : aksi2 case 1 : aksi1; namavariabel = 3 : aksi3 break; namavariabel = 4 : aksi4 case 2 : aksi2; namavariabel = 5 : aksi5 break; namavariabel = n : aksin case 3 : aksi3; otherwise : aksix break; end case case 4 : aksi4; break; case 5 : aksi5; break; case n : aksin; break; default : aksix; }
  • 12. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 12 contoh : Algoritma Java case (hari) switch (hari) hari = 1 : write (“senin”) { hari = 2 : write (“selasa”) case 1 : System.out.println(“senin”); hari = 3 : write (“rabu”) break; hari = 4 : write (“kamis”) case 2 : System.out.println(“selasa”); hari = 5 : write (“jumat”) break; hari = 6 : write (“sabtu”) case 3 : System.out.println(“rabu”); hari = 7 : write (“minggu”) break; otherwise : write (“salah”) case 4 : System.out.println(“kamis”); end case break; case 5 : System.out.println(“jumat”); break; case 6 : System.out.println(“sabtu”); break; case 7 : System.out.println(“minggu”); break; default : System.out.println(“salah”); }
  • 13. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 13 3. PERULANGAN Perulangan atau looping adalah bagian kode program yang bertugas melakukan suatu proses terus-menerus sampai kondisi berhenti terpenuhi. Secara umum perulangan dibagi tiga, yaitu perulangan for, perulangan while-do dan perulangan repeat-until. 3.1 Perulangan For Perulangan for digunakan jika sudah dapat dipastikan kapan pengulangan berhenti. Dengan kata lain, jumlah perulangan yang dibutuhkan sudah diketahui sebelumnya. Ada dua model perulangan dalam for, yaitu perulangan for naik dan perulangan for turun. (a) Perulangan for naik bentuk umum : Algoritma Java for namavariabel ← nilaiawal to nilaiakhir do for (namavariabel = nilaiawal ; namavariabel proses_perulangan operatorrelasi nilaiakhir ; namavariabel++) end for { proses_perulangan; } contoh : Algoritma Java for i ← 1 to 10 do for (i=1 ; i<=10 ; i++) write(“angka ”, i) { end for System.out.println(“angka ” +i); } (b) Perulangan for turun bentuk umum : Algoritma Java for namavariabel ← nilaiawal downto for (namavariabel = nilaiawal ; namavariabel nilaiakhir do operatorrelasi nilaiakhir ; namavariabel--) proses_perulangan { end for proses_perulangan; }
  • 14. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 14 contoh : Algoritma Java for i ← 10 downto 1 do for (i=10 ; i>=1 ; i--) write(“angka ”, i) { end for System.out.println(“angka ” +i); } 3.2 Perulangan While-Do Perulangan while-do biasanya digunakan jika banyaknya perulangan tidak diketahui. Misalnya pada program login password, dimana program akan terus mengulang meminta password selama password masih salah, dan jika password benar proses perulangan berhenti. bentuk umum : Algoritma Java while kondisimengulang do while (kondisimengulang) aksi { end while aksi; } contoh : Algoritma Java password : string String password; write (“masukkan password”) password = JoptionPane.showInput read (password) Dialog(null,”masukkan password”); while password <> “123” do while (!password.equals(“123”)) write (“password salah”) { write (“masukkan password”) JoptionPane.showMessageDialog read (password) (null,”password salah”); end while password = JoptionPane.showInput Dialog(null,”masukkan password”); }
  • 15. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 15 3.3 Perulangan Repeat-Until Perulangan repeat-until juga dapat digunakan jika jumlah perulangan tidak diketahui, namun prinsip kerjanya berbeda dengan perulangan while-do. Pada perulangan while-do program akan menyesuaikan variabel dengan kondisi perulangan, jika tidak memenuhi maka perulangan tidak dilakukan. Berbeda dengan repeat-until karena minimal perulangan akan dijalankan sekali sebelum masuk ke kondisi perulangan. Hal tersebut dapat terjadi karena perulangan repeat-until meletakkan kondisi perulangannya dibagian akhir. bentuk umum : Algoritma Java repeat do aksi { until kondisiberhenti aksi; } while (kondisiperulangan); contoh : Algoritma Java password : string String password; repeat do read (password) { until password = “sandi123” password = JoptionPane.showInput Dialog(null,”masukkan password”); } while (!password.equals(“sandi123”));
  • 16. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 16 4. LARIK 4.1 Definisi Larik atau array dapat didefinisikan sebagai tabel yang terstruktur. Sebuah array terdiri dari tabel-tabel yang dapat diisi dengan variabel-variabel bertipe sama. Array bertipe integer hanya dapat menampung integer, array bertipe char hanya dapat menampung karakter. Tiap tabel memiliki indeks (nomor tabel), pada java indeks dimulai dari 0 (nol). Tiap tabel dapat diisi oleh satu variabel. Secara umum array dibedakan berdasarkan tingkatannya. Array 1 tingkat hanya memiliki tabel utama. Array 2 tingkat memiliki tabel utama dan sub-tabel. Array 3 tingkat memiliki tabel utama, sub-tabel dan sub-sub-tabel. Untuk memperjelas, perhatikan ilustrasi berikut: Array 1 tingkat : [4] indeks 0 1 2 3 tingkat 1 Array 2 tingkat : [4] [2] indeks 0 1 2 3 tingkat 1 0.0 0.1 1.0 1.1 2.0 2.1 3.0 3.1 tingkat 2 Array 3 tingkat : [2] [2] [2] 0 1 tingkat 1 indeks 0.0 0.1 1.0 1.1 tingkat 2 0.0.0 0.0.1 0.1.0 0.1.1 1.0.0 1.0.1 1.1.0 1.1.1 tingkat 3
  • 17. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 17 4.2 Array 1 Tingkat Array 1 tingkat hanya terdiri atas satu jenis indeks. Saat mendeklarasikan array kita harus menentukan banyaknya indeks dan tipe data untuk variabel. (a) Deklarasi array bentuk umum : Algoritma Java namaarray : array [1...jumlahindeks] of tipedata namaarray [] = new tipedata tipedata [jumlahindeks]; contoh : Algoritma Java hari : array [1...7] of string String hari [] = new String [7]; ruang : array [1...100] of integer int ruang [] = new int [100]; (b) Mengisi indeks array Bentuk umum : Algoritma Java namaarray[indeks] ← nilai namaarray[indeks] = nilai; contoh : Algoritma Java hari[1] ← “senin” hari[0] = “senin”; ruang[1] ← 45 ruang[0] = 45; (c) Mengakses nilai pada indeks tertentu Bentuk umum : Algoritma Java namaarray[indeks] namaarray[indeks]; contoh : Algoritma Java hari[3] hari[2]; ruang[50] ruang[49];
  • 18. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 18 4.3 Array 2 Tingkat Pada dasarnya konsep array 2 tingkat sama seperti array 1 tingkat, hanya saja pada deklarasi array 2 tingkat ada dua macam indeks yang harus kita tentukan. Salah satu penggunaan array 2 tingkat adalah pada operasi matriks, dimana saat mendeklarasikan array kita harus menentukan jumlah indeks kolom dan jumlah indeks baris. Berikut ini adalah penjelasan untuk array matriks yang terdiri atas 2 kolom dan 3 baris. (a) Deklarasi array bentuk umum : Algoritma Java namaarray : array tipedata namaarray [] [] = new tipedata [1...jumlah_indeks_pertama] [jumlah_indeks_pertama] [1...jumlah_indeks_kedua] of tipedata [jumlah_indeks_kedua]; contoh : Algoritma Java matriks : array [1...2] [1...3] of integer int matriks [] [] = new int [2] [3]; (b) Mengisi indeks array Bentuk umum : Algoritma Java namaarray[indekspertama] [indekskedua] ← namaarray[indekspertama] [indekskedua] = nilai nilai; contoh : Algoritma Java matriks[1] [3]← 2 matriks[0][2] = 2; (c) Mengakses nilai pada indeks tertentu Bentuk umum : Algoritma Java namaarray[indekspertama] [indekskedua] namaarray[indekspertama] [indekskedua]; contoh : Algoritma Java matriks[2] [2] matriks[1] [1];
  • 19. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 19 5. METODE 5.1 Definisi Metode atau method adalah sebuah blok program yang berisikan instruksi singkat yang mengerjakan tugas atau proses tertentu. Metode bersifat khas, artinya metode yang satu sangat berbeda dengan metode lainnya. Metode memiliki fungsi yang unik, sehingga dengan adanya metode adalam sebuah program, program akan menjadi semakin sederhana. Saat kita bertujuan membuat program yang berisikan beberapa instruksi yang sama, menggunakan metode merupakan pilihan yang tepat. Kita cukup membuat sebuah metode yang berisikan instruksi. Selanjutnya, jika kita membutuhkan instruksi tersebut, kita tinggal memanggil metode yang telah kita buat tadi, demikian seterusnya. Jadi kesimpulannya, dengan metode kita tidak perlu membuat beberapa instruksi yang sama dalam sebuah program. Saat instruksi dibutuhkan, kita tinggal memanggil metode yang memuat instruksi tersebut. Metode dapat dipanggil/digunakan lebih dari sekali. Dalam Java, ada dua macam metode, yaitu Prosedur dan Fungsi. Prosedur merupakan metode yang hanya berisikan proses, sedangkan Fungsi adalah metode yang berisikan proses dan menghasilkan nilai keluaran. 5.2 Prosedur Berdasarkan jenis input-output prosedur dibagi menjadi empat macam, yaitu Prosedur Input, Prosedur Output, Prosedur Input dan Output, dan Prosedur Input/Output. Berikut ini adalah cara kerja dari masing-masing jenis prosedur tersebut. Prosedur Input. Pada awalnya prosedur sudah mendeklarasikan variabel input. Selanjutnya variabel input dimasukkan kedalam prosedur. Setelah prosedur dijalankan nilai variabel input tersebut tidak berubah. Prosedur Output. Pada awalnya prosedur sudah mendeklarasikan variabel output. Nilai variabel output akan didefinisikan saat prosedur dijalankan. Prosedur Input dan Output. Pada awalnya prosedur sudah mendeklarasikan variabel input dan variabel output. Selanjutnya variabel input dimasukkan kedalam prosedur. Setelah prosedur dijalankan nilai variabel input tidak berubah. Hasil yang diperoleh dari proses akan didefinisikan sebagai nilai output. Prosedur Input/Output. Pada awalnya prosedur sudah mendeklarasikan variabel input/output. Selanjutnya variabel input dimasukkan kedalam prosedur. Setelah prosedur
  • 20. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 20 dijalankan nilai variabel input akan berubah yang kemudian akan didefinisikan menjadi variabel output. (a) Deklarasi prosedur Cara mendeklarasikan prosedur berbeda-beda, tergantung pada jenisnya. Pada tabel dibawah ini akan dijelaskan cara mendeklarasikan setiap jenis prosedur tersebut. bentuk umum : Jenis Algoritma Java Prosedur procedure namaprosedur (input : public static void namaprosedur Input namavariabel1 : tipedata1, (tipedata1 namavariabel1, namavariabel-n : tipedata-n) tipedata-n namavariabel-n) { {proses} //proses end procedure } Prosedur procedure namaprosedur (output : public static void namaprosedur Output namavariabel1 : tipedata1, (tipedata1 namavariabel1, namavariabel-n : tipedata-n) tipedata-n namavariabel-n) { {proses} //proses end procedure } Prosedur procedure namaprosedur (input : public static void namaprosedur Input dan namavariabelin1 : tipedatain1, (tipedatain1 namavariabelin1, Output namavariabelin-n : tipedatain-n, tipedatain-n namavariabelin-n, output : tipedataout1 namavariabelout1, namavariabelout1 : tipedataout1, tipedataout-n namavariabelout-n) namavariabelout-n : tipedataout-n) { {proses} //proses end procedure } Prosedur procedure namaprosedur (input/ public static void namaprosedur Input/Output output : namavariabel1 : tipedata1, (tipedatainout1 namavariabelinout1, namavariabel-n : tipedata-n) tipedatainout-n tipedatainout-n) { {proses} //proses end procedure }
  • 21. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 21 contoh : Jenis Algoritma Java Prosedur procedure tulis (input : a : integer) public static void tulis (int a) Input { write (a) System.out.print(a); end procedure } Prosedur procedure baca (output : a : integer) public static void baca (int a) Output { a ← read (a) a = JoptionPane.showInputDialog (null,“masukkan nilai “ +a); end procedure } Prosedur procedure nilailain (input : a : integer public static void nilailain (int a, int b) Input dan output : b : integer) { Output b ← a+5 b = a+5; end procedure } Prosedur procedure nilaibaru (input/output : public static void nilaibaru (int a) Input/Output a : integer) { a ← a*3 a = a*3; end procedure } (b) Memanggil prosedur Setelah prosedur dideklarasikan, tentu saat instruksi pada prosedur tersebut dibutuhkan kita akan memanggil prosedurnya. Berikut ini adalah bentuk umum dan contoh memanggil prosedur. bentuk umum : Algoritma Java namaprosedur (variabelinput) namaprosedur (variabelinput); contoh : Algoritma Java tulis (10) tulis (10);
  • 22. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 22 5.3 Fungsi Fungsi adalah metode yang berisikan satu atau sekumpulan proses yang kemudian menghasilkan nilai keluaran. (a) Deklarasi fungsi bentuk umum : Algoritma Java function namafungsi public static tipedataout namafungsi (namavariabelin1 : tipedatain1, (tipedatain1 namavariabelin1, namavariabelin-n : tipedatain-n) -> tipedatain-n namavariabelin-n) tipedataout { {proses} //proses return (variabeloutput) return(variabeloutput); end function } contoh : Algoritma Java function rumuskali (a : integer, b : integer) -> public static int rumuskali (int a, int b) integer { hasil : integer int hasil; hasil ← a*b hasil = a*b; return (hasil) return (hasil); end function } (b) Memanggil fungsi bentuk umum : Algoritma Java namavariabel ← namafungsi (variabelinput) namavariabel = namafungsi (variabelinput); contoh : Algoritma Java hasilperkalian ← rumuskali (2,5) hasilperkalian = rumuskali (2,5);
  • 23. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 23 6. REKURSI 6.1 Definisi Rekursi atau recurrence dapat didefinisikan sebagai metode yang mengulang prosesnya sendiri. Saat sebuah rekursi dipanggil, proses akan dijalankan dan diulang sampai kondisi berhenti terpenuhi. Dua hal yang selalu ada dalam sebuah rekursi adalah Blok Rekursi dan Blok Basis. Blok Rekursi merupakan kode program yang memuat kondisi mengulang. Blok inilah yang nantinya berfungsi mengulang prosesnya terus-menerus. Blok Basis merupakan kode program yang memuat kondisi berhenti. Blok inilah yang menyebabkan sebuah rekursi menghentikan prosesnya, sehingga diperoleh hasil akhir. Rekursi digunakan pada metode yang menggunakan perhitungan/proses berulang, semisal perkalian, pangkat, dan faktorial. Perkalian merupakan perhitungan berulang dari proses penjumlahan. Pangkat merupakan perhitungan berulang dari proses perkalian. Begitu pula faktorial yang merupakan perhitungan berulang dari proses perkalian mundur. 6.2 Bentuk Umum Rekursi (a) Konsep Untuk menyusun rekursi, terlebih dahulu kita harus menentukan konsep. Konsep bukanlah bagian program, melainkan hanya merupakan cara kerja atau proses dasar sebuah rekursi. Konsep ini akan memudahkan kita dalam menyusun rekursi kedalam kode program. Konsep berisikan urutan/langkah terperinci yang menjelaskan proses rekursi dari awal sampai akhir. Konsep terdiri atas permisalan, langkah-langkah, dan hasil akhir. Permisalan dapat berisikan nilai awal. Langkah-langkah meliputi urutan dan hasil sementara di setiap perulangan. Hasil akhir merupakan nilai dari proses rekursi. (b) Deklarasi rekursi Telah kita ketahui bersama bahwa rekursi merupakan metode. Oleh sebab itu cara mendeklarasikan rekursi mirip dengan cara mendeklarasikan metode. Ada sedikit perbedaan dalam mendeklarasikan rekursi, yaitu kita harus memisahkan antara blok perulangan dan blok penghentian.
  • 24. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 24 Algoritma Java method* namarekursi public static tipedataout** namarekursi (namavariabelin1 : tipedatain1, (tipedatain1 namavariabelin1, namavariabelin-n : tipedatain-n) -> tipedatain-n namavariabelin-n) tipedataout { if (kondisiberhenti)if (kondisiberhenti) then {1 return(nilainetral***) 1 return(nilainetral***); else {kondisimengulang} } 2 return(pemanggilanulang) else //kondisimengulang end if 2 { end method**** return(pemanggilanulang); } } ket: * method = dapat berupa procedure atau function ** tipedataout = void untuk procedure dan tipe data tertentu untuk function *** nilainetral = merupakan nilai yang tidak mengubah hasil sebenarnya **** end method = dapat berupa end procedure atau end function 1 2 blok basis blok rekursi (c) Memanggil rekursi Sama halnya dengan metode, rekursi juga akan dipanggil jika dibutuhkan. Saat rekursi dipanggil proses didalam rekursi akan berjalan, berulang, berhenti lalu memberikan hasil akhir. Cara memanggil rekursi juga mirip dengan cara memanggil metode. Algoritma Java namavariabel ← namarekursi (variabelinput) namavariabel = namarekursi (variabelinput); 6.3 Contoh Rekursi Penerapan rekursi sangat luas, namun disini hanya akan dijelaskan beberapa contoh saja seperti Rekursi Perkalian, Rekursi Pangkat, dan Rekursi Faktorial. Contoh 1 : Rekursi Perkalian dengan Proses Penjumlahan (a) Konsep misalnya : 5 x 3 maka : - perulangan pertama : 5 + (5x2) - perulangan kedua : 5 + 5 + (5x1) - perulangan ketiga : 5 + 5 + 5 + (5x0) - perulangan keempat : 5 + 5 + 5 + 0 - hasil akhir = 15 Perkalian dengan 0 memberi hasil 0 dan merupakan kondisi berhenti
  • 25. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 25 (b) Deklarasi rekursi Algoritma Java function rekursikali (a : integer, b : integer) -> public static int rekursikali (int a, int b) integer { if (b==0) then if (b==0) { return(0) return(0); else {b>0} } return(a+rekursikali(a,(b-1))) else //b>0 end if { end function return(a+rekursikali(a,(b-1))); } } (c) Memanggil rekursi Algoritma Java hasilkali ← rekursikali (5,3) hasilkali = rekursikali (5,3); Contoh 2 : Rekursi Pangkat dengan Proses Perkalian (a) Konsep misalnya : 2 4 maka : - perulangan pertama : 2 x (2 3 ) - perulangan kedua : 2 x 2 x (2 2 ) - perulangan ketiga : 2 x 2 x 2 x (2 1 ) - perulangan keempat : 2 x 2 x 2 x 2 x (2 0 ) - perulangan kelima : 2 x 2 x 2 x 2 x 1 - hasil akhir = 16 (b) Deklarasi rekursi Pangkat 0 memberi hasil 1 dan merupakan kondisi berhenti Algoritma Java function rekursipangkat (a: integer, b: integer) public static int rekursipangkat (int a, int b) -> integer { if (b==0) then if (b==0) { return(1) return(1); else {b>0} } return(a*rekursipangkat(a,(b-1))) else //b>0 end if { end function return(a*rekursipangkat(a,(b-1))); } }
  • 26. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 26 (c) Memanggil rekursi Algoritma Java hasilpangkat ← rekursipangkat (2,4) hasilpangkat = rekursipangkat (2,4); Contoh 3 : Rekursi Faktorial dengan Proses Perkalian Mundur (a) Konsep misalnya : 6! maka : - perulangan pertama : 6 x (5!) - perulangan kedua : 6 x 5 x (4!) - perulangan ketiga : 6 x 5 x 4 x (3!) - perulangan keempat : 6 x 5 x 4 x 3 x (2!) - perulangan kelima : 6 x 5 x 4 x 3 x 2 x (1!) - perulangan keenam : 6 x 5 x 4 x 3 x 2 x 1 x (0!) - perulangan ketujuh : 6 x 5 x 4 x 3 x 2 x 1 x 1 - hasil akhir = 720 (b) Deklarasi rekursi Faktorial 0 memberi hasil 1 dan merupakan kondisi berhenti Algoritma Java function rekursifaktorial (a : integer) public static int rekursifaktorial (int a) -> integer { if (a==0) then if (a==0) { return(1) return(1); else {b>0} } return(a*rekursifaktorial(a -1)) else //b>0 end if { end function return(a*rekursifaktorial(a-1)); } } (c) Memanggil rekursi Algoritma Java hasilfaktorial ← rekursifaktorial (6) hasilfaktorial = rekursifaktorial (6);
  • 27. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 27 7. PENGURUTAN Pengurutan atau sorting adalah sekumpulan instruksi yang bertugas mengurutkan sekumpulan data. Ada dua jenis pengurutan yaitu pengurutan menaik (ascending) dan pengurutan menurun (descending). Berdasarkan cara kerjanya, pengurutan dibagi tiga yaitu Pengurutan Sisipan (Insertion Sort), Pengurutan Seleksi (Selection Sort), dan Pengurutan Gelembung (Bubble Sort). Setiap metode pengurutan selalu didasarkan pada kriteria. Kriteria adalah suatu kondisi yang menyatakan minimum atau maksimum, tergantung pada jenis pengurutan, menaik atau menurun. 7.1 Pengurutan Sisipan Pengurutan sisipan merupakan suatu metode pengurutan yang menjadikan sebuah data sebagai data sisip, yang kemudian membandingkan data sisip tersebut dengan data-data sebelumnya, lalu meletakkan data sisip tersebut pada tempat yang sesuai. Pada perulangan pertama data pada indeks kedua dijadikan data sisip, kemudian dibandingkan dengan data pertama. Jika ternyata memenuhi kriteria maka data tersebut diletakkan pada tempat yang sesuai. Selanjutnya pada perulangan kedua data pada indeks ketiga dijadikan data sisip, kemudian dibandingkan dengan data pertama dan data kedua. Jika memenuhi kriteria maka data tersebut diletakkan pada tempat yang sesuai, demikian seterusnya. Ket Algoritma Java 1 import javax.swing.JOptionPane; 2 Algorithm PengurutanSisipan public class PengurutanSisipan { public static void main (String args []) { 3 bilangan : array [1...n] of integer int n = Integer.parseInt (JOptionPane.showInputDialog (null,"Masukkan banyaknya bilangan")); 4 DEKLARASI : int bilangan [] = new int [n]; n : integer i, j : integer outputawal : string ← "" outputakhir : string ← "" 5 DESKRIPSI : int i, j; write ("Masukkan banyaknya bilangan") String outputawal = "";
  • 28. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 28 read (n) String outputakhir = ""; 6 for i ← 1 to n do for (i=0;i<n;i++) write ("Masukkan bilangan ke ", (i+1)) { bilangan[i] ← read (bilangan[i]) bilangan[i] = Integer.parseInt (JOptionPane.showInputDialog outputawal+ ← bilangan[i], " " (null,"Masukkan bilangan ke " +(i+1))); end for outputawal += bilangan[i]+ " "; } 7 for i ← 2 to n do for (i=1;i<n;i++) datasisip : integer { datasisip ← bilangan*i+ int datasisip = bilangan[i]; j = i-1; j ← i-1 while (kondisi kriteria* AND j>0) while (kondisi kriteria* && j>0) { bilangan[j+1] ← bilangan *j+ bilangan[j+1] = bilangan[j]; j = j-1 j = j-1; end while } bilangan[j+1] ← datasisip bilangan[j+1] = datasisip; end for } 8 for i ← 1 to n do for (i=0;i<n;i++) outputakhir+ ← bilangan[i], " " { end for outputakhir += bilangan[i]+ " "; } 9 write ("Susunan awal: ", outputawal, JOptionPane.showMessageDialog(null,"Susu "newlineSusunan akhir: ", outputakhir) nan awal: " +outputawal+ "nSusunan akhir: " +outputakhir); 10 } 11 end Algorithm } ket: (1) Java : menggunakan kotak dialog JOptionPane. (2) Algoritma : nama algoritma, awal algoritma. Java : nama kelas (yang juga merupakan awal kelas), awal program utama (main program). (3) Algoritma : deklarasi array bilangan bertipe integer dengan jumlah indeks sebanyak n. Java : meminta nilai n dan mendefenisikan n sebagai banyaknya bilangan. (4) Algoritma : deklarasi variabel. Java : deklarasi array bilangan bertipe integer dengan jumlah indeks sebanyak n. (5) Algoritma : awal deskripsi, meminta nilai n dan mendefenisikan n sebagai banyaknya bilangan. Java : deklarasi variabel. (6) Algoritma : perulangan untuk mengisi indeks array bilangan. Lalu merekam setiap
  • 29. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 29 indeks array bilangan dan menyimpannya pada variabel outputawal. Java : perulangan untuk mengisi indeks array bilangan. Lalu merekam setiap indeks array bilangan dan menyimpannya pada variabel outputawal. (7) Algoritma : perulangan untuk mengurutkan data. Java : perulangan untuk mengurutkan data. ket : *kondisi kriteria, untuk ascending (datasisip<bilangan[j]) untuk descending (datasisip>bilangan[j]) (8) Algoritma : Merekam setiap indeks array bilangan yang telah diurutkan dan menyimpannya pada variabel outputakhir. Java : Merekam setiap indeks array bilangan yang telah diurutkan dan menyimpannya pada variabel outputakhir. (9) Algoritma : menampilkan hasil pengurutan. Java : menampilkan hasil pengurutan. (10) Java : akhir program utama (main program). (11) Algoritma : akhir algoritma Java : akhir kelas 7.2 Pengurutan Seleksi Pengurutan seleksi merupakan suatu metode pengurutan yang membandingkan beberapa data dan memilih satu data yang memenuhi kriteria, kemudian data tersebut ditukartempatkan ke depan. Pada perulangan pertama dilakukan perbandingan dari data pertama hingga data terakhir, lalu dipilih satu data yang memenuhi kriteria, kemudian data tersebut ditukartempatkan dengan data pertama. Selanjutnya pada perulangan kedua dilakukan perbandingan dari data kedua hingga data terakhir, lalu dipilih satu data yang memenuhi kriteria, kemudian data tersebut ditukartempatkan dengan data kedua, demikian seterusnya. Ket Algoritma Java 1 import javax.swing.JOptionPane; 2 Algorithm PengurutanSeleksi public class PengurutanSeleksi { public static void main (String args []) { 3 bilangan : array [1...n] of integer int n = Integer.parseInt (JOptionPane.showInputDialog (null,"Masukkan banyaknya bilangan")); 4 DEKLARASI : int bilangan [] = new int [n]; n : integer i, j : integer outputawal : string ← "" outputakhir : string ← ""
  • 30. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 30 5 DESKRIPSI : int i, j; write ("Masukkan banyaknya bilangan") String outputawal = ""; read (n) String outputakhir = ""; 6 for i ← 1 to n do for (i=0;i<n;i++) write ("Masukkan bilangan ke ", (i+1)) { bilangan[i] ← read (bilangan[i]) bilangan[i] = Integer.parseInt (JOptionPane.showInputDialog outputawal+ ← bilangan[i], " " (null,"Masukkan bilangan ke " +(i+1))); end for outputawal += bilangan[i]+ " "; } 7 for i ← 1 to (n-1) do for (i=0;i<n-1;i++) for j ← (i+1) to n do { if (kondisi tergantung kriteria*) then for (j=i+1;j<n;j++) { temp : integer if (kondisi tergantung kriteria*) temp ← bilangan*i+ { bilangan[i] ← bilangan*j+ int temp = bilangan[i]; bilangan[j] ← temp bilangan[i] = bilangan[j]; end if bilangan[j] = temp; end for } end for } } 8 for i ← 1 to n do for (i=0;i<n;i++) outputakhir+ ← bilangan[i], " " { end for outputakhir += bilangan[i]+ " "; } 9 write ("Susunan awal: ", outputawal, JOptionPane.showMessageDialog(null,"Susu "newlineSusunan akhir: ", outputakhir) nan awal: " +outputawal+ "nSusunan akhir: " +outputakhir); 10 } 11 end Algorithm } ket: keterangan lainnya dapat dilihat pada (7.1 Pengurutan Sisipan) (7) Algoritma : perulangan untuk mengurutkan data. Java : perulangan untuk mengurutkan data. ket : *kondisi tergantung kriteria, untuk ascending (bilangan[i]>bilangan[j]) untuk descending (bilangan[i]<bilangan[j])
  • 31. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 31 7.3 Pengurutan Gelembung Pengurutan gelembung merupakan suatu metode pengurutan yang membandingkan dua buah data secara terus-menerus. Proses membandingkan akan berhenti saat proses perulangan selesai. Pada setiap perulangan hanya terjadi satu kali proses perbandingan. Pada perulangan pertama dilakukan perbandingan antara data pertama dan data kedua. Selanjutnya pada perulangan kedua dilakukan perbandingan antara data kedua dan data ketiga, demikian seterusnya. Ket Algoritma Java 1 import javax.swing.JOptionPane; 2 Algorithm PengurutanGelembung public class PengurutanGelembung { public static void main (String args []) { 3 bilangan : array [1...n] of integer int n = Integer.parseInt (JOptionPane.showInputDialog (null,"Masukkan banyaknya bilangan")); 4 DEKLARASI : int bilangan [] = new int [n]; n : integer i, j : integer outputawal : string ← "" outputakhir : string ← "" 5 DESKRIPSI : int i, j; write ("Masukkan banyaknya bilangan") String outputawal = ""; read (n) String outputakhir = ""; 6 for i ← 1 to n do for (i=0;i<n;i++) write ("Masukkan bilangan ke ", (i+1)) { bilangan[i] ← read (bilangan[i]) bilangan[i] = Integer.parseInt (JOptionPane.showInputDialog outputawal+ ← bilangan[i], " " (null,"Masukkan bilangan ke " +(i+1))); end for outputawal += bilangan[i]+ " "; } 7 for i ← 1 to (n-1) do for (i=0;i<n-1;i++) for j ← 1 to (n-1) do { if (kondisi tergantung kriteria*) then for (j=0;j<n-1;j++) { temp : integer if (kondisi tergantung kriteria*) temp ← bilangan[j] { bilangan[j] ← bilangan*j+1] int temp = bilangan[j]; bilangan[j+1] ← temp bilangan[j] = bilangan[j+1]; end if bilangan[j+1] = temp; end for } }
  • 32. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 32 end for } 8 for i ← 1 to n do for (i=0;i<n;i++) outputakhir+ ← bilangan[i], " " { end for outputakhir += bilangan[i]+ " "; } 9 write ("Susunan awal: ", outputawal, JOptionPane.showMessageDialog(null,"Susu "newlineSusunan akhir: ", outputakhir) nan awal: " +outputawal+ "nSusunan akhir: " +outputakhir); 10 } 11 end Algorithm } ket: keterangan lainnya dapat dilihat pada (7.1 Pengurutan Sisipan) (7) Algoritma : perulangan untuk mengurutkan data. Java : perulangan untuk mengurutkan data. ket : *kondisi tergantung kriteria, untuk ascending (bilangan[j]>bilangan[j+1]) untuk descending (bilangan[j]<bilangan[j+1])
  • 33. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 33 8. PENCARIAN Pencarian atau searching adalah sekumpulan instruksi yang bertugas menemukan nilai suatu data. Dalam kehidupan nyata pencarian merupakan proses yang sangat penting. Berdasarkan cara kerjanya, pencarian dibagi dua yaitu Pencarian Beruntun (Sequential Search) dan Pencarian Bagi Dua (Binary Search). 8.1 Pencarian Beruntun Pencarian beruntun dapat diimplementasikan pada data yang telah terurut maupun belum. Pencarian beruntun dilakukan dengan menelusuri data satu persatu, kemudian dicocokkan dengan data yang dicari. Jika data yang dicari sama dengan data yang dicocokkan, maka penelusuran dihentikan, sebaliknya jika data yang dicari belum sama dengan data yang dicocokkan maka penelusuran dilanjutkan, demikian seterusnya. Ket Algoritma Java 1 import javax.swing.JOptionPane; 2 Algorithm PencarianBeruntun public class PencarianBeruntun { public static void main (String args []) { 3 bilangan : array [1...n] of integer int n = Integer.parseInt (JOptionPane.showInputDialog (null,"Masukkan banyaknya bilangan")); 4 DEKLARASI : int bilangan [] = new int [n]; n : integer i : integer bilygdicari : integer indeks : integer ditemukan : boolean 5 DESKRIPSI : int i; write ("Masukkan banyaknya bilangan") boolean ditemukan; read (n) 6 for i ← 1 to n do for (i=0;i<n;i++) write ("Masukkan bilangan ke ", i) { bilangan[i] ← read (bilangan[i]) bilangan[i] = Integer.parseInt (JOptionPane.showInputDialog end for (null,"Masukkan bilangan ke " +(i+1))); } 7 write ("Masukkan bilangan yang dicari :") int bilygdicari = Integer.parseInt read (bilygdicari) (JOptionPane.showInputDialog (null,"Masukkan bilangan yang dicari :"));
  • 34. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 34 8 ditemukan ← false ditemukan = false; 9 i ← 0 i = 0; 10 indeks ← 0 int indeks = 0; 11 repeat do if (bilangan[i]=bilygdicari) then { ditemukan ← true if (bilangan[i]==bilygdicari) { end if ditemukan = true; i ← i+1 } until (ditemukan=true OR i=(n-1)) i = i+1; } while (ditemukan==false || i!=(n-1)) 12 indeks ← i+1 indeks = i+1; 13 if (ditemukan=true) then if (ditemukan==true) write ("Ditemukan pada indeks ke “, { indeks) System.out.println("Ditemukan pada indeks ke " +indeks); else } write ("Tidak ditemukan") else end if { System.out.println("Tidak ditemukan"); } 14 } 15 end Algorithm } ket: (1) Java : menggunakan kotak dialog JOptionPane. (2) Algoritma : nama algoritma, awal algoritma. Java : nama kelas (yang juga merupakan awal kelas), awal program utama (main program). (3) Algoritma : deklarasi array bilangan bertipe integer dengan jumlah indeks sebanyak n. Java : meminta nilai n dan mendefenisikan n sebagai banyaknya bilangan. (4) Algoritma : deklarasi variabel. Java : deklarasi array bilangan bertipe integer dengan jumlah indeks sebanyak n. (5) Algoritma : awal deskripsi, meminta nilai n dan mendefenisikan n sebagai banyaknya bilangan. Java : deklarasi variabel. (6) Algoritma : perulangan untuk mengisi indeks array bilangan. Java : perulangan untuk mengisi indeks array bilangan. (7) Algoritma : meminta nilai bilygdicari dan mendefenisikan bilygdicari sebagai bilangan yang ingin dicari. Java : meminta nilai bilygdicari dan mendefenisikan bilygdicari sebagai bilangan yang ingin dicari. (8) Algoritma : memberi nilai ditemukan dengan false. Java : memberi nilai ditemukan dengan false.
  • 35. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 35 (9) Algoritma : memberi nilai i dengan 0. Java : memberi nilai i dengan 0. (10) Algoritma : memberi nilai indeks dengan 0. Java : deklarasi indeks sebagai integer, dan memberi nilai indeks dengan 0. (11) Algoritma : perulangan untuk mencocokkan bilygdicari dengan setiap indeks array, perulangan akan berhenti jika bilygdicari sama dengan indeks tertentu. Java : perulangan untuk mencocokkan bilygdicari dengan setiap indeks array, perulangan akan berhenti jika bilygdicari sama dengan indeks tertentu. (12) Algoritma : memberi nilai indeks dengan i+1. Java : memberi nilai indeks dengan i+1. (13) Algoritma : menampilkan pesan ditemukan atau tidak. Java : menampilkan pesan ditemukan atau tidak. (14) Java : akhir program utama (main program). (15) Algoritma : akhir algoritma Java : akhir kelas 8.2 Pencarian Bagi Dua Pencarian bagi dua hanya dapat diimplementasikan pada data yang telah terurut. Pencarian bagi dua dilakukan dengan membagi data menjadi dua bagian, kemudian dicocokkan dengan data yang dicari. Jika data yang dicari sama dengan data yang dicocokkan, maka pembagian dihentikan, sebaliknya jika data yang dicari belum sama dengan data yang dicocokkan maka pembagian dilanjutkan, demikian seterusnya. Ket Algoritma Java 1 import javax.swing.JOptionPane; 2 Algorithm PencarianBagiDua public class PencarianBagiDua { public static void main (String args []) { 3 bilangan : array [1...n] of integer int n = Integer.parseInt (JOptionPane.showInputDialog (null,"Masukkan banyaknya bilangan")); 4 DEKLARASI : int bilangan [] = new int [n]; n : integer i : integer awal : integer akhir : integer mid : integer bilygdicari : integer ditemukan : boolean 5 DESKRIPSI : int i; write ("Masukkan banyaknya bilangan") int awal; read (n) int akhir;
  • 36. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 36 int mid; boolean ditemukan; 6 for i ← 1 to n do for (i=0;i<n;i++) write ("Masukkan bilangan ke ", (i+1)) { bilangan[i] ← read (bilangan[i]) bilangan[i] = Integer.parseInt (JOptionPane.showInputDialog end for (null,"Masukkan bilangan ke " +(i+1))); } 7 write ("Masukkan bilangan yang dicari :") int bilygdicari = Integer.parseInt read (bilygdicari) (JOptionPane.showInputDialog (null,"Masukkan bilangan yang dicari :")); 8 ditemukan ← false ditemukan = false; 9 awal ← 1 awal = 1; 10 akhir ← n akhir = n; 11 repeat do mid ← (awal+akhir)div2 { if (bilangan[mid]=bilygdicari) then mid = (awal+akhir)/2 if (bilangan[mid]==bilygdicari) ditemukan ← true { else ditemukan = true; if (bilangan[mid]>bilygdicari) then } akhir ← mid-1 else if (bilangan[mid]>bilygdicari) else { awal ← mid+1 akhir = mid-1; end if } else end if { until (ditemukan=true OR awal=akhir) awal = mid+1; } } while (ditemukan==false || awal!=akhir) 12 if (ditemukan=true) then if (ditemukan==true) write ("Ditemukan pada indeks ke “, { mid) System.out.println("Ditemukan pada indeks ke " +mid); else } write ("Tidak ditemukan") else end if { System.out.println("Tidak ditemukan"); } 13 } 14 end Algorithm }
  • 37. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 37 ket: (1) Java : menggunakan kotak dialog JOptionPane. (2) Algoritma : nama algoritma, awal algoritma. Java : nama kelas (yang juga merupakan awal kelas), awal program utama (main program). (3) Algoritma : deklarasi array bilangan bertipe integer dengan jumlah indeks sebanyak n. Java : meminta nilai n dan mendefenisikan n sebagai banyaknya bilangan. (4) Algoritma : deklarasi variabel. Java : deklarasi array bilangan bertipe integer dengan jumlah indeks sebanyak n. (5) Algoritma : awal deskripsi, meminta nilai n dan mendefenisikan n sebagai banyaknya bilangan. Java : deklarasi variabel. (6) Algoritma : perulangan untuk mengisi indeks array bilangan. Java : perulangan untuk mengisi indeks array bilangan. (7) Algoritma : meminta nilai bilygdicari dan mendefenisikan bilygdicari sebagai bilangan yang ingin dicari. Java : meminta nilai bilygdicari dan mendefenisikan bilygdicari sebagai bilangan yang ingin dicari. (8) Algoritma : memberi nilai ditemukan dengan false. Java : memberi nilai ditemukan dengan false. (9) Algoritma : memberi niali awal dengan 1. Java : memberi niali awal dengan 1. (10) Algoritma : memberi niali akhir dengan n. Java : memberi niali akhir dengan n. (11) Algoritma : perulangan untuk mencocokkan bilygdicari dengan setiap indeks bagian tengah array, perulangan akan berhenti jika bilygdicari sama dengan indeks bagian tengah tertentu. Java : perulangan untuk mencocokkan bilygdicari dengan setiap indeks bagian tengah array, perulangan akan berhenti jika bilygdicari sama dengan indeks bagian tengah tertentu. (12) Algoritma : menampilkan pesan ditemukan atau tidak. Java : menampilkan pesan ditemukan atau tidak. (13) Java : akhir program utama (main program). (14) Algoritma : akhir algoritma Java : akhir kelas
  • 38. Muhammad Yunus, M.Kom./Diktat AlPro Java Page 38 REFERENSI Horstmann, Cay dan Cornell, Gary. 2000. Core Java Volume 1, Fundamentals. Sun Microsystems Inc. California. Kadir, Abdul. 2006. Dasar Pemrograman Java 2. Penerbit ANDI. Yogyakarta. Naughton, Patrick. 1996. The Java Handbook. McGraw-Hill Book Company. New York. Shalahuddin, M dan Rosa, A. S. 2007. Belajar Pemrograman dengan Bahasa C++ dan Java. Penerbit Informatika. Bandung.