MINGGU 4 Java Programming (MKB614C) Pokok Bahasan: Methods, fungsi & array Tujuan Instruksional Khusus: Siswa memahami method/fungsi di Java Siswa memahami array di Java Java Programming (MKB614C) Minggu 4 Page 1
Java Programming (MKB614C) Agenda Method/function di Java Array 1 dimensi di Java Array 2 dimensi di Java Java Programming (MKB614C) Minggu 4 Page 2
Method/function di Java Method/function dapat digunakan untuk Membuat code yang dapat digunakan berulang Mengatur/menata/mengorganisir code Menyederhanakan code utama Java Programming (MKB614C) Minggu 4 Page 3
Defining method/function Method/function terdiri dari nama, parameter, dan return (tipe & nilai) dan tubuh.
Method/function pada Java & bahasa pemrograman lain Beberapa bahasa pemrograman lain: Function: memiliki return value. Procedure: tidak memiliki return value. Bahasa pemrograman Java Method/function: dapat memiliki return value dan tidak memiliki return value
Invoke method/function Method/function dapat digunakan dengan/tanpa memberikan parameter.
Contoh penggunaan method/function dengan return value int sum = 0; for (int i = 1; i <= 10; i++) sum += i; System.out.println("Sum from 1 to 10 is " + sum); sum = 0; for (int i = 20; i <= 37; i++) System.out.println("Sum from 20 to 37 is " + sum); for (int i = 35; i <= 49; i++) System.out.println("Sum from 35 to 49 is " + sum); public static int sum(int i1, int i2) { int result = 0; for (int i = i1; i <= i2; i++) result += i; return result; } public static void main(String[] args) { System.out.println("Sum from 1 to 10 is " + sum(1, 10)); System.out.println("Sum from 20 to 37 is " + sum(20, 37)); System.out.println("Sum from 35 to 49 is " + sum(35, 49));
Contoh penggunaan method/function tanpa return value public static void cetakBatas() { for (int i=0;i<10;i++) { System.out.print("-"); } System.out.println; public static void main(String[] args) { cetakBatas(); System.out.println("Welcome to Java");
Overloading method/function Overloading method/function memungkinkan untuk mendefinisikan method/function dengan nama yang sama, namun memiliki karakter/penanda yang berbeda Contoh: /** Return the max of two int values */ public static int max(int num1, int num2) { if (num1 > num2) return num1; else return num2; } /** Find the max of two double values */ public static double max(double num1, double num2) { /** Return the max of three double values */ public static double max(double num1, double num2, double num3) { return max(max(num1, num2), num3);
Scope variables: local variables Local Variables: variable yang dibuat & digunakan dalam suatu method
Local variables yang digunakan berulang
Array dasar Seletelah array terbentuk, ukuran array adalah tetap. Untuk mengakses elemen dalam array digunakan index. Syntax deklarasi vairable array: elementType[] arrayRefVar; Contoh deklarasi vairable array: double[] myList;
Membuat array Syntax membuat array: elementType[] arrayRefVar = new elementType[arraySize]; elementType arrayRefVar[] = new elementType[arraySize]; Contoh membuat array: double[] myList = new double[10]; myList[0] = 5.6; myList[1] = 4.5; myList[2] = 3.3; myList[3] = 13.2; myList[4] = 4.0; myList[5] = 34.33; myList[6] = 34.0; myList[7] = 45.45; myList[8] = 99.993; myList[9] = 11123;
Mendapatkan ukuran array Ukuran suatu array didapat dengan memanggil property length. Contoh: myList.length menghasilkan 10
Inisiasi array Dalam pembuatan variable array, array dapat langsung diinisiasi elemen-elemennya. Syntax untuk menginisiasi array elementType[] arrayRefVar = {value0, value1, ..., valuek}; Contoh: double[] myList = {1.9, 2.9, 3.4, 3.5}; Contoh deklarasi yang salah: double[] myList; myList = {1.9, 2.9, 3.4, 3.5};
Memproses array Memproses elemen array lebih mudah menggunakan loop for, karena Setiap elemen dalam array memiliki tipe yang sama. Ukuran array di ketahui sehingga cocok dengan loop for. Contoh: for (int i = 0; i < myList.length; i++) { System.out.print(myList[i] + " "); }
Loop Foreach Foreach digunakan untuk mengakses array tanpa mengunakan index Syntax: for (elementType element: arrayRefVar) { // Process the element } Contoh: double myList[] = {13.5, 10.4, 1.5}; for (double e: myList) { System.out.println(e);
Mencopy array Untuk mengcopy isi suatu array ke array lain, harus dilakukan pencopyan setiap elemen dari array yang akan dicopy. Cara untuk mencopy array di Java Menggunakan loop untuk mengcopy setiap element dari array yang akan dicopy. Menggunakan method/fungsi arraycopy dari java.lang.System. Menggunakan clone
Contoh copy array dengan loop double myList[] = {13.5, 10.4, 1.5}; for (double e: myList) { System.out.println(e); } System.out.println(); // myList1 must be initialized first double myList1[] = new double[myList.length]; for (int i=0;i<myList.length;i++) { myList1[i]=myList[i]; System.out.println(myList1[i]);
Contoh copy dengan fungsi arraycopy double myList[] = {13.5, 10.4, 1.5}; for (double e: myList) { System.out.println(e); } System.out.println(); // myList1 must be initialized first double myList1[] = new double[myList.length]; System.arraycopy(myList, 0, myList1, 0, myList.length); for (double e: myList1) {
Contoh copy dengan clone double myList[] = {13.5, 10.4, 1.5}; for (double e: myList) { System.out.println(e); } double myList1[]; System.out.println(); myList1 = myList.clone(); for (double e: myList1) {
Kesalahan dalam pengcopyan array Array tidak dapat dicopy dengan operator = Contoh copy reference: List1 = List 2;
Passing array ke method/function Saat suatu array di parse ke method/function, reference dari array akan di parse ke method/function tersebut. Java menggunakan pass-by-value untuk memparse tipe data primitive. Java menggunakan pass-by-sharing untuk tipe array. Reference array yang akan di parsing ke method/function
Contoh parsing public class Test { public static void main(String[] args) { int x = 1; // x represents an int value int[] y = new int[10]; // y represents an array of int values m(x, y); // Invoke m with arguments x and y System.out.println("x is " + x); System.out.println("y[0] is " + y[0]); } public static void m(int number, int[] numbers) { number = 1001; // Assign a new value to number numbers[0] = 5555; // Assign a new value to numbers[0]
Returning array dari method Method/function yang mengembalikan (return) array, akan mengembalikan reference dari array tersebut.
Contoh returning array public static void main(String[] args) { int[] list1 = {1, 2, 3, 4, 5, 6}; int[] list2 = reverse(list1); System.out.println("List1"); for (int i:list1) { System.out.print(i); } System.out.println(); System.out.println("List2"); for (int i:list2) { public static int[] reverse(int[] list) { int[] result = new int[list.length]; for (int i = 0, j = result.length - 1; i < list.length; i++, j--) { result[j] = list[i]; return result;
Variable-length argument lists Sejumlah variabel argumen yang sama dapat diparse ke method/function dan akan diperlakukan sebagai array. Contoh: public static void main(String[] args) { printMax(34, 3, 3, 2, 56.5); printMax(new double[]{1, 2, 3}); } public static void printMax(double... numbers) { if (numbers.length == 0) { System.out.println("No argument passed"); return; double result = numbers[0]; for (int i = 1; i < numbers.length; i++) if (numbers[i] > result) result = numbers[i]; System.out.println("The max value is " + result);
Kelas java.util.Arrays Java menyediakan kelas array (java.util.Arrays) untuk mempermudah operasi sorting & searching. Fungsi yang tersedia dari kelas array: Sorting sort() parallelShort() // JDK 8 Searching binarySearch() Comparing equals() Filling fill()
Contoh penggunaan kelas array Sorting double[] numbers = {6.0, 4.4, 1.9, 2.9, 3.4, 3.5}; java.util.Arrays.sort(numbers); // Sort the whole array java.util.Arrays.parallelSort(numbers); // Sort the whole array Searching int[] list = {2, 4, 7, 10, 11, 45, 50, 59, 60, 66, 69, 70, 79}; System.out.println("1. Index is " + java.util.Arrays.binarySearch(list, 11)); System.out.println("2. Index is " + java.util.Arrays.binarySearch(list, 12)); Comparing int[] list1 = {2, 4, 7, 10}; int[] list2 = {2, 4, 7, 10}; int[] list3 = {4, 2, 7, 10}; System.out.println(java.util.Arrays.equals(list1, list2)); // true System.out.println(java.util.Arrays.equals(list2, list3)); // false Filling int[] list2 = {2, 4, 7, 7, 7, 10}; java.util.Arrays.fill(list1, 5); // Fill 5 to the whole array java.util.Arrays.fill(list2, 1, 5, 8); // Fill 8 to a partial array Contoh penggunaan kelas array
Deklarasi pada array 2 dimensi Elemen pada array 2 dimensi diakses melalui baris dan kolom. Syntax untuk mendeklarasi array 2 dimensi: elementType[][] arrayRefVar; elementType arrayRefVar[][]; Contoh: int[][] matrix = new int[5][5];
Assigning elemen pada array 2 dimensi Matrix 4 x 3 int[][] array = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12} };
Ukuran dari array 2 dimensi Array 2 dimensi merupakan kumpulan dari array 1 dimensi. Ukuran dari array adalah jumlah dari elemen dalam array. Untuk mendapatkan jumlah baris dapat digunakan array.length Untuk mendapatkan kolom dapat digunakan array[0].length Contoh: int[][] array = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12} }; System.out.println("array.length "+array.length); // output 4 System.out.println("array[0].length "+array[0].length); // output 3 System.out.println("array[1].length "+array[1].length); // output 3
Array dengan ukuran kolom tidak sama Membuat matrik segitiga Cara lain int[][] triangleArray = new int[5][]; triangleArray[0] = new int[5]; triangleArray[1] = new int[4]; triangleArray[2] = new int[3]; triangleArray[3] = new int[2]; triangleArray[4] = new int[1];
Contoh mengakses array 2 dimensi int[][] array = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12} }; // mengakses baris for (int i = 0; i<array.length; i++) { // mengakses kolom for (int j=0; j<array[i].length;j++) { System.out.println("["+i+","+j+"] = "+array[i][j]); }
Multidemensional array Array di Java dapat memiliki n dimensi. Contoh array 3 dimensi double[][][] scores = new double[6][5][2]; double[][][] scores = { {{7.5, 20.5}, {9.0, 22.5}, {15, 33.5}, {13, 21.5}, {15, 2.5}}, {{4.5, 21.5}, {9.0, 22.5}, {15, 34.5}, {12, 20.5}, {14, 9.5}}, {{6.5, 30.5}, {9.4, 10.5}, {11, 33.5}, {11, 23.5}, {10, 2.5}}, {{6.5, 23.5}, {9.4, 32.5}, {13, 34.5}, {11, 20.5}, {16, 7.5}}, {{8.5, 26.5}, {9.4, 52.5}, {13, 36.5}, {13, 24.5}, {16, 2.5}}, {{9.5, 20.5}, {9.4, 42.5}, {13, 31.5}, {12, 20.5}, {16, 6.5}}};
Review & Latihan W04 Email ke: agung.made@kwikkiangie Subject: W04 no_mahasiswa Contoh: W04 12345678 Dwiyanti Nilai: Pengumpulan sebelum minggu depan 100 Pengumpulan setelah minggu depan 60 Tidak mengumpulkan 0.
Latihan 1 Diketahui suatu array sebagai berikut: int[] list = {10, 11, 45, 50, 59, 60, 66, 69, 70, 79, 2, 4, 7}; Buatlah kode program Java, method/function untuk menshort list tersebut (chapter 7.11) dan tampilkan hasilnya
Latihan 2 Diketahui suatu array sebagai berikut: double[] numbers = {6.0, 4.4, 1.9, 2.9, 3.4, 3.5}; Buatlah kode program Java, gunakan fungsi java.util.Arrays (chapter 7.12) untuk: Sorting Pararel shorting Mencari indek dari elemen dengan nilai 3.5 dengan Binary search Mencari indek dari elemen dengan nilai 4.0 dengan Binary search
Latihan 3 Harian UTS UAS Siswa 1 86 85 84 Siswa 2 83 81 Siswa 3 90 96 Diketahui nilai siswa sebagai berikut: Buatlah kode program Java untuk menghitung dan menampilkan: Nilai akhir dari setiap siswa jika bobot harian adalah 30%, UTS 35% dan UAS 35% Nilai harian terendah dari seluruh siswa Nilai harian tertinggi dari seluruh siswa Nilai harian rata-rata dari seluruh siswa Harian UTS UAS Siswa 1 86 85 84 Siswa 2 83 81 Siswa 3 90 96 100