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
27 //third row
28 c[2][0]=a[2][0]*b[0][0]+a[2][1]*b[1][0]+a[2][2]*b[2][0];
29 c[2][1]=a[2][0]*b[0][1]+a[2][1]*b[1][1]+a[2][1]*b[2][1];
30 c[2][2]=a[2][0]*b[0][2]+a[2][1]*b[1][2]+a[2][2]*b[2][2];
31
32 return c;
33 }
34
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];
39 for(int i=0;i<3;i++){
40 for(int j=0;j<3;j++){ 41 for(int k=0;k<3;k++){ 42 c[i][j]+=a.a[i][k]*b.a[k][j]; 43 } 44 } 45 }
46 return new Matriks3x3(c);
47 }
48
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){
56 return new Matriks3x3(kali(this.a,b.a));
57 }
58
59 public void print(){
60 for(int i=0;i<baris;i++){
61 for(int j=0;j<kolom;j++){
62 System.out.print(a[i][j]+"\t");
63 }
64 System.out.println();
65 }
66 }
68 String temp = new String();
69 for(int i=0;i<baris;i++){
70 for(int j=0;j<kolom;j++){
71 temp+=a[i][j]+"\t"; 72 } 73 temp+="\n";; 74 } 75 return temp; 76 } 77
78 //convert our Matriks3x3 into a random matriks 79 public void random(int x){
80 for(int i=0;i<baris;i++){
81 for(int j=0;j<kolom;j++){
82 a[i][j] = (int) (Math.random()* x);
83 }
84 }
85 }
86
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];
90 for(int i=0;i<3;i++){
91 for(int j=0;j<3;j++){
92 a[i][j] = (int) (Math.random()* x);
93 }
94 }
95 return new Matriks3x3(a);
96 }
97
98 //test
99 public static void main(String[]args){
100 Matriks3x3 a = new Matriks3x3(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
25 /** return a new Matriks4x4, a multiplication of two Matriks4x4 26 */
27
28 int c[][] = new int[4][4];
29 for(int i=0;i<4;i++){
30 for(int j=0;j<4;j++){ 31 for(int k=0;k<4;k++){ 32 c[i][j]+=a.a[i][k]*b.a[k][j]; 33 } 34 } 35 }
36 return new Matriks4x4(c);
37 }
38
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));
47 }
48
49 public void print(){
50 for(int i=0;i<baris;i++){
51 for(int j=0;j<kolom;j++){
52 System.out.print(a[i][j]+"\t"); 53 } 54 System.out.println(); 55 } 56 } 57
58 public String toString(){
59 String temp = new String();
60 for(int i=0;i<baris;i++){
61 for(int j=0;j<kolom;j++){
62 temp+=a[i][j]+"\t"; 63 } 64 temp+="\n"; 65 } 66 return temp; 67 } 68
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. Tuliskan output kodesumber Matrik.java!:
Matrik.java
1 public class Matrik{
2 protected int[][] a;
3 protected final int baris;
4 protected final int kolom;
5 public Matrik(int[][]a,int baris, int kolom){
6 this.a = a;
7 this.baris = baris;
8 this.kolom = kolom;
9 }
10 public Matrik(int baris, int kolom){
11 this.a = new int[baris][kolom];
12 this.baris = baris;
13 this.kolom = kolom;
14 }
15 /**
16 empty constructor 17 */
18 public Matrik(){
19 this(new int[2][2],2,2);
20 }
21 public int getBaris(){
22 return this.baris;
23 }
24 public int getKolom(){
25 return this.kolom;
26 }
27 public int[][] getMatrik(){
28 return this.a;
29 }
30 public void setMatrik(int [][]a){
31 this.a = a;
32 }
33
34 /**
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++){
48 for(int j=0;j<a.getKolom();j++){
49 for(int k=0;k<kolom;k++){
50 c[i][j]+=this.a[i][k]*a.a[k][j];
51 }
52 }
53 }
54 return new Matrik(c,baris,a.getKolom());
55 }else{
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);
62 for(int i=0;i<baris;i++){
63 for(int j=0;j<kolom;j++){
64 }
65 }
66 return b;
67 }
68 public void print(){
69 for(int i=0;i<baris;i++){
70 for(int j=0;j<kolom;j++){
71 System.out.print(this.a[i][j]+"\t");
72 }
73 System.out.println();
74 }
75 }
76 public String toString(){
77 String temp = new String();
78 for(int i=0;i<baris;i++){
79 for(int j=0;j<kolom;j++){
80 temp+=a[i][j]+"\t"; 81 } 82 temp+="\n"; 83 } 84 return temp; 85 } 86 /**
87 Convert our matrik into an random matrik, value ranged from 0 to 1 88 */
89 public void random(){
90 for(int i=0;i<baris;i++){
91 for(int j=0;j<kolom;j++){
92 a[i][j]=(int)(Math.round(Math.random()));
94
95 }
96 }
97
98 /**
99 Convert our matrik into a random matrik, value ranged 100 from 0 to an integer x (input)
101 */
102 public void random(int x){
103 for(int i=0;i<baris;i++){
104 for(int j=0;j<kolom;j++){
105 a[i][j]=(int)(Math.round(Math.random()*x));
106 }
107 }
108 }
109
110 public void random1(){
111 //kita dapat mengganti fungsi random() diatas cukup dengan 112 //satu baris ini:
113 random(1);
114 }
115
116 public static Matrik random(int baris, int kolom){
117 Matrik a = new Matrik(baris,kolom);
118 for(int i=0;i<baris;i++){
119 for(int j=0;j<kolom;j++){
120 a.a[i][j]=(int)(Math.round(Math.random()));
121 } 122 } 123 return a; 124 } 125 126 /**
127 Convert our matrik into an identity matrix 128 */
129 public void identitas(){
130 for(int i=0;i<baris;i++){
131 for(int j=0;j<kolom;j++){
132 a[i][j]= i==j?1:0; 133 } 134 } 135 } 136 137 /**
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++){
143 for(int j=0;j<b.kolom;j++){
144 b.a[i][j]=a.a[j][i]; 145 } 146 } 147 return b; 148 } 149 150 /**
151 swap baris matrik i dengan j 152 */
153 public void swap(int i, int j){
154 int[]temp=this.a[i];
155 a[i]=a[j];
156 a[j]=temp;
157 }
158
159 //test
160 public static void main(String[]arguments){
161 Matrik m2x2 = new Matrik(2,2);
162 int [][]b = {{1,2},{1,2}};
163 m2x2.setMatrik(b);
164 System.out.println("Matrik 2x2");
165 m2x2.print();
166 int [][]a = {{1,2,3,4},{1,2,3,4}};
167 Matrik m2x4 = new Matrik(a,2,4);
168 System.out.println("Matrik 2x4");
169 m2x4.print();
170 Matrik c = m2x2.kali(m2x4);
171 System.out.println("Matrik 2x2 * 2x4");
172 c.print();
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 apa yang terjadi bila baris Matrik yang dikalikan ke Matrik kita ternyata tidak sama dengan kolom Matrik kita berdasarkan kodesumber 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
Bukalah Java API Documentation, exception apakah yang dilontarkan jika referensi array yang dispesifikasi ternyata null?
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