Algoritma dan Pemrograman
2
Modul Praktikum
Nama Mahasiswa________________________________:
NIM
: _________________________________
Perhatian: Modul harus dikembalikan di akhir semester dan akan
diinventariskan ke Perpustakaan Politeknik Kampar.
Program Studi Teknik Informatika
Politeknik Kampar
Modul praktikum ini telah diperiksa dan dan disetujui digunakan di Program Studi Teknik
Informatika Politeknik Kampar untuk mata kuliah Algoritma dan Pemrograman 2 (Praktik)
T.A 2011/2012
Batubelah, Maret 2012 Dibuat oleh: Diperiksa oleh:
Dosen Ka. Prodi. Teknik Informatika
1
Prerequisite: Array 1 Dimensi di Java...1
Perintah...1
Kode Sumber Array1D.java...1
Array 2 Dimensi di Java...2
Perintah...2
Kode Sumber Array2D.java...2
Tugas 1 Google Docs...3
Praktikum 2 :...Selasa, 13 Maret 2012 – Kamis, 15 Maret 2012 4 Array 3Dimensi di Java...4
Perintah...4
Kode Sumber Array3D.java...4
Input/Output di Java...4
Perintah...4
Kode Sumber SiapaNama.java...5
Perintah...5
Kode Sumber Keyboard.java...6
KeyboardTest.java...7
Praktikum 3 :...Selasa, 27 Maret 2012 – Kamis, 29 Maret 2012 9 Matriks...9
Perintah...9
Matriks01.java...9
Perintah...10
Matriks.java...10
Matriks2x2.java...11
Praktikum 4 :...Selasa, 24 April 2012 – Kamis, 26 April 2012 16 Matriks (Cont.)...16
Perintah...16
Matriks3x3.java...16
Matriks4x4.java...19 Praktikum 5 :...Selasa, 15 Mei 2012 – Kamis, 17 Mei 2012
Praktikum 6 :...Selasa, 22 Mei 2012 – Kamis, 24 Mei 2012 30
Koleksi (Collections)...30
Praktikum 7 :...Selasa, 05 Juni 2012 – Kamis, 07 Juni 2012 33 Pengurutan (Sorting) dan Pencarian (Searching)...33
Perintah...33
UsingArrays.java...33
Praktikum 8 :...Selasa, 12 Juni 2012 – Kamis, 14 Juni 2012 37 ArrayList...37
Perintah...37
Praktikum 9 :...Selasa, 26 Juni 2012 – Kamis, 28 Juni 2012 40 Vector...40
Perintah...40
Praktikum 10 :Selasa, 03 Juli 2012 – Kamis, 05 Juli 2012...43
Individual Project: Aplikasi CLI Sederhana dengan Java...43
Ketentuan...43
Contoh Topik: Faktorial...43
Feedback Individual Project...44
Ketepatan Waktu (20%)...44
Kesesuaian dengan Perintah (40%)...44
Tugas (40%)...44
Rekapitulasi Nilai Praktikum...44
Praktikum 1 :
–
Prerequisite: Array 1 Dimensi di Java
Perintah
Carilah 3 buku di Perpustakaan Politeknik Kampar yang memuat materi Array dan/atau Pencarian/Searching dan/atau Pengurutan/Sorting di Java. Tuliskan ama pengarang, tahun, judul, penerbit di kotak berikut:
Ketikkan dan coba eksekusi program Array1D.java di bawah ini! Tuliskan hasilnya di kotak berikut:
Kode Sumber Array1D.java 1 public class Array1D
2 {
3 public static void main(String args[]){
4 int [] a = new int[10];
5 int [] b = { 10,11,12,41,23,9,-10};
6 int i;
7
8 for (i=0; i < a.length ; i++)
9 {
10 a[i] = (int)(Math.random()*100);
11 }
12
13 for (i=0; i < a.length ; i++)
14 {
15 System.out.println(i+": "+a[i]);
16 }
17
18 for (i=0;i<b.length ;i++)
19 {
21 {
Array 2 Dimensi di Java
Perintah
Ketik, eksekusi dan pahami kode sumber Array2D.java di bawah ini! Tuliskan outputnya di kotak berikut:
Kode Sumber Array2D.java 1 public class Array2D
25 }
26 System.out.println();
27 }
28 }
29 }
Tugas 1 Google Docs
Modifikasi kode sumber Array2D.java di atas sehingga outputnya tidak ada koma di elemen terakhir, seperti contoh di bawah ini. Ganti nama sesuai nama Anda. Namakan classnya dengan pola
Array2DNamaAnda.java. Upload solusi Anda ke http://docs.poltek-kampar.ac.id/, buat sebuah collection dengan format penamaan
ALG2_NamaAnda, kemudian share collection tersebut untuk bisa dilihat oleh [email protected].
Praktikum Algoritma dan Pemrograman 2 Array 2 Dimensi
Oleh: Muhammad Jazman(Ganti dengan nama Anda)
[0]=145, 331, 962, 208, 414, 859, 399, 830 [1]=781, 424, 408, 725, 810, 392, 763, 890 [2]=939, 114, 598, 344, 149, 538, 789, 400 [3]=107, 573, 943, 70, 904, 447, 294, 828 [4]=92, 66, 447, 882, 704, 706, 520, 177 [5]=349, 435, 660, 581, 275, 324, 335, 103 [6]=482, 855, 46, 522, 614, 935, 329, 521 [7]=349, 565, 7, 262, 444, 545, 638, 362 [8]=442, 534, 47, 391, 250, 423, 627, 352 [9]=477, 269, 816, 57, 460, 938, 799, 986
Tuliskan bagian mana dari kode sumber Array2D.java yang harus diubah dan apa perubahannya pada kotak berikut:
Diterima
Tanggal : ...
Praktikum 2 :
–
Array 3Dimensi di Java
Perintah
Ketikkan kode sumber Array3D.java di bawah, tuliskan hasilnya pada kotak berikut:
Kode Sumber Array3D.java 1 public class Array3D{
2 static final int x=3;
3 static final int y=5;
4 static final int z=2;
5 public static void main(String[]args){
6 int[][][]a=new int[x][y][z];
7 for (int i=0;i<x;i++){
8 for (int j=0;j<y;j++){
9 for (int k=0;k<z;k++){
10 a[i][j][k]=(int)(Math.random()*1000);
11 }
12 }
13 }
14 for (int i=0;i<x;i++){
15 System.out.print("\nBaris "+i+":");
16 for (int j=0;j<y;j++){
17 System.out.print("\nKolom "+j+":");
18 for (int k=0;k<z;k++){
19 System.out.print("\t"+a[i][j][k]);
20 }
21 }
22 System.out.print("\n---- Akhir Baris "+i+"\n");
23 }
24 }
25 }
Perintah
Ketikkan SiapaNama.java, jalankan, tuliskan hasilnya di kotak berikut:
Kode Sumber SiapaNama.java 1 class SiapaNama
2 {
3 public static void main (String[] args)
4 {
5 System.out.print("Masukkan nama Anda: ");
6
7 java.io.BufferedReader input =
8 new java.io.BufferedReader (
9 new java.io.InputStreamReader (System.in));
10
11 String nama = new String();
12 try{
13 nama = input.readLine();
14 }catch(java.io.IOException e){
15 }
16 System.out.print("\nHallo, " + nama);
17
18 System.out.print(" Masukkan umur Anda: ");
19 int umur = 0;
20 try{
21 umur = Integer.parseInt(input.readLine());
22 }catch(java.io.IOException e){
23 }catch(NumberFormatException e){
24 yang salah:"System.out.println(); "\n\nError:\n\tMaaf, Anda memasukkan umur 25 System.out.println("\t"+e);
26 System.out.println("\n\tumur Anda di set 0 tahun!");
27 umur = 0; //failed on conversion from String to Integer 28 }
29 tahun."System); .out.println("Hallo "+ nama + ", Umur Anda: " + umur + " 30 }
31 }
Perintah
Tuliskan apa yang Anda ketahui tentang try-catch !
Tuliskan apa yang Anda ketahui tentang java.io.IOException!
Tuliskan apa yang Anda ketahui tentang NumberFormatException!
Ketikkan kode sumber Keyboard.java, dan KeyboardTest.java di bawah ini! Tuliskan keluaran/error saat Anda menjalankan Keyboard.class :
Menurut Anda, apa penyebab pesan tersebut?
Tuliskan keluaran saat Anda menjalankan KeyboardTest.class :
Kode Sumber Keyboard.java 1 import java.io.BufferedReader;
2 import java.io.InputStreamReader;
3 import java.io.IOException;
4
5 public class Keyboard{
6
7 private BufferedReader reader;
8
9 //Constructor
10 public Keyboard() {
11 reader = new BufferedReader (new InputStreamReader(System.in));
13 public String getKeyboardInput(){
20 return Integer.parseInt(readKeyboard());
21 }
22 public double getDouble(){
23 return Double.parseDouble(readKeyboard());
24 }
31 private String readKeyboard(){
32 String line = "";
1 public class KeyboardTest
4 1
5 {
1
6 k.tampil("Anda sudah boleh nonton film Upin dan Ipin!");
1
7 }else{
1
8 k.tampil("Go Go Power Rangers!");
1
9 }
2 0 }
2 1 }
Apa kegunaan fungsi Integer.parseInt()
Apa kegunaan fungsi Double.parseDouble()
Diterima
Tanggal : ... Pukul : ...
Praktikum 3 :
–
Matriks
Matriks dapat direpresentasikan menggunakan array dua dimensi: dimana dimensi pertama adalah baris matriks tersebut; sedangkan dimensi
keduanya adalah kolomnya.
Perintah
 Ketik ulang Matriks01.java, compile, lalu jalankan.
 Jawab semua pertanyaan di kotak yang mengikutinya! Jika tidak muat, boleh ditulis di tempat lain.
 Perhatikan implementasi perkalian matriks di java. Java memulai penomoran index di array dengan angka 0, sama seperti bahasa C.
Tuliskan keluaran saat Anda menjalankan Matriks01.java dibawah ini!:
Matriks01.java
1 public class Matriks01{
2 public static void main(String[]args){
3 int a[][] = {{2,3},{4,5}};
4 int[][] b = new int[2][2];
5 b[0][0] = 10;
6 b[0][1] = 8;
7 b[1][0] = 4;
8 b[1][1] = 6;
9
10 System.out.println("Matriks A:");
11 for(int i=0;i<2;i++){
12 for(int j=0;j<2;j++){
13 System.out.print(a[i][j]+"\t");
14 }
15 System.out.println();
16 }
17
18 System.out.println("\n Matriks B:");
19 for(int i=0;i<2;i++){
21 System.out.print(b[i][j]+"\t");
 Ketik ulang Matriks.java dan Matriks2x2.java (dan juga untuk praktikum berikutnya, Matriks3x3.java dan Matriks4x4.java) pada direktori yang sama. Compile dan jalankan.
 Perhatikan implementasi OOP (Object Oriented Programming) di sini:
o inheritance,
o overloading,
o overriding
 Perhatikan penggunaan konstruktor.
 Perhatikan penggunaan fungsi yang static (dan variable static)
Matriks.java
1 public class Matriks{
2 protected int[][] a;
2 * extend kelas Matriks untuk lebih menyederhanakan 3 */
4 public class Matriks2x2 extends Matriks{
1
5 /** Static function to "kali" two 2D array of integer 1
6 /** return a new Matriks2x2, a multiplication of two Matriks2x2 2
7 */ 2
8 public static Matriks2x2 kali(Matriks2x2 a,Matriks2x2 b){
2
3
9 */ 4
0 public Matriks2x2 kali(Matriks2x2 b){
4
6
7 public static Matriks2x2 newRandomMatriks2x2(int x){
6
9 System.out.println(a.getMatriks());//toString 8
0 a.print();
8
1 System.out.println("\nConvert our \"matriks\" into a Random matrix one");
8
2 a.random(1000);
8
3 a.print();
8
4 System.out.println("\nBaris:"+a.getBaris());
8
5 System.out.println("Kolom:"+a.getKolom());
8
6 a=a.kali((new Matriks2x2()).newRandomMatriks2x2(10));
8
7 a.print();
8
8 (new Matriks2x2()).newRandomMatriks2x2(10).print();
8 9 }
9 0 }
Tuliskan keluaran saat Anda menjalankan Matriks2x2
Apakah kegunaan keyword extend ?
Apakah kegunaan keyword super?
Apakah kegunaan keyword final ?
Apakah kegunaan keyword protected ?
Apakah perbedaan antara fungsi int[][]kali dengan Matriks2x2 kali
pada Matriks2x2.java di atas?
Jelaskan perbedaan antara overriding dengan overloading
Jelaskan perbedaan antara fungsi public static Matriks2x2 kali(Matriks2x2 a,Matriks2x2 b) dengan public Matriks2x2 kali(Matriks2x2 b) !
Pada fungsi main, jelaskan secara singkat arti perintah a.random(1000)
Pada fungsi main, jelaskan secara singkat arti perintah a.print()
Pada fungsi main, jelaskan secara singkat arti perintah a.getBaris() dan a.getKolom(). Kenapa a itu dapat menggunakan fungsi tersebut, walaupun Matriks2x2.java tidak memiliki fungsi getBaris dan getKolom()
Pada fungsi main, jelaskan secara singkat arti perintah a=a.kali((new
Matriks2x2() ).newRandomMatriks2x2(10));
Pada fungsi main, jelaskan secara singkat arti perintah (new Matriks2x2() ).newRandomMatriks2x2(10).print();
Diterima
Tanggal : ... Pukul : ...
Praktikum 4 :
–
Matriks (Cont.)
Praktikum 4 ini merupakan lanjutan dari praktikum sebelumnya.
Perintah
 Ketik ulang Matriks3x3.java, letakkan di direktori yang sama dengan Matriks.java.
 Jawablah semua pertanyaan dengan seksama dan hati-hati.
 Boleh bertanya dengan teman, tapi tulis hasil kerja Anda sendiri.
 Jangan lupa untuk mengumpulkan modul ini ke instruktur.
 Perhatikan perbedaan antara Matriks3x3.java dengan Matriks2x2.java
 Perhatikan penggunaan fungsi toString yang merupakan overriding dari Object.toString()
 Perhatikan baik-baik penggunaan perulangan 3 lapis pada pengalian matriks
Tulis keluaran saat Anda menjalankan Matriks3x3.java di bawah ini!:
Matriks3x3.java
1 public class Matriks3x3 extends Matriks{
2 public Matriks3x3(int[][]a){
3 super(a,3,3);
4 }
5 public Matriks3x3(){
6 super(new int[3][3],3,3);
7 }
8
9 /** Static function to "kali" two 2D array of integer 10 */
11 public static int[][] kali(int[][]a,int [][]b){
12 int c[][] = new int[3][3];
13 //pada tiap baris c: baris a tetap, kolom b tetap 14 //first row
15 c[0][0]=a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0];
16 c[0][1]=a[0][0]*b[0][1]+a[0][1]*b[1][1]+a[0][2]*b[2][1];
17 c[0][2]=a[0][0]*b[0][2]+a[0][1]*b[1][2]+a[0][2]*b[2][2];
18 //second row
20 c[1][1]=a[1][0]*b[0][1]+a[1][1]*b[1][1]+a[1][1]*b[2][1];
21 c[1][2]=a[1][0]*b[0][2]+a[1][1]*b[1][2]+a[1][2]*b[2][2];
22
23 //dapat kah Anda menemukan pola bahwa c[baris] == a[baris]? 24 //dan c[kolom] == b[kolom]
25 //dan kemudian lompat satu satu pada selainnya? 26
35 /** return a new Matriks3x3, a multiplication of two Matriks3x3 36 */
37 public static Matriks3x3 kali(Matriks3x3 a,Matriks3x3 b){
38 int c[][] = new int[3][3];
49 /** return a new Matriks3x3, a multiplication of our 50 * Matriks3x3 with another Matriks3x3
51 */
52 public Matriks3x3 kali(Matriks3x3 b){
53 return kali(new Matriks3x3(this.a),b);
54 }
55 public Matriks3x3 kali_v2(Matriks3x3 b){
68 String temp = new String();
78 //convert our Matriks3x3 into a random matriks 79 public void random(int x){
87 public static Matriks3x3 newRandomMatriks3x3(int x){
88 //kenapa kita tidak bisa menggunakan baris dan kolom di sini? 89 int[][]a = new int[3][3];
101 System.out.println(a);//toString
102 System.out.println("\nConvert our \"matriks\" into Random matrix");
103 a.random(1000);
104 System.out.println(a);
105
106 a=a.kali((new Matriks3x3()).newRandomMatriks3x3(10));
107 a.print();
108
109 System.out.println("newRandomMatriks3x3(10): ");
110 //(new Matriks3x3()).newRandomMatriks3x3(10).print();
111 System.out.println((new Matriks3x3()).newRandomMatriks3x3(10));
112 }
113 }
Jelaskan arti perintah System.out.println(a); yang terdapat pada fungsi
main
Bisakah kita melakukan System.out.println(a.random(1000));? Kenapa?
Kenapa kita tidak bisa menggunakan variable baris dan kolom pada fungsi
public static Matriks3x3 newRandomMatriks3x3(int x)
Matriks4x4.java
1 public class Matriks4x4 extends Matriks{
2 /** Konstruktor 3 */
4 public Matriks4x4(int[][]a){
5 super(a,4,4);
6 }
7 public Matriks4x4(){
8 super(new int[4][4],4,4);
9 }
10
11 /** Static function to "kali" two 2D array of integer 12 */
13 public static int[][] kali(int[][]a,int [][]b){
14 int c[][] = new int[4][4];
15 for(int i=0;i<4;i++){
16 for(int j=0;j<4;j++){
17 for(int k=0;k<4;k++){
18 c[i][j]+=a[i][k]*b[k][j];
19 }
20 }
21 }
22 return c;
23 }
24
27
39 /** return a new Matriks4x4, a multiplication of our 40 * Matriks4x4 with another Matriks4x4
41 */
42 public Matriks4x4 kali(Matriks4x4 b){
43 return kali(new Matriks4x4(this.a),b);
44 }
45 public Matriks4x4 kali_v2(Matriks4x4 b){
46 return new Matriks4x4(kali(this.a,b.a));
69 //convert our Matriks4x4 into a random matriks 70 public void random(int x){
71 for(int i=0;i<baris;i++){
72 for(int j=0;j<kolom;j++){
73 a[i][j] = (int) (Math.random()* x);
75 }
76 }
77
78 public static Matriks4x4 newRandomMatriks4x4(int x){
79 //kenapa kita tidak boleh menggunakan variable baris dan kolom di fungsi ini?
80 int[][]a = new int[4][4];
81 for(int i=0;i<4;i++){
82 for(int j=0;j<4;j++){
83 a[i][j] = (int) (Math.random()* x);
84 }
85 }
86 return new Matriks4x4(a);
87 }
88
89 public static void main(String[]args){
90 Matriks4x4 a = new Matriks4x4(new int[4][4]);
91 System.out.println("\nMatriks random:");
92 a.random(1000);
93 a.print();
94
95 System.out.println("\na=a.kali((new Matriks4x4()).newRandomMatriks4x4(10));");
96 a=a.kali((new Matriks4x4()).newRandomMatriks4x4(10));
97 a.print();
98
99 System.out.println("\n(new
Matriks4x4()).newRandomMatriks4x4(10).print();");
100 (new Matriks4x4()).newRandomMatriks4x4(10).print();
101 System.out.println("\nnewRandomMatriks4x4(10)\n"
+newRandomMatriks4x4(10));
102 }
103 }
Diterima
Tanggal : ... Pukul : ...
Praktikum 5 :
–
Matrik (Cont.)
Perintah
 Pelajari dengan seksama kode sumber Matrik.java, pastikan Anda mengerti setiap baris kodenya.
 Jawablah pertanyaan dan kumpulkan langsung ke instruktur.
 Bantu teman Anda jika Anda telah mengerti, dan jangan malu untuk bertanya jika Anda tidak mengerti. Malu bertanya jalan-jalan,
banyak bertanya malu-maluin.
Matrik.java
1 public class Matrik{
2 protected int[][] a;
16 empty constructor 17 */
35 kalikan matrik kita dengan matrik lain, menghasilkan matrik 36 baru
37
38 matrik A[baris_a][kolom_a] hanya bisa dikalikan dengan matrik 39 yang B[baris_b][kolom_b] jika kolom_a == baris_b]
40 */ 41
42 public Matrik kali(Matrik a){
43 //pastikan baris a sama dengan kolom kita 44 if(a.getBaris()== kolom){
45 //System.out.println("baris matrik yang dikali sama dengan kolom kita");
47 for(int i=0;i<baris;i++){
56 System.out.println("Error: baris matrik yang dikali tidak sama dengan kolom kita");
57 return new Matrik();
58 }
59 }
60 public Matrik tambah(Matrik a){
61 Matrik b = new Matrik(baris,kolom);
94
95 }
96 }
97
98 /**
99 Convert our matrik into a random matrik, value ranged 100 from 0 to an integer x (input)
111 //kita dapat mengganti fungsi random() diatas cukup dengan 112 //satu baris ini:
127 Convert our matrik into an identity matrix 128 */
138 Transpose an input maktrik, yaitu mengubah baris menjadi kolom 139 */
140 public static Matrik transpose(Matrik a){
142 for(int i=0;i<b.baris;i++){
160 public static void main(String[]arguments){
161 Matrik m2x2 = new Matrik(2,2);
173 System.out.println("\nrandom()");
174 c.random();
175 System.out.println(c);//c.print(); 176
177 c.random1();System.out.println("c.random1()\n"+c);
178 179
180 System.out.println("\nrandom(100)");
181 c.random(100);
182 c.print();
183
184 System.out.println("\nrandom matrik2x3:\n"+ random(2,3));
185
186 //perhatikan bahwa matrik kita tidak bisa menjadi identitas, 187 //karena baris tidak sama dengan kolom;
188 System.out.println("\nidentitas()");
190 191
192 System.out.println("Transpose:");
193 transpose(c).print();
194 c.swap(0,1);
195 System.out.println("Swap (0,1)");
196 c.print();
197 }
198 199 }
Jelaskan secara singkat arti perintah
if(a.getBaris()== kolom){
yang terdapat pada fungsi public Matrik kali(Matrik a)
Jelaskan secara singkat arti perintah
int c[][]=new int[baris][a.getKolom()];
Jelaskan secara singkat arti perintah
c[i][j]+=this.a[i][k]*a.a[k][j];
yang terdapat pada fungsi public Matrik kali(Matrik a)
Jelaskan secara singkat arti perintah
return new Matrik(c,baris,a.getKolom());
yang terdapat pada fungsi public Matrik kali(Matrik a)
Jelaskan secara singkat perbedaan antara fungsi public void print()
dengan fungsi public String toString()
Apa yang terjadi bila Math.round dihilangkan pada fungsi public void
random()
Apa maksud perintah random(1) yang terdapat pada public void random1()
Kenapa pada public static Matrik random(int baris, int kolom) kita masih
bisa menggunakan variable baris dan kolom?
Apa itu matrik identitas?
Diterima
Tanggal : ... Pukul : ...
Praktikum 6 :
–
Koleksi (Collections)
Koleksi merupakan sebuah struktur data yang dapat menyimpan referensi ke objek yang lain. Biasanya, koleksi menyimpan referensi ke objek yang sejenis. Beberapa antarmuka kerangkakerja koleksi adalah:
 Collection (koleksi), merupakan antarmuka induk;
 Set (himpunan), merupakan koleksi yang tidak memiliki nilai duplikat, semuanya unik (tidak ada yang sama);
 List (daftar), merupakan koleksi yang terurut dan dapat memiliki nilai duplikat;
 Map (peta), merupakan koleksi yang dapat memetakan sebuah kunci kepada nilai koleksi, tidak dapat memiliki nilai duplikat; dan
 Queue (antrian), biasanya sebuah koleksi FIFO (first-in-first-out), yang memodelkan peng-antri-an.
Untuk lebih jelasnya, silahkan lihat Java Documentation pada paket java.util.
Bagan 1 Dokumentasi paket java.util
Apakah yang dimaksud dengan Java Collections Framework?
Apakah Class Arrays merupakan anggota Java Collections Framework?
Bukalah Java API Documentation: Collections Framework Overview. Jelaskan keuntungan-keuntungan utama Collections Framework!
Sebutkan komponen-komponen Collections Framework di Java:
Sebutkan 14 macam collection interface di Java
Jelaskan secara singkat apa itu koleksi yang modifiable:
Jelaskan secara singkat perbedaan koleksi yang immutable dan koleksi yang mutable:
Jelaskan secara singkat apa itu fixed-size list dan apa itu variable-size list
Jelaskan secara singkat apa itu random access list dan apa itu sequential access list
Lengkapilah tabel berikut:
Implementations
Hash Table ResizableArray BalancedTree LinkedList Hash Table +Linked List
Interfaces
Set List Deque
Map
Diterima
Tanggal : ... Pukul : ...
Praktikum 7 :
–
Pengurutan (Sorting) dan Pencarian (Searching)
Class Arrays menyediakan metode-metode untuk pengurutan (sort), pencarian pada array yang telah terurut (binarySearch),
membandingkan (equals) dan mengisi (fill) array.
Perintah
 Ketik ulang UsingArrays.java di bawah ini dan pelajari dengan seksama. Yakinkan diri Anda bahwa Anda mengerti SETIAP BARIS kode sumber tersebut.
Tulis hasil keluaran UsingArrays.java:
UsingArrays.java
1 // taken from Java How To Program 6th Ed 2 // Fig. 19.2: UsingArrays.java
3 // Using Java arrays. 4 import java.util.Arrays;
5
6 public class UsingArrays
7 {
8 private int intArray[] = { 1, 2, 3, 4, 5, 6 };
9 private double doubleArray[] = { 8.4, 9.3, 0.2, 7.9, 3.4 };
10 private int filledIntArray[], intArrayCopy[];
11
12 // constructor initializes arrays 13 public UsingArrays()
14 {
15 filledIntArray = new int [ 10 ]; // create int array with 10 elements 16 intArrayCopy = new int [ intArray.length ];
17
18 Arrays.fill( filledIntArray, 7 ); // fill with 7s 19 Arrays.sort( doubleArray ); // sort doubleArray ascending 20
23 0, intArray.length );
62 System.out.printf( "intArray %s filledIntArray\n",
63 ( b ? "==" : "!=" ) );
71 usingArrays.printEquality();
72
73 int location = usingArrays.searchForInt( 5 );
74 if ( location >= 0 )
75 System.out.printf(
76 "Found 5 at element %d in intArray\n", location );
77 else
78 System.out.println( "5 not found in intArray" );
79
80 location = usingArrays.searchForInt( 8763 );
81 if ( location >= 0 )
82 System.out.printf(
83 "Found 8763 at element %d in intArray\n", location );
84 else
85 System.out.println( "8763 not found in intArray" );
86 } // end main
87 } // end class UsingArrays
Tuliskan isi elemen filledIntArray setelah baris 15!
Berapa nilai intArray.length pada baris 16?
Berapa nilai intArrayCopy.length setelah baris 16?
Tuliskan isi filledIntArray setelah baris 18!
Tuliskan isi doubleArray sebelum baris 19!
Tuliskan isi doubleArray setelah baris 19!
Tuliskan keluaran baris 31!
Apa maksud perintah Arrays.binarySearch( intArray, value) seperti pada baris 51?
Apa maksud perintah Arrays.equals pada baris 57?
Apa maksud perintah ( b ? "==" : "!=" ) pada baris 59?
Apa maksud %s pada baris 58?
Kenapa location pada baris 76 bernilai 4? Kenapa bukan 3?
Jika baris 8 diganti dengan
private int intArray[] = { 1, 2, 3, 4, 6, 8763 };
Apa saja perubahan yang terjadi pada output program? Kenapa?
Diterima
Tanggal : ... Pukul : ...
Praktikum 8 :
–
ArrayList
Perintah
Gunakan kode sumber dibawah ini untuk menjawab pertanyaan yang ada pada eLearning! Di akhir praktikum, tetap kumpulkan hardcopy lembaran ini ke tutor Anda!
1 import java.util.*;
2
3 public class ArrayListTest
4 {
5 public static void main(String[] args)
6 {
7 // fill the staff array list with three Employee objects 8 ArrayList<Employee> staff = new ArrayList<Employee>();
9
24 class Employee
38
39 public double getSalary()
40 {
41 return salary;
42 }
43
44 public Date getHireDay()
45 {
46 return hireDay;
47 }
48
49 public void raiseSalary(double byPercent)
50 {
51 double raise = salary * byPercent / 100;
52 salary += raise;
53 }
54
55 public String toString()
56 {
57 return "\nName: "+name+"\nSalary: "+salary+"\nHire Day: "+hireDay+"\n";
58 }
59
60 private String name;
61 private double salary;
62 private Date hireDay;
63 }
Tuliskan keluaran kode diatas jika dijalankan
Pada baris #10, apa maksudnya?
staff.add(new Employee("Carl Cracker", 75000, 1987, 12, 15));
Apa maksud perintah pada baris #15?
for (Employee e : staff)
Apa yang terjadi jika diakhir baris #15 ditambahkan tanda titik koma “;”. Jelaskan kenapa!
for (Employee e : staff);
Dimanakah letak paket kelas GregorianCalendar? (lihat baris #30)
Pada baris #44, dimanakah letak paket kelas Date?
Bagian manakah yang perlu diubah jika ingin menghasilkan seperti berikut
Nama: Carl Cracker Gaji: 78750.0
Tanggal Penerimaan: Tue Dec 15 00:00:00 ICT 1987
Nama: Harry Hacker Gaji: 52500.0
Tanggal Penerimaan: Sun Oct 01 00:00:00 ICT 1989
Nama: Tony Tester Gaji: 42000.0
Tanggal Penerimaan: Thu Mar 15 00:00:00 ICT 1990
Diterima
Tanggal : ... Pukul : ...
Praktikum 9 :
–
Vector
Perintah
Gunakan kode sumber dibawah ini untuk menjawab pertanyaan yang ada pada eLearning! Di akhir praktikum, tetap kumpulkan hardcopy lembaran ini ke tutor Anda!
1 import java.util.Vector;
2 3 /**
4 * Test Vector 5 */
6 public class VectorTest{
7 public static void main(String[]args){
8 Vector v = new Vector(5,2);
9
10 System.out.println("v.size()\t"+v.size());
11 System.out.println("v.capacity()\t"+v.capacity());
12
22 System.out.println("v.size()\t"+v.size());
23 System.out.println("v.capacity()\t"+v.capacity());
24
31 class Mahasiswa{
39 this.nama = nama;
40 this.umur = 0;
41 }
42 public Mahasiswa(int i){
43 this.umur = i;
44 }
45 public Mahasiswa(String nama, int umur){
46 this.nama = nama;
47 this.umur = umur;
48 }
49 public String toString(){
50 return this.nama+", "+this.umur+" tahun";
51 }
52 }
53
54 class Buku{
55 public String judul;
56 public int tahun;
57 public Buku(){};
58 public Buku(String j){
59 this.judul = j;
60 }
61 public Buku(String j, int t){
62 this.judul = j;
63 this.tahun = t;
64 }
65 }
Tuliskan keluaran kode sumber di atas:
Apa perbedaan Vector dengan Array?
Apa perbedaan Vector dengan ArrayList?
Apa keluaran baris #14
Apa keluaran baris #15
Kenapa keluaran baris #15 seperti itu?
Fungsi apakah yang harus dibuat dan dimana, sehingga tampilan baris#15 adalah
kira-kira seperti berikut: Judul Buku: Ayat-Ayat Cinta Tahun Terbit: 2009
Tuliskan snippet (potongan kode sumber) fungsi tersebut di bawah ini:
Apa maksud kode berikut:
v.get(v.size()-1)
Diterima
Tanggal : ... Pukul : ...
Praktikum 10 :
–
Individual Project: Aplikasi CLI Sederhana dengan Java
Setelah hampir setahun Anda mempelajari Algoritma dan Pemrograman, Anda dituntut untuk bisa menghasilkan sesuatu yang berguna bagimasyarakat. Untuk dapat lulus kuliah ini, Anda diharuskan untuk
membuat sebuah aplikasi konsol (CLI/Command Line Interface) sederhana menggunakan java.
Ketentuan
 Anda harus membuat laporan Akhir secara Individu bagaimana menjalankan aplikasi sederhana buatan Anda tersebut.
 Anda bebas menentukan sendiri topik Anda. Silahkan kerjakan sesuatu yang mudah menurut Anda. Anda hanya punya waktu 2 kali praktikum untuk membuatnya, yaitu pada hari
dan .
 DEMO dilakukan dengan konsol (cmd) bukan dengan Eclipse; lihat gambar!
 Jika mencantumkan screenshot CMD, gunakan latar belakang berwarna putih dan tulisan berwarna hitam.
 Anda harus membuatkan dokumentasi (javadoc) untuk aplikasi Anda. Arsipkan (zip) dokumentasi tersebut berikut kodesumber, dan unggah (upload) ke http://docs.poltek-kampar.ac.id dan jangan lupa untuk mensharenya ke [email protected] . Jangan
dikirimkan ke email saya! Anda cukup membuat sebuah collection di GoogleDocs, share collection tersebut ke saya, dan unggah tugas Anda!
 Adapun yang harus Anda unggah:
o Laporan dalam format *.doc atau *.docx atau google doc
o javadoc dalam bentuk *.zip
o sourcecode dalam bentuk *.java
 Penamaan collection harus berformat ALG2<SPASI>Nama Anda
Contoh Topik: Faktorial
Perhatikan bahwa faktorial tersebut merupakan sebuah BATCH file berikut:
Feedback Individual Project
//Bagian ini diisi oleh dosen
Nama Proyek :... Gambaran Umum...:
...
Ketepatan Waktu (20%)
Dikumpulkan online paling lambat malam dinihari pukul 00:00
Nilai :... Penalti (50% per 24 jam)...:
Kesesuaian dengan Perintah (40%)
Diunggah ke GoogleDocs...: Menggunakan collection...: Penamaan collection sesuai...: Disertai Javadoc :...
Tugas (40%)
Kompleksitas :... Kreativitas :... Kerapihan :... Dokumentasi :...
Tanggal : ... Pukul : ...
Nama & tanda-tangan
Dosen : ...
Rekapitulasi Nilai Praktikum
//Bagian ini diisi oleh instruktur.
Praktikum Nilai
Praktikum 2 Praktikum 3 Praktikum 4 Praktikum 5 Praktikum 6 Praktikum 7 Praktikum 8 Praktikum 9 PROYEK
Tanggal : ... Pukul : ...
Instruktur :...
Nilai Akhir Matakuliah Praktikum Algoritma dan
Pemrograman 2
//Bagian ini diisi oleh dosen.
Nama Mahasiswa :... NIM Mahasiswa : ... Nilai Angka : ... Nilai Huruf : ... Tanggal Pengisian :... Pukul : ...