MODUL PRAKTIKUM ALGORITMA DAN PEMROGRAMAN TAHUN AJARAN 2011/2012
TIM PENYUSUN M Ainul Yaqin
116090052
Herdianto
116104115
Adnan Hidayat P
116090080
Septian Hari
116100015
Nunung Mahmudah
116090038
Kholifatul Ummah
116100075
Fadhliamin
116090044
Hafidh Rashemi R.
116100009
Olivia Meydina A.W
116090008
Rani Auliya Syafrudin
116100061
Kartika Nur O
116090121
Moh Fahrur Rizqon
116100019
Yusfita Dyah F.
116090076
DOSEN PEMBINA Riza Agustiansyah, ST. M.Kom Seno Adi Putra, S.Si. M.T
LABORATORIUM PROGRAMMING DAN DATABASE PROGRAM STUDI SISTEM INFORMASI FAKULTAS REKAYASA INDUSTRI INSTITUT TEKNOLOGI TELKOM 2011 / 2012
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 2
Tata Tertib, Kelengkapan dan Persyaratan Praktikum Algoritma dan Pemrograman
I.
Kelengkapan dan persyaratan praktikum 1.Kelengkapan Praktikum
Kartu Praktikum Kartu praktikum dibagikan pada saat praktikum pertama dan harus segera dilengkapi dengan data – data – data data praktikan berikut foto dan cap laboratorium. Praktikan harus membawa kartu praktikum setiap mengikuti kegiatan praktikum. Apabila kartu praktikum hilang, praktikan harus mengganti sesuai dengan aslinya kemudian meminta cap laboratorium kepada asisten untuk legalisir , sebelum praktikum selanjutnya diadakan.
Tugas Bonus Tugas Bonus merupakan tugas tambahan yang bisa dikerjakan oleh praktikan untuk memperoleh tambahan nilai 10%. Tugas Bonus merupakan tugas tidak wajib. Soal Tugas Bonus berada pada tiap akhir modul, dan dapat dikerjakan sebelum melaksanakan praktikum Algoritma dan Pemrograman. Ketentuan pengerjaan Tugas Bonus akan diumumkan kemudian.
Tes Awal Tes awal dilaksanakan sebelum pelaksanaan praktikum. Pengumuman mengenai tes awal akan diumumkan kemudian. Setiap keterlambatan, praktikan diberi kesempatan untuk mengikuti tes awal tanpa diberi perpanjangan waktu.
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 1
Praktikum Setiap praktikan wajib mengikuti praktikum dengan persyaratan praktikum yang telah ditentukan. Apabila salah satu atau lebih dari syarat tersebut tidak terpenuhi maka praktikan tidak diperkenankan mengikuti praktikum dan asisten berhak mengeluarkan praktikan. Praktikan wajib mematuhi tata tertib yang ada pada Lab. Algoritma dan Pemrograman.
Tes Akhir Tes akhir merupakan tes yang dilakukan pada akhir praktikum. Pengumuman mengenai tes akhir akan diumumkan kemudian. Setiap keterlambatan, praktikan diberi kesempatan untuk mengikuti tes akhir tanpa diberi perpanjangan waktu. 2.Persyaratan Praktikum
Memenuhi seluruh kelengkapan praktikum yang tercantum pada poin sebelumnya.
II.
Tata Tertib Praktikum 1. Praktikan wajib memenuhi seluruh kelengkapan dan persyaratan Praktikum termasuk membawa kartu Praktikum. 2. Asisten dapat memberi teguran bahkan mengeluarkan praktikan yang tidak dapat menjaga ketenangan, ketertiban, kebersihan, dan kerapian laboratorium pada saat praktikum dilaksanakan. 3. Setiap praktikan wajib bertutur kata baik dan sopan dalam bersikap kepada asisten laboratorium. 4. Setiap barang yang dipinjam wajib dikembalikan ke tempat semula. 5. Tidak mengikuti praktikum salah satu modul atau lebih tanpa alasan yang jelas dan tidak dapat dipertanggungjawabkan maka praktikan tersebut diwajibkan mengulang praktikum pada modul bersangkutan di tahun berikutnya.
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 2
6. Pengumpulan Tugas Bonus dan Tugas yang berkaitan dengan praktikum hanya dilakukan di laboratorium Algoritma dan Pemrograman.
7. Seragam Untuk setiap kegiatan praktikum, praktikan diwajibkan untuk memakai seragam rapi dan sopan berupa kemeja putih dan memakai celana bahan warna biru gelap atau rok bahan panjang semata kaki warna biru gelap (seragam IT TELKOM).
8. Sanksi Keterlambatan praktikum :
Terlambat 1 – 15 menit : boleh mengikuti praktikum tanpa adanya penambahan waktu.
Terlambat > 15 menit
: tidak diperbolehkan mengikuti praktikum.
9. Selama praktikum, praktikan tidak diperkenankan meninggalkan ruangan praktikum tanpa seizin asisten jaga. 10. Alat komunikasi dinyalakan dalam mode silent atau dimatikan. 11. Pengumuman mengenai Praktikum Algoritma Pemrograman HANYA akan diinformasikan di mading Laboratorium Programming dan Database (PRODASE) dan di web www.esoftlab.org/alpro 12. Segala bentuk kecurangan akan dikenai sanksi nilai “E”. 13. Kepentingan mahasiswa akan dilayani pada jam kerja 08.00 – 21.00.WFLEXI 14. Hal – hal yang belum tercantum dalam peraturan ini akan ditentukan kemudian
III.
Tabel Waktu Praktikum dan Penilaian Segi penilaian
Nilai
Waktu
Tugas Bonus Berhadiah
----
----
Tes awal
30%
10 menit
Praktikum
30%
70 menit
Tes akhir
40%
20 menit
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 3
MODUL 1 Pengantar JAVA
TUJUAN PRAKTIKUM : Praktikan dapat mengenal bentuk dasar code Java Console Application dengan sederhana, mengenal operasi dan tipe dasar.
JAVA SEKILAS PANDANG Java merupakan bahasa pemrograman tingkat tinggi yang diciptakan berdasarkan turunan dari C++. Target utama dari penggunaan bahasa Java adalah pengkodingan berarah objek yang simpel (tidak memerlukan header), menghindari pemanipulasian pointer secara manual (otomasi), dan lainnya. Kini, penggunaan Java sudah sangat banyak di perusahaan mengingat Java adalah cross-platform dan bahkan cross-device. Bentuk dasar (Anatomi) Console Application :
Penjelasan :
Awal mula kode bermulai dari sini. Fungsi main() ini menandakan bahwa baris kode yang dibawah ini akan dijalankan secara otomatis ketika program dijalankan.
Salah satu contoh baris kode yang mana ini digunakan untuk menampilkan ke console / layar. Perlu diperhatikan bahwa di bagian akhir perlu diberikan semicolon (;) untuk menandakan akhir dari satu
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 4
baris kode. Serta, penulisan kode di Java membedakan huruf besar dan kecil (case-sensitive) sehingga perlu berhati-hati akan huruf besar dan kecil ketika menulis baris kode.
Sebenarnya main() di atas adalah sebuah fungsi (penggunaannya akan dijelaskan nanti di bab selanjutnya) yang mana perlu diawali dan diakhiri oleh kurung kurawal ( { ... } )
JAVA DASAR A.
KOMENTAR Komentar dalam Java berupa sebuah blok untuk menerangkan/memberikan informasi pada suatu kelas, field, method, dan lainnya agar orang lain dapat mengerti apa maksud dari kode kode tersebut. Bentuk umum komentar dalam Java ada dua : /…/ // ...
Contoh komentar
Komentar TIDAK AKAN ikut dikompilasi menjadi program sehingga programmer tidak perlu khawatir programnya akan membengkak karena terlalu banyak menuliskan penjelasan (komentar).
B.
TIPE DATA Tipe data adalah klasifikasi antar data. Tujuannya adalah mencegah tercampurnya data lain yang memiliki “bentuk” yang berbeda. Tipe data tersebut dapat disimpan dalam sebuah wadah yang disebut variable. Contoh pembuatan variabel :
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 5
/* Tes membuat variabel */
public static void main(String[] args) { String h = “Hello!”; System.out.println(h); } // maka di layar akan menuliskan tulisan Hello!
Berikut adalah tipe data yang dikenal di Java : a. Boolean Boolean adalah tipe data yang hanya menyatakan kondisi true (benar) dan false (salah). Boolean pada dasarnya adalah representasi dari 1 (true) dan 0 (false). Contoh : /*Mencoba mengeluarkan nilai true. */
public static void main(String[] args) { boolean b = true; System.out.println(b); } // maka di layar akan menuliskan tulisan true
b.
Integer Integer merupakan tipe data numerik yang bulat dan dapat dilakukan proses aritmatika. Adapun tipe data yang sejenis adalah Byte, Long, Short. Perbedaannya adalah besaran bit yang dipakai. Contoh : /* Melakukan operasi penjumlahan */
public static void main(String[] args) { int a = 3 + 4; System.out.println(a); } // maka di layar akan menuliskan angka 7
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 6
c.
Float Type floating point digunakan untuk menangani bilangan pecahan.Tipe data sejenis adalah Double untuk angka yang lebih besar dan presisi lebih tinggi. Contoh :
/* Math.random() adalah fungsi untuk mengeluarkan nilai acak antara 0 hingga 1 */
public static void main(String[] args) { double d = 2.7269; System.out.println(d); } // maka di layar akan menuliskan angka 2.7269
d. Karakter Char adalah tipe data untuk karakter. Pada dasarnya karakter memiliki nomor indeks yang biasa disebut ASCII code yang direpresentasikan sebagai angka. Sebagai contoh huruf ‘d’ memiliki nilai 100. Char dapat dilakukan operasi matematika seperti layaknya integer. Contoh :
/* Memunculkan karakterpada layar*/
public static void main(String[] args) { char b = 'd'; System.out.println(b); } // maka di layar akan menuliskan huruf d
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 7
Contoh : /* Melakukan operasi + 1 pada karakter */
public static void main (String[] args) { char b = 'd' + 1; System.out.println(b); } // maka di layar akan menuliskan huruf e.
e. String String adalah tipe data yang dapat menyimpan sederet karakter menjadi satu seperti layaknya kalimat atau kata. Pada dasarnya strin g adalah sejenis array (sekumpulan) dari char yang dimanipulasi sehingga menjadi tipe data baru. Dibandingkan tipe data yang lain, tipe data string memiliki fungsi pemanipulasian paling banyak. Contoh : /* Menulis String */
public static void main (String[] args) { String h; h = "WOw" + "Wew"; System.out.println(h); } // maka di layar akan menuliskan tulisan WOwWew
C. OPERATOR PADA JAVA Operator merupakan tanda yang digunakan untuk melakukan suatu operasi. Ada beberapa jenis operator yang dapat digunakan, yaitu : Operator assignment Operator aritmatik Operator perbandingan Operator logika
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 8
OPERATOR ASSIGNMENT Operator assignment adalah operator yang melakukan pengisian nilai kepada suatu variabel sehingga variabel yang telah di buat jadi menyimpan suatu nilai. Contoh : /* Melakukan operasi + 1 pada karakter */
public static void main (String[] args) { double d; d = 3.14; System.out.println(d);//menampilkan angka 3.14 d = d + 3.12;//Menambah 3.14 dengan 3.12 lalu dimasukkan ke d System.out.println(d); } // maka di layar akan menuliskan angka 3.14 dan 6.26
Dalam Java dikenali pula operator ++ dan +=. ++ (atau --) memiliki arti “tambah satu” (atau “kurang satu”) pada variabel atau angka yang di assign. Sedangkan = (atau -=, *=, /=) memiliki arti yang sama seperti misalnya d = d + 1. (begitu juga -= dll).
Contoh : /* Melakukan operasi + 1 pada karakter */
public static void main (String[] args) { int a = 0; a++; System.out.println(a); //Menampilkan angka a a+=5; System.out.println(a); //Menampilkan angka a } // maka di layar akan menuliskan angka 1dan 6
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 9
OPERATOR ARITMETIK () Ada beberapa operator aritmetik yang sudah kita kenal, yaitu
Penjumlahan (+)
Pengurangan (-)
Pembagian (/)
Perkalian (*)
Modulus (sisa pembagian %)
Berikut ini adalah contoh penggunaan operator aritmetik.
Untuk beberapa kasus seperti tipe data lain, operator bisa jadi bermakna lain. Seperti pada String, dapat dilakukan operator + untuk menggabungkan string pertama dan kedua dan selanjutnya, namun tidak dapat di operasikan -, /, * atau %.
Contoh : /* Menulis String */
public static void main (String[] args) { String h; h = "Won" + "der"; System.out.println(h); } // maka di layar akan menuliskan tulisan Wonder
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 10
OPERATOR LOGIKA Operator logika digunakan untuk melakukan operasi dan komparasi dalam nilai Boolean. Ada beberapa operator yang digunakan untuk operasi boolean, yaitu,
Operator == (EQUAL) Operator == digunakan untuk menyatakan apakah nilai di ruas kiri sama dengan ruas kanan. Mengembalikan nilai true apabila ya dan false apabila tidak. Contoh :
/* Operator EQUAL */
public static void main (String[] args) { boolean h = false; System.out.println(h==false); } // maka di layar akan menuliskan tulisan true
Operator && (AND) Operator && (AND) sifatnya adalah konjungsi (dan), dimana mengembalikan nilai true apabila ruas kiri dan kanan sama-sama memiliki nilai true, selain itu akan dianggap salah. Contoh :
/* Operator AND */
public static void main (String[] args) { boolean h = false==false; //Menghasilkan nilai true boolean b = true==false; //Menghasilkan nilai fal se System.out.println(h && b); } // maka di layar akan menuliskan tulisan false
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 11
Operator || (OR) Operator || (OR) sifatnya adalah disjungsi (atau), dimana mengembalikan nilai true apabila antara ruas kiri atau kanan memiliki nilai true, salah satu atau keduanya. Mengembalikan nilai false apabila keduanya memiliki nilai false. Contoh :
/* Operator OR */
public static void main (String[] args) { boolean h = true==false; //Menghasilkan nilai fal se boolean b = true==true; //Menghasilkan nilai true System.out.println(h || b); } // maka di layar akan menuliskan tulisan true
Operator! (NOT) Operator ! (NOT) akan membalikkan boolean yang dijadikan operan. Apabila nilai operan adalah true, maka hasilnya akan menjadi false. Contoh :
/* Operator NOT */
public static void main (String[] args) { boolean h = true==true; //Menghasilkan nilai true System.out.println(!h); } // maka di layar akan menuliskan tulisan false
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 12
OPERATOR LOGIKA (NUMERIC) Untuk angka, dapat juga dilakukan hal-hal yang seperti kita lakukan dulu di logika matematika SMA. Yaitu (==) untuk sama dengan, (<) untuk kurang dari, (>) untuk lebih dari, (<=) untuk kurang dari atau sama dengan, (>=) untuk lebih dari atau sama dengan. Contoh :
/* Operator NOT */
public static void main (String[] args) { int g = 5; System.out.println(3<=g); } // maka di layar akan menuliskan tulisan true
SOAL : 1. Apakah yang terjadi apabla kita membuat boolean b = 1; Mengapa demikian? 2. Buatlah sebuah program yang akan menuliskan Saya akan belajar dengan menggabungkan 3 buah variabel string! ( setiap kata dimasukkan ke satu buah variabel) 3. Disebutkan kode sebagai berikut : /* Tipe Data*/ public static void main(String[] args) { int x; boolean b; String h="Hello!"; x = 40+77; b = false; h = h + " World!"; System.out.println((x+30)+h+!b);
} Analisalah tanpa menggunakan komputer, tulisan apakah yang akan muncul? Dan bagaimanakah langkah-langkahnya? (sehingga bisa muncul tulisan tersebut!)
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 13
4. Bolehkah kita mengganti tulisan main dengan yang lain? Mengapa?
5. Berikut adalah kode : /* Main Tipe Data*/ public static void main(String[] args) { int x; int y; String h; String i; x= ____ + 35; y = ____ + 75; h = "25 25"; i = "Testing"; System.out.println(___(xy)______” “_____);
} Lengkapi bagian yang kosong (____) dengan variabel yang disediakan sehingga program menghasilkan output: 25 25215Testing 25 25 (Tips : ingat kembali tanda (+) yang memiliki fungsi berbeda-beda untuk tiap tipe data).
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 14
MODUL 2 Pengkondisian dan Perulangan
TUJUAN PRAKTIKUM : 1.
Praktikan memahami bentuk umum pengkondisian dan perulangan dalam Java
2.
Praktikan dapat mengimplementasikan pengkondisian dan perulangan dalam program Java
3.
Praktikan mampu memecahkan masalah sederhana dengan menggunakan analisa kasus dan mengimplementasikannya ke dalam bahasa pemrograman Java
1.
PENGKONDISIAN A. Konstruksi pengambilan keputusan Konstruksi pengambilan keputusan adalah konstruksi yang memungkinkan program melakukan evaluasi terhadap variable / kondisi kemudian menjalankan alur program yang sesuai dengan kondisi. Dalam hal ini program dikatakan mengambil keputusan berdasarkan hasil evaluasi variable atau kondisi.
Konstruksi pengambilan keputusan : a.
Konstruksi if
b. Konstruksi if…else dan …else if … c.
Konstruksi switch
A.a Konstruksi if Konstruksi if menyatakan pernyataan akan dieksekusi bila memenuhi syarat dan kondisi tertentu. Tabel 2.1 : notasi struktur IF
Dalam Java If (kondisi) { AKSI; }
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 15
Contoh: if (a>0) { System.out.println( a “bernilai positif” ); }
A.b Konstruksi if – else dan - else if Konstruksi if – else merupakan konstruksi untuk mengambil salah satu keputusan berdasarkan dua kemungkinan. Sedangkan konstruksi – else if – merupakan konstruksi untuk mengambil salah satu keputusan berdasarkan dua atau lebih kondisi.
Tabel 2.2 : notasi struktur IF – ELSE
Dalam Java If (kondisi) { AKSI; } else { AKSI2; }
Contoh: if (a>0) { System.out.println(a “bernilai positif”); } else { System.out.println(a “bernilai negatif”); }
.
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 16
Tabel 2.3 : notasi struktur – ELSE IF -
Dalam Java If (kondisi1) { AKSI1; } Else If (kondisi2) { AKSI2; }
Contoh: if (a % 2 == 0) { System.out.println(a ”bilangan genap”); } else if ( a % 2 != 0) { System.out.println(a ”bilangan ganjil”); }
Silahkan anda ketik contoh program analisa kasus di bawah ini sebagai bahan latihan dan pahami kode programnya. Contoh 2.1 Dalam Java public class contoh{ public static void main (String args[]){ int A = 3; int B = 6;
if (A >B) { System.out.println(A “‘>” B); } else if (A < B) { System.out.println(A “<” B); } else { System.out.println(A + “=” B);
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 17
} } }
B.
Struktur switch Struktur switch digunakan untuk menangani banyak kemungkinan. Struktur switch melakukan evaluasi dan membandingkan ekspresi untuk semua konstanta case dan mengendalikan eksekusi program ke pernyataan case yang cocok Tabel 2.4 : notasi struktur SWITCH
Dalam Java switch ( variabel) { case kondisi1 : AKSI1; case kondisi2 : AKSI2; case kondisi-n: AKSI-n ; }
Keterangan dalam penggunaan switch : a.
Variable switch dalam java hanya dapat bertipe data char, byte, short atau int.
b. case merupakan kata kunci yang mengindikasikan suatu nilai yang diuji. c.
Kondisi tidak dapat berupa variable,ekspresi atau method, tetapi dapat berupa konstanta k = {default , 1,2,3,…….,n-
d. break dapat digunakan dalam switch. break adalah pernyataan yang sifatnya optional yang mengakibatkan aliran program keluar dari blok switch. Jika setelah aksi tidak disertai break, maka aliran program akan masuk ke case selanjutnya. e. Default merupakan kata kunci yang mengi dikasikan kondisi umum yang akan dieksekusi jika semua case yang diuji tidak sesuai dengan nilai variabel.
Berikut ini adalah contoh pemakaian Struktur switch pada program java untuk mencari hari yang dinotasikan dengan angka sesuai dengan inputan user .
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 18
Contoh 2.2
Dalam Java public class conthh{ public static void main (String args[]){ int pilihan = 4; switch ( pilihan ) { case 1 : System.out.println("senin"); break; case 2 : System.out.println("selasa"); break; case 3 : System.out.println("rabu"); break; case 4 : System.out.println("kamis"); case 5 : System.out.println("jumat"); case 6 : System.out.println("sabtu"); case 7 : System.out.println("minggu"); default : System.out.println("Inputan hari tidak valid"); break; } }
Catatan: coba contoh 2.2, ubah nilai pilihan menjadi 2 dan perthatikan perbedaan keluarannya.
2.
PERULANGAN A. Definisi Perulangan (Looping) Perulangan dalam algoritma didefinisikan sebagai bentuk algoritma yang berfungsi untuk mengulang perintah –perintah baris program dengan aturan tertentu. Pengulangan bertujuan untuk mengefisienkan penulisan kode program, sehingga tidak perlu dilakukan berulang-ulang kali.
B. Struktur Perulangan (Looping) Struktur perulangan secara umum terdiri atas dua bagian, yaitu: a. Kondisi perulangan, yaitu berupa ekspresi Boolean yang harus dipenuhi untuk melaksanakan kondisi perulangan. Kondisi ini mengakibatkan suatu kondisi perulangan akan berhenti pada saat kondisi Boolean tersebut terpenuhi.
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 19
b. Badan (body) perulangan, yaitu suatu aksi (bagian algoritma) yang harus diulang selama kondisi yang ditentukan untuk perulangan tersebut masih terpenuhi.
C. Jenis Perulangan dalam Algoritma Dalam modul ini akan dibahas beberapa jenis perulangan dalam bahasa pemrograman Java, antara lain :
a. While loop b. Do-while loop c.
For loop
d. Nested loop
Berikut akan kita bahas bentuk –bentuk tersebut satu per satu: 3.1 While loop While adalah bentuk perulangan yang memiliki jumlah perulangan sesuai dengan suatu kondisi logika tertentu. Do-while loop mirip dengan while-loop. Pernyataan di dalam do-while loop akan dieksekusi beberapa kali selama kondisi bernilai benar(true).
Tabel 3.1.1 : notasi struktur While while( kondisi_perulangan ){ AKSI; }
Maksud dari bentuk di atas adalah selama kondisi _perulangan terpenuhi atau bernilai benar (true), maka AKSI akan terus dilaksanakan sampai kondisi_perulangan bernilai salah (false). Jumlah perulangan ini minimal 0 kali, karena pengecekan kondisi dilakukan di awal.
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 20
Contoh 3.1.2
public class looping { public static void main(String[] args) { int i = 0; do{
System.out .println("saya suka pemrograman"); i++;
}while(i<5); } }
3.2 Do-while loop Jenis perulangan ini mirip dengan while, namun pemeriksaan kondisi dilakukan pada akhir. Tabel 3.2.1 : notasi struktur While do{ AKSI; }while ( kondisi_perulangan );
Maksud dari bentuk di atas adalah AKSI akan dilakukan sebelum ada pemeriksaan kondisi perulangan. Sama halnya dengan while, do-while juga akan menjalankan looping selama kondisi_perulangan terpenuhi atau bernilai benar (true). Jumlah perulangan ini minimal 1 kali, karena pengecekan kondisi dilakukan di awal.
Contoh 3.2.2
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 21
public class looping { public static void main(String[] args){ int i = 0; while(i<5){ System.out .println(i); i++; } } }
3.3 For loop Bentuk for loop digunakan untuk perulangan yang memiliki jumlah perulangan yang telah dipastikan sebelumnya. Bentuk umum dari perulangan traversal adalah sebagai berikut: Tabel 3.3.1 : notasi struktur for For(kondisi_awal; kondisi_perulangan;i++){ AKSI; } Maksud dari bentuk di atas adalah akan dilaksanakan AKSI sebanyak N kali, dimana nilai N adalah penyesuaian kondisi perulangan dengan kondisi awal. Perulangan akan berhenti dilaksanakan jika kondisi perulangan bernilai salah (false). Contoh 3.3.2 for loop
public class looping { public static void main(String[] args) { int i = 0; for(i=0;i<5;i++){ System.out .println(*); } } }
3.4 Nested loop
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 22
Nested loop merupakan perulangan di dalam perulangan. P elajari contoh berikut :
Contoh 3.4.1 nested loop
public class looping { public static void main(String[] args) { int i = 0; int j = 0; for(i=0;i<5;i++){ for (j=i;j<5;j++){ System.out .print("*"); } System.out .println(" "); } } }
Maksud dari program diatas adalah looping pertama dilakukan dengan kondisi i=0 dan j=0. Ketika i=0 maka j=0 karena i=j. Program tersebut akan mencetak keluaran berupa bintang (*). Cobalah program tersebut untuk mengetahui hasilnya.
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 23
SOAL : 1. Buat program log-in admin lab prodase dengan : username : si_aku password : 12345 Bila salah memasukan username atau password,akan muncul peringatan "anda tidak berhak mengakses
program ini".
2. Buat program (gunakan struktur switch) yang mengkonversi rata-rata dari 3 kuis mata kuliah alpro dengan indeks nilai 1- 10, dengan ketentuan : Rata-rata 1-4 akan menghasilkan keluaran “tidak lulus” Rata-rata 5 akan menghasilkan keluaran “ikut kuis tambahan” Rata-rata > 5 akan menghasilkan keluaran “lulus”
3. Buat program pembelian baju merek "Prodase" yang memiliki ketentuan Beli 2 baju,maka baju ke-2 akan didiskon 30% Beli 3 baju,maka baju ke-3 diskon 55% Beli 4 baju,maka baju ke-4 diskon 100% (hanya membayar 3 baju saja) Catatan: Asumsikan semua harga baju merek prodase sama.
4. Buat program dengan tampilan seperti dibawah ini : Jika n= 4
n= 3
* * * *
* * *
*
*
*
*
*
* * *
*
****
5. Buat program seperti dibawah ini : a = 100
n=5
100 80 80 60 60 60 40 40 40 40 20 20 20 20 20
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 24
MODUL 3 Method
TUJUAN PRAKTIKUM : 1. Memahami konsep method pada java. 2. Mengerti esensi penggunaan method dalam Java. 3. Memahami bentuk umum method.
A. Class Didefinisikan Class sebagai sebuah blue print, atau prototipe, yang mendefinisikan variablevariabel dan metode-metode yang umum untuk semua objek dari jenis tertentu. Class mendefinisikan atribut dan perilaku obyek yang dibuatnya. Class merupakan definisi formal suatu abstraksi. Class berlaku sebagai template untuk pembuatan obyek-obyek. Class berisi abstraksi yang terdiri dari nama class, atribut dan service. Bagian-bagian dari sebuah Class secara umum penulisan class terdiri atas 2 bagian yakni:
1.
Class Declaration Bentuk Umum : [modifier] class
{ } Penamaan suatu class mempunyai aturan umum : a. Tidak menggunakan spasi atau menggunakan spasi dengan diganti “_” (misal class Sarjana_Mipa) b. Tidak menggunakan kata-kata yang telah dipakai oleh compiler (reserved Word, lihat bab sebelumnya) Modifier saat deklarasi kelas adalah : Tidak ditentukan (default) Kelas tersebut dapat diakses oleh kelas lai n dalam satu package.
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 25
Public Jika sebuah kelas tersebut dapat digunakan oleh kelas lain tanpa memperdulikan apakah kelas lain yang menggunkannya itu berasal dari package yang sama atau berbeda. Private Kelas tersebut dapat diakses oleh kelas lai n dalam satu package.
B. Class Body Class Body merupakan bagian dari kel as yang mendeklarasikan kode program java. Class Body tersusun atas: a. Konstruktor b. Variable Instance (Atribut) c. Method (Fungsi-fungsi atau prosedur) Untuk dapat menggunakan kelas yang telah didefinisikan, anda harus membuat sebuah obyek dari kelas tersebut (instance class), dengan sintaks: NamaKelas namaObyek = new NamaKelas ( [parameter] ) ; Contoh:
Hitungluas segitiga = new Hitungluas(); C. Instance Variables (Atribute Class) Suatu obyek dapat dibedakan berdasarkan sifat (behavior) yang berbeda. obyek juga dapat dibedakan berdasarkan atributnya. Mis: burung dapat dibedakan berdasarkan suara kicauan, warna bulu, bentuk tubuh, dsb. Atribut yang membedakan suatu instance obyek burung yang satu dengan yang lainnya disebut instance variabel. Bentuk Umum : [modifier] [ = nilai default]; Contoh : public double tinggi; private int berat = 70; Modifier untuk atribut, yaitu public, protected, private
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 26
Perbedaan local dan instance variable 1.
Instance variables dideklarasikan di dalam kelas tetapi tidak di dalam method.
class segitiga { double tinggi = 15.2; String jenis;
} 2.
Local variables dideklarasikan di dalam method.
int tambah( ) { int total = tinggi*2; // total adalah variabel local return total; }
D. Method Sebuah method adalah bagian-bagian kode yang dapat dipanggil oleh program utama atau dari method lainnya untuk menjalankan fungsi yang spesifik di dalam kelas. Method dapat dibagi menjadi fungsi dan prosedur. Fungsi adalah bagian atau sub dari program yang mempunyai algoritma tertentu dalam menyelesaikan suatu masalah dengan mengembalikan hasil. Prosedur adalah bagian atau sub dari program yang mempunyai algoritma tertentu dalam menyelesaikan suatu masalah tanpa mengembalikan suatu nilai hasil. Secara umum method dalam java adalah sebuah fungsi. Berikut adalah karakteristik dari method : 1. Dapat mengembalikan satu nilai atau tidak sama sekali. 2. Dapat diterima beberapa parameter yang dibutuhkan atau tidak ada parameter sama sekali. Parameter bisa juga disebut sebagai argumen dari fungsi. 3.
Setelah method telah selesai dieksekusi, dia akan kembali pada method yang memanggilnya.
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 27
Deklarasi sebuah method Method terdiri atas dua bagian yakni : 1. Method declaration 2. Method Body
Method dapat digambarkan sebagai sifat (behavior) dari suatu class. Untuk mendefinisikan method pada dalam class digunakan sintaks sintaks
[modifier] nama_method( [parameter] ) { methode body } Contoh :
public int Perkalian (int y;int z) { methode body
}
E. Modifier pada method Modifier menentukan level pengaksesan sebuah method. Hal ini menentukan apakah sebuah method biasa diakses oleh objek lain, objek anak, objek dalam satu paket atau tidak dapat diakses oleh suatu object sama sekali berikut adalah beberapa jenis level access: Public Atribut ini menunjukan bahwa fungsi/method dapat diakses oleh kelas lain. Private Atribut ini menunjukan bahwa fungsi atau method tidak dapat diakses oleh kelas lain Protected Atribut ini menunjukan bahwa fungsi atau method bisa diakses oleh kelas lain dalam satu paket dan hanya kelas lain yang merupakan subclass nya pada paket yang berbeda. Tanpa modifier Atribut ini menunjukan bahwa method dapat diakses oleh kelas lain dalam paket yang sama.
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 28
F. Method tanpa nilai balikan Method ini merupakan method yang tidak mengembalikan nilai. Maka dari itu, kita harus mengganti tipe kembalian dengan kata kunci void. Berikut ini kode program yang dimaksud: class Kotak{
double panjang; double lebar; double tinggi; //mendefinisikan method void (tidak mengembalikan nilai) void cetakVolume(){
System.out.println("Volume kotak = " +(panjang*lebar*tinggi)); } }
class DemoMethod1{ public static void main(String[] args){
Kotak k1, k2, k3; //instansiasi objek k1=new Kotak(); k2=new Kotak(); k3=new Kotak();
//mengisi data untuk objek k1 k1.panjang=4; k1.lebar=3;
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 29
k1.tinggi=2; //mengisi data untuk objek k2 k2.panjang=6; k2.lebar=5; k2.tinggi=4; //mengisi data untuk objek k3 k3.panjang=8; k3.lebar=7; k3.tinggi=6; //memanggil method cetakVolume() untuk masing-masing objek k1.cetakVolume(); k2.cetakVolume(); k3.cetakVolume(); } } Output :
Volume kotak = 24.0 Volume kotak = 120.0 Volume kotak = 336.0
G. Method dengan nilai balikan Di sini, kita akan memodifikasi program sebelumnya dengan mengganti method cetakVolume() menjadi method hitungVolume() yang akan mengembalikan nilai dengan tipe double. Berikut ini kode program yang dimaksud:
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 30
class Kotak{
double panjang; double lebar; double tinggi; //mendefinisikan method yang mengembalikan tipe double double hitungVolume(){
//menghitung volume double vol = panjang*lebar*tinggi; //mengembalikan nilai return vol; } }
class DemoMethod2{ public static void main(String[] args){
Kotak k1, k2, k3; //instansiasi objek k1=new Kotak(); k2=new Kotak(); k3=new Kotak(); //mengisi data untuk objek k1 k1.panjang=4; k1.lebar=3; k1.tinggi=2; //mengisi data untuk objek k2
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 31
k2.panjang=6; k2.lebar=5; k2.tinggi=4; //mengisi data untuk objek k3 k3.panjang=8; k3.lebar=7; k3.tinggi=6; System.out.println("Volume k1 = "+k1.hitungVolume()); System.out.println("Volume k2 = "+k2.hitungVolume()); System.out.println("Volume k3 = "+k3.hitungVolume()); } } Output :
Volume k1 = 24.0 Volume k2 = 120.0 Volume k3 = 336.0
H. Parameter Dengan adanya parameter, sebuah method dapat bersifat dinamis dan general. Artinya, method tersebut dapat mengembalikan nilai yang beragam sesuai dengan nilai parameter yang dilewatkan. Terdapat dua istilah yang perlu anda ketahui dalam bekerja dengan method, yaitu parameter dan argumen. Parameter adalah variabel yang didefinisikan pada saat method dibuat, sedangkan argumen adalah nilai yang digunakan pada saat pemanggilan method. Dalam referensi lain, ada juga yang menyebut parameter sebagai parameter formal dan argumen sebagai parameter aktual. Perhatikan kembali definisi method berikut :
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 32
Int luasPersegiPanjang(int panjang, int lebar){
return panjang*lebar; }
Disini, variabel panjang dan lebar disebut parameter.
Luas1 = luasPersegiPanjang(10, 5); Adapun pada statemen diatas, nilai 10 dan 5 disebut argumen. Sekarang, kita akan mengimplementasikan konsep di atas ke dalam kelas Kotak. Di sini data panjang, lebar, dan tinggi akan kita isikan melalui sebuah method. Berikut ini kode program yang dapat digunakan untuk melakukan hal tersebut.
class Kotak{
double panjang; double lebar; double tinggi;
//mendefinisikan method dengan parameter void isiData(double p, double l, double t){
panjang = p; lebar = l; tinggi = t; } double hitungVolume(){
return(panjang*lebar*tinggi); } }
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 33
class DemoMethod3{ public static void main(String[] args){
Kotak k; //instansiasi objek k = new Kotak();
//memanggil method isiData() k.isiData(4,3,2);
System.out.println("Volume kotak = " + k.hitungVolume()); } } Output :
Volume kotak = 24.0
Bagaimana jika bagian lain dari program ingin tahu juga nilai volume itu tetapi tidak ingin menampilkannya (mencetaknya). Apabila terdapat suatu fungsi yang tidak menghasilkan suatu nilai apapun maka bagian return type ini diganti dengan void . Contoh penggunaan return: package cobaCoba; import java.util.Scanner;
class balok { int p, l, t;
/*void nilai (int a, int b, int c) { p = a; l = b;
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 34
t = c; }*/ int volume( int p, int l, int t) { return (p*l*t);
} public static void main(String args[]) {
Scanner masuk = new Scanner(System.in); //fungsi untuk menginputkan suatu nilai System.out.print("Panjang = "); int a=masuk.nextInt(); System.out.print("Lebar = "); int b=masuk.nextInt(); System.out.print("Tinggi = "); int c=masuk.nextInt(); balok coba = new balok(); System.out.print("\nVolume balok = "+ coba.volume(a,b,c)); } }
Out :
Panjang = 2 Lebar = 3 Tinggi = 2 Volume balok = 12
I.
Method Static Sebuah method static dapat diakses tanpa harus melakukan instantiasi terlebih dahulu. Pemanggilan method static dilakukan dengan format :
Nama_kelas.nama_method(); Nama_kelas diberikan bila method tersebut dipanggil dari kelas yang berbeda..
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 35
Contoh : class MyStatic { static void Luas() {
int p = 10; int l = 2 ; System.out.println(“Luas = “ pl ); -
public static void main (String [] args ) { Luas(); // pemanggilan method luas } }
public class persegi { static int hitungluas( int p, int l){ return p*l;
} public static void main(String[] args) { int z=0;
z=hitungluas(3,2); System.out.println(z); } }
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 36
Soal :
1. Buatlah fungsi yang mengecek suatu bilangan, apakah bilangan tersebut apakah bilangan genap atau ganjil dengan menggunakan method dengan pengembalian!
2. Buat procedure untuk menghitung jumlah uang yang harus dikeluarkan oleh mesin ATM dengan spesifikasi : mesin ATM menyimpan 3 pecahan mata uang yaitu pecahan Rp 20.000 ,; Rp10.000,-; dan Rp 5.000. Procedure menggunakan 1 parameter masukan untuk input jumlah uang, dan 3 parameter keluaran untuk jumlah masing – masing pecahan yang harus dikeluarkan. (Misal bila masukan user 35.000 maka akan dikeluarkan jumlah Rp 20.000,- = 1, jumlah Rp 10.000,- = 1, dan Rp 5.000,- = 1 ).
3. Buat program untuk menghitung luas dan kelling segitiga dengan menggunakan method dengan pengembalian!
4. Buatlah sebuah program tukar nilai integer dari 3 buah variabel dengan menggunakan method tanpa pengembalian! contoh : {input} masukkan bilangan 1 : 4 masukkan bilangan 2 : 18 masukkan bilangan 3 : 5
{output} kedua bilangan setelah ditukar : bilangan 1 : 5 bilangan 2 : 4 bilangan 3 : 18
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 37
5. Buatlah sebuah program dengan menggunakan fungsi/prosedur yang memiliki 2 inputan lalu mencari nilai selisih keduanya dengan ketentuan bilangan pertama lebi h besar dari bilangan kedua setelah itu program akan mencari nilai rata-rata dari ketiga bilangan tersebut! Contoh : {input} Bilangan 1 : 6 Bilangan 2 : 2
{output} Bilangan 1 : 6 Bilangan 2 : 2 Bilangan 3 : 4 Rata-rata : 4
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 38
MODUL 4 Array TUJUAN PRAKTIKUM : 1. Mendeklarasikan dan membuat array 2. Mengakses elemen-elemen array 3. Menentukan jumlah element dalam sebuah array 4. Mendeklarasikan dan membuat array multidimensi
A.
Pengenalan array Dalam pendeklarasian variable kita sering menggunakan sebuah tipe data beserta nama variable atau identifier yang unik, dimana untuk menggunakan variable tesebut, kiata akan memanggil dengan nama identifiernya. Sebagai contoh, kita memiliki tiga variable dengan tipe data int yang memiliki identifier yang berbeda untuk tiap variable.
Int number1; Int number2; Int number3;
number1 = 1; number2= 2; number3= 3;
pada contoh di atas, untuk menginisialisasi dan menggunakan variable terutama pada saat variable-variabel tersebut memiliki tujuan yang sama, dirasa sangat membingungkan. Di java maupun di bahasa pemrograman yang lain, kemampuan untuk menggunakan satu variable yang dapat menyimpan sebuat data list dan kemudian memanipulasinya dengan efektif, disebut
array.
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 39
B. Pendeklarasian Array Array harus di deklarasikan seperti layaknya sebuah variable, apabila Anda mendeklarasikan array, maka harus membuat sebuah list dari tipe data, yang diikuti oleh tanda kurung siku buka dan kurung siku tutup, yang diikuti oleh nama identifier, ex: Int [] ages; Atau Int ages[]; Setelah pendeklarasian, kita harus membuat array dan menentukan beberapa panjangnya dengan sebuah konstruktor, proses ini java disebut instantiasi (kata dalam java yang berarti membuat). Untuk meng-instantiasi sebuah objek, kita membutuhkan sebuah konstruktor. Kita akan membicarakan lagi meng-instantiasi dan pembuatan konstruktor pada praktikum selanjutnya.
//deklasrasi objek Int ages[]; //instantiasi objek Ages = new int[100];
Atau bisa juga ditulis //deklarasi dan instantiasi Int ages[] = new int [100];
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 40
Pada contoh diatas, deklarasi akan memberitahukan kepada compiler java, bahwa identifier ages akan digunakan sebagai nama array yang berisi data-data integer, dan kemudian untuk membuat atau meng-instantiasi sebuah array baru yang terdiri dari 100 elemen. Selain menggunakan sebuah keyword baru untuk menginstantiasi array, juga dapat secara otomatis mendeklarasikan array, membangun, kemudian memberitahukan sebuah nilai (value).
Sebagai contoh, //membuat sebuah array yang berisi variabel-variabel boolean pada sebuah identifier. //array
ini
terdiri
dari
4
elemen
yang
diinialisasikan
sebagai
value
{true,false,true,false}
boolean result[]={ true , false ,true , false };
//membuat sebuah array yang terdiri dari penginialisasian 4 variabel double bagi value{100,90,80,75}
double[4]={100,90,80,75};
//membuat sebuah array String dengan identifier days. Array ini terdiri dari 7 elemen. String days*+=“mon”,”tue”,”wed”,”thu”,”fri”,”sat”,”sun”-;
C. Pengaksesan sebuah elemen array Untuk mengakses sebuah elemen dalam array, atau mengakses sebagian dari arrar, Anda harus menggunakan sebuah nomor atau yang disebut sebagai index atau subscript. Sebuah nomor index atau subscript telah diberikan kepada tiap anggota array, sehingga program dan programmer dapat mengakses setiap value apabila dibutuhkan. Index selalu
dalam integer. Dimulai dari nol,kemudian akan terus bertambah sampai list value dari array tersebut berakhir.perlu dicatat, bahwa elemen-elemen didalam array dimulai dari 0 sampai dengan (ukuran array-1).
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 41
sebagai contoh, pada array yang ki ta deklarasikan tadi, kita mempunyai,
//Memberikan nlai 10 kepada elemen pertama array ages[0] = 10; //mencetak elemen array yang ke element 99 System.out.print(ages[99]); Perlu diperhatikan bahwa sekali array dideklarasikan dan dikonstruksi, nilai yang disimpan dalam setiap anggota array akan diinialisasi sebagai nol. Oleh karena itu, apabila anda menggunakan tipe data reference seperti string, ia tidak akan diinialisasi ke sring kosong ””, sehingga anda tetap harus membuat string array secara eksplisit. berikut ini adalah contoh, bagaimana untuk mencetak seluruh elemen didalam array. Dalam contoh ini digunakanlah loop, sehingga kode kita menjadi lebih pendek.
package abc; public class modul { public static void main(String[] args) { int [] ages = new int [100]; for ( int i=0;i<100;i++) {
System.out.print(ages[i]); } } } Petunjuk penulisan program:
1.
Biasasnya, lebih baik menginisialisasi atau meng-instantiate array setelah anda
mendeklarasikannya int[] arr = new int[100];
lebih disarankan daripada, int[] arr; arr=new int[100]; 2. elemen-elemen dalam n-elemen array memiliki index dari 0 sampai n-1. aPerhatikan disini
bahwa tidak ada elemen array arr[n]. Hal ini akan menyebabkan array-index out-of-bounds exception. 3.Anda tidak dapat mengubah ukuran dari sebuah array.
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 42
Contoh Program public class contoh1 { public static void main (String args []){
//inisialisasi list nilai untuk masing-masing elemen int array[] = {32,27,64,18,95,14,90,70,60,37}; System.out.printf("%s %8s \n", "Index", "Values"); //kolom heading
//keluaran masing nilai element array for (int counter=0; counter < array.length; counter++) System.out.printf("%5d %8d \n", counter, array[counter]); } }
Hasil :
int array[] = {32,27,64,18,95,14,90,70,60,37}; memberikan nilai pada masing element-element array System.out.printf("%s%8s\n", "Index", "Values"); Pada sebelumnya System.out.println. pada kasus ini sedikit berbeda ada System.out.printf, dalam fungsinya sama yaitu mencetak nilai ke layar, pada System.out.printf untuk mengisi nilai atau variable menggunakan % (persen) di ikuti tipe variabel s (String ), d (integer ). Dan ada spasi di beri notasi angka menunjukkan berapa jumlah spasi yang akan di gunakan. ("%s%8s\n", "Index", "Values"), String ”Index“ akan di letakkan di (%s) yg awal kemudian String “Values” di letakkan di (%8s) ada delapan spasi dari String “index”. (coba diubah-
ubah/modifikasi)
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 43
D.
Panjang array untuk mengetahui berpa banyak elemen didalam sebuah array, anda dapat menggunakan
length (Panjang) field dalam array.panjang field dalam array akan mengembalikan ukuran dari array itu sendiri. Sebagai contoh,
arrayName. length
pada contoh sebelumnya, kia dapat menuliskannya kembali seperti berikut ini,
Petunjuk penulisan program:
1.
Pada saat pembuatan loop untuk memproses elemen-elemen dalam array,
gunakanlah length field didalam pernyataan pengkondisian dalam loop. Hali ni akan menyebabkan loop secara otomatis menyesuaikan didri terhadap ukuran array yang berbeda-beda 2. Pendeklarasian ukuran array di java, biasanya digunakan constant untuk mempermudah. Sebagai contoh, final int ARRAY_SIZE = 1000; //pendeklarasian constant
Contoh Program public class contohlagi{ public static void main (String args[]){ final int array_length = 10; int array[] = new int [array_length];
for (int counter =0; counter < array.length; counter++) array[counter] = 2+2*counter;
System.out.printf("%s %8d \n", "index", "values");
for (int counter=0; counter
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 44
Hasil
Pada contoh kasus di atas : final int array_length = 10; menunjukkan inisialisasi contanta array_length dengan nilai = 10, int array[] = new int [array_length]; membuat dan menginisialisasi objek array kosong untuk memasukkan nilai inputan dari perulangan. array[counter] = 2+2*counter; melakukan pengisian pada array[counter] dengan nilai 2+2*counter;
(coba diubah-ubah/modifikasi).
E.
Array multi dimensi array multidimensi diimplementasikan sebagai array didalam array. Array mul tidimensi dideklarasikan dengan menambahakan jumlah randa kurung setelah nama array.
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 45
Contoh Deklarasi array :: //elemen 512 x 128 dari integer array int [][] twoD=new int [512][128];
//string array 4 baris x 2 kolom string[][] dogs = {{"terry","brown"}, {"kristin","white"}, {"toby" },{"gray" }, {"fido" },{"black"}};
Untuk mengakses sebuah elemen didalam array multidimensi, sama saja dengan mengakses array satu dimensi. Misalnya saja, untuk mengakses element pertama dari baris pertama didalam array dogs, kita akan menulis,
System.out .print( dogs[0][0]);
Kode diatas akan mencetak string “terry di l ayar”.
Contoh Program : public class Tiga { public static void main(String[] args) { String duadim[][]={ {"Yaqin","09653864","Surabaya"}, {"Fadli","08470803","Depok"}, {"Adnan","08487794","Purwakarta"} }; for (int i=0; i<3; i++){ for (int j=0; j<3; j++){ System.out.println(" isi array : "+duadim[i][j]); } } } }
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 46
Hasil : Isi array : Yaqin Isi array : 09653864 Isi array : Surabaya Isi array : Fadli Isi array : 08470803 Isi array : Depok Isi array : Adnan Isi array : 08487794 Isi array : Purwakarta
Pada Program di atas : String duadim[][]={
{"Yaqin","09653864","Surabaya"}, {"Fadli","08470803","Depok"}, {"Adnan","08487794","Purwokerto"};
Merupakan suatu inisialisasi array dua dimensi.
Cara pengeluaran nilai dari array menggunakan pengulangan, for (int i=0; i<3; i++){ for (int j=0; j<3; j++){ System.out.println(" isi array : "+duadim[i][j]); } }
F.
Input Array menggunakan fungsi Random Nilai random merupakan nilai bilangan acak, dalam program untuk men-Generate bilangan random harus membuat objek random dulu. Sintak random di java harus menggunakan java import.
import java.util.Random;
Sintaks :: Random objekRandom = new Random();
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 47
Contoh : package modul5;
import java.util.Random;
public class InputRandomArray {
public static void main(String[] args) {
//instantiasi untuk pembentukan objek random Random rdm = new Random(); int nilaiRandom; //deklarasi variable untk nampung objek random
int a[]= new int[4];
//instantiasi objek array 1 dimensi
int b[][]= new int[4][4];
//instantiasi objek array 2 dimensi
for (int i=0; i
//assignment nilai random ke variable integer, //(i+1) salah untuk melakukan random setiap kali perulangan nilaiRandom=rdm.nextInt(i+1); a[i]=nilaiRandom; System.out.println("Nilai random array 1 dimensi indeks ke["+i+"] = " +a[i]); } for (int i=0; i<10; i++){
System.out.print("==="); } System.out.println(); for (int i=0; i
nilaiRandom = rdm.nextInt(i+1); b[i][j]=nilaiRandom; System.out.print(b[i][j]+"
");
} System.out.println(); } } }
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 48
SOAL : 1. Buat sebuah String array yang akan menginisialisasi 7 hari dalam seminggu. Sebagai contoh, String days*+=“Senin”,”Selasa”,…-; Gunakan perulangan untuk mencetaknya .. 2. Buatlah program untuk mencari nilai terbesar dalam indeks array, untuk array berkapasitas 10 nilai. ! 3. Buatlah program untuk mencari nilai minimum ganjil dalam indeks array, untuk array berkapasitas 10 nilai ! 4. Buatlah program untuk penjumlahan 2 buah matrik 2x2 ! #gunakan matrik 2 dimensi dan input random 5. Buatlah program untuk menghitung jumlah element perbaris di matrik 5x5 ! # gunakan input random Ex : Inisialisasi matrik : 3
2
8
9
6
9
7
9
6
9
6
9
7
0
7
5
7
9
6
9
6
9
6
9
6
#nilai input tidak harus sama seperti contoh
output : Jumlah baris 1 : 28 Jumlah baris 2 : 40 Jumlah baris 3 : 29 Jumlah baris 4 : 36 Jumlah baris 5 : 36
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 49
MODUL 5 Sorting dan Searching TUJUAN PRAKTIKUM: Praktikan diharapkan dapat: 1.
Mengerti essensi penggunaan Searching (Pencarian) dan Sorting (Pengurutan)
2.
Memahami bentuk dan jenis-jenis Searching (Pencarian) dan Sorting ( Pengurutan)
3.
Memecahkan masalah sederhana dengan menggunakan Algoritma Searching dan Sorting serta mengimplementasikannya kedalam sebuah bahasa pemrograman.
A. Sorting Sorting merupakan sebuah proses untuk mengatur item dalam suatu urutan tertentu (menaik atau menurun). Misalnya untuk mengurutkan bilangan, mengurutkan NIM, mengurutkan nama, dsb.
Operasi Dasar Sorting: 1. Membandingkan nilai 2. Memindahkan nilai-nilai dalam daftar ke posisi y ang sesuai
Metode-metode Sorting
1. Selection Sort (Pengurutan dengan Seleksi) Selection Sort merupakan cara pengurutan yang mengkombinasikan antara sorting dan searching. Cara pengurutan dalam Selection Sort:
1. Cari nilai extrim (minimum atau maximum, pilih salah satu) pada semua elemen array dan pertukarkan dengan elemen array yang seharusnya(minimum di pertama atau maksimum di akhir). Lalu elemen array tersebut di isolasi (tidak diganggu gugat).
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 50
2. Kemudian temukan elemen array bernilai extrim dari array index kedua dari awal jika minimum atau kedua dari akhir jika maksimum, kemudian pertukarkan dengan elemen array di posisi (indeks) kedua(dari awal atau dari akhir tergantung penggunaan maksimum atau minimum). Lalu isolasi elemen array tersebut ditambah elemen sebelumnya.
3. Ulangi langkah-langkah di atas untuk elemen array berikutnya hingga elemen array terakhir. Contoh berikut ini menunjukkan cara kerja selection sort pada deretan angka “5 1 4 8 2” yang diurutkan menaik (ascending):
5
1
4
8
2
{nilai terendah=1, tukar dengan posisi 1}
1
5
4
8
2
{nilai terendah=2, tukar dengan posisi 2}
1
2
4
8
5
{nilai terendah=4, posisi tetap}
1
2
4
8
5
{nilai terendah=5, tukar dengan posisi 4}
1
2
4
5
8
{nilai terendah=8, posisi tetap}
1
2
4
5
8
{selesai}
Contoh 4.4 Prosedur Selection Sort
Program Selection Sort dalam Java
Procedure selectionsortminimum( Var a : tabel);
public class SelectionSort
Var
{
i,j, min,tmp,n : integer;
public static void main(String[] args)
a
{
: array of integer;
Begin
int arr[] = {4,3,2,1};
{pengurutan data}
int n=arr.length;
For i:=1 to n-1 do
int min=arr[0],mark=0;
Begin
for(int i=0;i
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 51
Min := i;
{
for j:= i + 1 to n do begin
for(int j=i;j
if (a[j] < a[min] then
{
min := j;
if (arr[j]
end;
{
tmp := a[min];
min=arr[mark=j];
a[min]:=a[i];
}
a[i] := tmp;
}
end;
int tmp;
end.
tmp=arr[i]; arr[i]=arr[mark]; arr[mark]=tmp; min=arr[mark=i+1]; } for(int i=0;i
2. Insertion Sort (Pengurutan dengan Penyisipan) Insertion sort adalah sebuah algoritma pengurutan yang membandingkan dua elemen data pertama, mengurutkannya, kemudian mengecek el emen data berikutnya satu persatu dan membandingkannya dengan elemen data yang telah diurutkan. Cara pengurutan dalam Selection Sort: 1. Membandingkan dua elemen data pertama dan mengurutkannya. 2. Mengambil satu elemen data berikutnya dan membandingkannya dengan dua elemen data pertama yang telah terurut, kemudian mengurutkannya. Elemen data ketiga ini bisa diletakkan sebelum elemen data pertama, setelah elemen data ketiga, atau disisipkan diantara elemen data pertama dan kedua.
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 52
3. Mengulang langkah kedua hingga seluruh el emen data dalam daftar sudah diurutkan.
Contoh berikut ini menunjukkan cara kerja insertion sort pada deretan angka “5 1 4 8 2” yang diurutkan menaik (ascending): 5
1
4
8
2
{kondisi awal}
1
5
4
8
2
{pengurutan 2 elemen data}
1
4
5
8
2
{pengurutan 3 elemen data}
1
4
5
8
2
{pengurutan 4 elemen data}
1
2
4
5
8
{pengurutan
5
elemen
data
selesai}
Contoh 4.5 Tabel 4.3 Prosedur Insertion Sort
Program Insertion Sort dalam Java
Procedure insertionsort(Var a : tabel);
public class InsertionSort
Var
{
i,j, tmp,n : integer;
public static void main(String[] args)
Begin
{
For i:=2 to n do
int arr[] = {4,3,2,1};
Begin
int n=arr.length;
tmp :=a[ i];
for(int i=2;i
j:=i;
{
while ( (j>0) and (tmp
int min=arr[i];
begin
int j=i;
a[j] := a[j-1];
while((j>0) && (min
j := j-1;
{
end;
arr[j]=arr[j-1];
a[j] := tmp;
j--;
end;
}
end.
arr[j]=min; } for(int i=0;i
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 53
{ System.out.println(arr[i]+" "); } } }
3. Bubble Sort (Pengurutan dengan Pertukaran Harga) Cara pengurutan dalam Bubble Sort: 1. Lakukan pengulangan (pass) pada array, tukar elemen yang bersebelahan jika diperlukan (perbandingan nilainya tidak sesuai); jika tidak ada pertukaran nilai maka array sudah terurut. 2. Dalam pass pertama, temukan elemen dengan nilai tertinggi (maksimal) dalam array dan tukarkan dengan elemen di sebelah kanannya dan seterusnya sampai dengan mencapai posisinya di ujung array sebelah kanan. 3. Kemudian dalam pass kedua, nilai tertinggi kedua dalam array akan ditempatkan dalam posisinya (di sebelah kiri elemen dengan nil ai tertinggi/maksimal). 4. Teruskan untuk pass ketiga dan seterusnya sampai pass n-1 5. Jika sebelum pass n-1 sudah tidak ada pertukaran data maka pertukaran langsung dihentikan.
Contoh berikut ini menunjukkan cara kerja bubble sort pada deretan angka “5 1 4 8 2” yang diurutkan menaik (ascending):
Iterasi 1
(5 1 4 2 8) (1 5 4 2 8) (1 5 4 2 8) (1 4 5 2 8) (1 4 5 2 8) (1 4 2 5 8) (1 4 2 5 8) (1 4 2 5 8) {sudah terurut} {Karena sudah mencapai elemen data terakhir dalam daftar, algoritma melakukan iterasi kedua}
Iterasi 2
(1 4 2 5 8) (1 4 2 5 8) {sudah terurut}
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 54
(1 4 2 5 8) (1 2 4 5 8) (1 2 4 5 8) (1 2 4 5 8) {sudah terurut} (1 2 4 5 8) (1 2 4 5 8) {sudah terurut} (1 2 4 5 8) (1 2 4 5 8) {sudah terurut} {Karena sudah mencapai elemen data terakhir dalam daftar, algoritma melakukan iterasi ketiga}
Iterasi 3
(1 2 4 5 8) (1 2 4 5 8) {sudah terurut} (1 2 4 5 8) (1 2 4 5 8) {sudah terurut} (1 2 4 5 8) (1 2 4 5 8) {sudah terurut} (1 2 4 5 8) (1 2 4 5 8) {sudah terurut} {Karena sudah mencapai elemen data terakhir dalam daftar dan tidak ada pertukaran selama iterasi 3, algoritma dihentikan}
Contoh 4.6 Prosedur Bubble Sort
Program Bubble Sort dalam Java
Procedure Bubble Sort (var arr : tabel,n : integer)
public class BubbleSort
//arr adalah array yang akan diurutkan, n adalah
{
panjang
public static void main (String[] args)
//arraynya
{
Var
int arr[] = {4,3,2,1};
i,j,n : integer;
int n=arr.length;
Begin
for(int i=1;i
For i:=1 to n do For j:=0 to n-i do IF A[j+1] < A[j] then swap(A[i], A[i+1])
Endif EndFor
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
{
for(int j=0;j
if (arr[j+1]
int tmp=arr[j+1];
Halaman 55
Endfor
arr[j+1]=arr[j];
End.
arr[j]=tmp; } } } for(int i=0;i
} }
B. Searching Searching adalah proses menemukan nilai (data) tertentu dari dalam sekumpulan nilai yang bertipe sama (tipe dasar maupun tipe bentukan). Proses pencarian seringkali diperlukan pada saat program perlu mengubah atau menghapus nilai tertentu (sebelum bisa mengubah atau menghapus, perlu mencari dulu apakah nilai tersebut ada dalam kumpulan nilai tersebut). Kasus lain yang memerlukan algoritma pencarian adalah penyisipan data ke dalam kumpulan data (perlu dimulai dengan pencarian apakah data tersebut telah ada sehingga terhindar dari duplikasi data).
Metode-metode Searching 1. Sequential Search Sequential search (pencarian sekuensial) adalah proses membandingkan setiap elemen larik (array) satu persatu dengan nilai yang dicari secara beruntun, mulai dari elemen pertama sampai elemen yang dicari sudah ditemukan, atau sampai seluruh elemen sudah diperiksa. Kelebihan pencarian ini adalah data yang dicari bisa dalam keadaan tidak terurut. Contoh 4.1 Procedure Sequential Search
Program Sequential Search dalam Java
Procedure SeqSearch (input L:LarikInt, input
public class SekuensialSearch
N:integer, input X:integer, output ketemu:
{
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 56
boolean)
public static void main(String[] args)
Var
{ k: integer //pencacah iterasi
Boolean get=false;
Begin
int k 0
point=0,searchItem=input.nextInt();
While ((k
for(int i=0;i
k k + 1
{
EndWhile
if (searchItem==arr[i])
IF (L[k]=X) then
{
ketemu true
get=true;
Else
point=i; ketemu false
break;
EndIf
}
End
}
if (get) System.out.println("Angka "+searchItem+" ditemukan dalam array ke-"+(point+1));
else System.out.println("Angka ditemukan"); } }
2. Binary Search Binary Search (pencarian biner) adalah proses mencari data dengan membagi data atas dua bagian secara terus menerus sampai elemen yang dicari ditemukan, atau indeks kiri lebih besar dari indeks kanan (data sudah tidak bisa lagi dibagi menjadi dua bagian). Kekurangannya dalam pencarian ini adalah data yang dicari harus sudah dalam keadaan terurut (ascending maupun descending). Kelebihannnya, jika data sudah dalam keadaan terurut maka pencarian akan berjalan jauh lebih cepat dari pada pencarian dengan sequential search.
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 57
tidak
Contoh 4.2 Procedure Binary Search
Program Binary Search dalam Java Dengan data terurut secara ascending
Procedure Binary_Search (input L: LarikInt, input N: integer, input X: integer, output ketemu:
public class BinarySearch {
boolean)
public static void main(String[] args)
Var
{
i, j: integer
int l=0,r=c;
//indeks elemen kiri dan
int searchItem=input.nextInt();
kanan k: integer
while(l+1
//indeks elemen tengah
Begin
{
i 1
if (arr[(l+r)/2]
j N
l=(l+r)/2;
ketemu false
else
While ((not ketemu) and (i <= j))
r=(l+r)/2;
k (i+j) div 2
}
IF (L[k]=X) then
if (arr[l]==searchItem)
ketemu = true
System.out.println("Data ditemukan
Else
pada index ke-"+(l+1));
IF (L[k] < X) then ik+1
else if (arr[r]==searchItem)
//batas kiri
System.out.println("Data ditemukan
diubah
Else
pada index ke-"+(r+1)); j k – 1
else
//batas
System.out.println("Data
kanan diubah
EndIf
ditemukan");
EndIF EndWhile
} }
IF (not ketemu) then ketemu false
EndIF End
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 58
tidak
Contoh berikut ini untuk memperjelas cara kerja binary search pada deretan angka “2 7 11 13 90 101” :
Bentuk penyimpanan dalam array “tabel*index+”: Angka
2
7
11
13
90
101
Index
1
2
3
4
5
6
1. Proses pencarian angka 11 Iterasi 1
i=1, j=6 dan k=(1+6) div 2=3 karena “tabel*3+=11” maka pencarian dihentikan dan ketemu=true
2. Proses pencarian angka 7 Iterasi 1
i=1, j=6 dan k=(1+6) div 2=3 karena ( tabel[3]!=7 dan i<=j) maka pencarian masih dilanjutkan
Iterasi 2
Karena tabel[k]>x (11>7) maka j=k-1, sehingga j=3-1=2 , i=1, dan k=(1+2) div 2=1 karena ( tabel[1]!=7 dan i<=j) maka pencarian masih dilanjutkan
Iterasi 3
Karena tabel[k]
3. Proses pencarian angka 6 Iterasi 1
i=1, j=6 dan k=(1+6) div 2=3 karena ( tabel[3]!=6 dan i<=j) maka pencarian masih dilanjutkan
Iterasi 2
Karena tabel[k]>x (11>6) maka j=k-1, sehingga j=3-1=2 , i=1, dan k=(1+2) div 2=1 karena ( tabel[1]!=6 dan i<=j) maka pencarian masih dilanjutkan
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 59
Iterasi 3
Karena tabel[k]
Iterasi 4
Karena tabel[k]6) maka j=k-1, sehingga j=2-1=1 , i=2, dan k=(2+1) div 2=1 karena ( tabel[1]!=6 dan i>j) maka pencarian dihentikan dan ketemu=false
SOAL : 1. Untuk memulai mengerjakan TP maka carilah bekal ini terlebih dahulu: a. Apa yang dimaksud dengan array? a.1. Apa perbedaan array satu dimensi dan array dua dimensi? a.2. Bagaimana cara penulisan array satu dimensi dan array dua dimensi pada Pascal? b. Carilah algoritma searching yang belum ada di modul! Misalnya Pencarian pohon (tree search),Pencarian grafik(graph search) c. Carilah algoritma sorting yang belum ada di modul! Misalnya Merge Sort, Quick Sort
2. Untuk mengingat materi function dan prosedur maka buatlah sebuah progr am yang didalamnya terdapat array[1..25] untuk menampung angka yang diurutkan, kemudian buatlah sebuah prosedur untuk mengurutkan angka tersebut secara descending! *gunakan selection sort dalam prosedur tersebut. 3. Jelaskan perbedaan metode sequential search dan metode binary search ! 4. Pengurutan genap dan ganjil Brust menginginkan mengurutkan semua angka yang telah di masukkan tetapi cara pengurutannya berbeda dari biasanya. Dia ingin angka ganjil yang diurutkan terlebih dahulu
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 60
baru kemudian angka genap. Sebagai anak Sistem Informasi yang mengerti pemrograman bantulah dia. *kalau ada angka 0 anggap saja termasuk angka genap. Tampilan yang diinginkan Brust: Input: Jumlah angka yang dimasukkan: 7 Angka ke-1:1 Angka ke-2:6 Angka ke-3:9 Angka ke-4:2 Angka ke-5:3 Angka ke-6:2 Angka ke-7:4 Output: Pengurutan Brust : 1 3 9 2 2 4 6
5. Jacky ingin mencari sebuah angka yang telah disimpan dalam sebuah array, tetapi karena dia tidak kuliah di ITT dia merasa sangat kesulitan. Untuk itu bantulah dia dengan cara membuat program yang dapat mengurutkan semua angka yang telah diinputkan secara descending kemudian mencari sebuah angka dengan metode binary search. Tampilan yang diinginkan Jacky Input:
Note::: -
Jumlah Angka yang disimpan = 6 Angka ke-1 = 9
-
Ingat, angka yang dicari dengan metode binary search harus sudah dalam keadaan terurut Untuk metode sorting bebas (nilai lebih jika menggunakan metode yang tidak ada di modul).
Angka ke-2 = 7 Angka ke-3 =1 Angka ke-4 = 14 Angka ke-5 = 3 Angka ke-6 = 2
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 61
Output: Angka yang telah diurutkan: 1 2 3 7 9 14
Input: Angka yang dicari = 7 Output = ditemukan pada array ke-3
Input: Angka yang dicari = 10 Output = Angka tidak ditemukan
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 62
Daftar Link
Berikut daftar link untuk mempelajari java lebih jauh : http://www.java2s.com/ http://ilmukomputer.org/category/pemrograman-java/ http://download.oracle.com/javase/tutorial/java/javaOO/index.html http://www.oracle.com/technetwork/java/javase/downloads/java-se-7-tutorial-2011-07-28431908.html
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 63
LAMPIRAN Cara Input di JAVA : Menggunakan System.in :
Public class masukin{ Public static void main(String[] args){ Scanner scan = new scanner(System.in); Int num1 = scan.nextInt(); Int num2 = scan.nextInt(); Int num3 = num1 + num2; System.out.println(“The answer:
”+num3);
} }
Menggunakan Dialog box JoptionPane : 1. Input String ::: package modul5; import javax.swing.JOptionPane; public class Masuk { public static void main(String[] args) {
String hasilinput; hasilinput = JOptionPane.showInputDialog ("Ini input String menggunakan dialog"); System. out.print("hasil input => " + hasilinput); } }
2. Input Integer ::: package modul5; import javax.swing.JOptionPane; public class input2 { public static void main(String[] args) {
String hasilInput; int inputBilangan; hasilInput = JOptionPane.showInputDialog ("Ini contoh input angka dengan dialog"); inputBilangan=Integer. parseInt(hasilInput); System. out.print("hasil input => "+(10+inputBilangan)); } }
Modul Praktikum Algoritma Dan Pemrograman 2011/2012
Halaman 64