Sabs UTDocs
Msim4203

MSIM4203 - Modul 9

Ringkasan materi Module 9 untuk persiapan UAS MSIM4203

Praktikum 9: Array, Method, Penanganan Kesalahan, dan Algoritma Sorting

Modul ini membahas topik-topik penting dalam pemrograman Java, yaitu Array, Method, penanganan Eksepsi, dan berbagai algoritma sorting. Mahasiswa diharapkan dapat memahami dan mempraktikkan konsep-konsep ini.

A. Array

Array adalah kumpulan data yang memiliki tipe data yang sama. Setiap data pada array memiliki indeks, yang dimulai dari 0.

Karakteristik Array di Java:

  • Dialokasikan secara dinamis.
  • Merupakan objek, sehingga jumlah anggotanya dapat diketahui.
  • Variabel array dideklarasikan dengan menyebutkan nama array setelah tipe data.
  • Indeks array dimulai dari 0.
  • Dapat dibuat statis, variabel lokal, atau menjadi parameter pada sebuah method.

1. Array Satu Dimensi

Array satu dimensi menyimpan data secara linear.

Sintaksis Deklarasi:

tipe nama_var_array[];

atau

tipe[] nama_var_array;

Menampilkan Array dengan Gaya Sederhana (Enhanced For Loop)

Java menyediakan cara yang lebih sederhana untuk menampilkan isi array menggunakan enhanced for loop:

int i = 0;
for (int x : arrayInt) {
    System.out.println("Array pada indeks ke-" + i++ + " : " + x);
}

Mengurutkan Array dengan java.util.Arrays

Class java.util.Arrays berisi beberapa method statis untuk manipulasi array, termasuk pengurutan.

import java.util.Arrays; // Import class Arrays

// ...
Arrays.sort(arrayInt); // Mengurutkan arrayInt

Method Arrays.sort() akan mengurutkan array dari nilai terkecil ke terbesar (ascending).

2. Array Multidimensi

Array multidimensi adalah variabel yang menyimpan sekumpulan data bertipe sama dan diakses melalui banyak indeks, biasanya digunakan untuk matriks.

Sintaksis Deklarasi (2D dan 3D):

tipe [][] nama_var_array = new tipe[m][n]; // 2 Dimensi
tipe [][][] nama_var_array = new tipe[m][n][p]; // 3 Dimensi

3. Copy Array (System.arraycopy())

System.arraycopy() adalah method yang digunakan untuk menyalin sebagian atau seluruh array ke lokasi array baru.

System.arraycopy(arraySumber, indeksSumber, arrayTujuan, indeksTujuan, panjang);
  • arraySumber: Array asal.
  • indeksSumber: Indeks awal di arraySumber.
  • arrayTujuan: Array tujuan.
  • indeksTujuan: Indeks awal di arrayTujuan.
  • panjang: Jumlah elemen yang akan disalin.

4. Kloning Array (.clone())

Kloning array dapat dilakukan untuk array satu dimensi maupun multidimensi menggunakan method .clone().

arrayTujuan = arraySumber.clone();

Method ini akan membuat salinan array yang sama persis.

B. Method

Method adalah sekumpulan pernyataan yang dikelompokkan bersama untuk melakukan tugas-tugas tertentu. Dalam Java, method mirip dengan function atau procedure di bahasa pemrograman lain.

1. Membuat dan Memanggil Method

  • Method dapat memiliki parameter dan mengembalikan nilai.
  • Untuk memanggil method, cukup sebutkan nama method dan berikan argumen yang sesuai jika ada parameter.
// Contoh deklarasi method
public static String menentukanAngkaGanjilGenap (int x) {
    int y = x % 2;
    if (y == 1) return "Ganjil";
    else return "Genap";
}

// Contoh pemanggilan method dalam main method
int angka = 11;
System.out.println("Angka " + angka + " adalah " + menentukanAngkaGanjilGenap(angka));

2. Method yang Tidak Mengembalikan Nilai (void)

Method yang tidak mengembalikan nilai ditandai dengan keyword void pada awal deklarasi method.

public static void cariNilaiGanjilGenap(int nilai) {
    nilai = nilai % 2;
    if (nilai == 1) System.out.println("Nilai Ganjil");
    else System.out.println("Nilai Genap");
}

3. Method Overloading

Method overloading adalah kemampuan sebuah kelas untuk memiliki dua atau lebih method dengan nama yang sama, tetapi dibedakan oleh signature method-nya (jumlah dan/atau tipe data parameter). Tipe data nilai balik method tidak termasuk dalam signature.

// Method pertama
public static String tambahData(String datanya) {
    return datanya + " + empat = delapan";
}

// Method kedua (overloaded)
public static int tambahData(int panjang, int lebar) {
    return (panjang + lebar);
}

Kedua method di atas memiliki nama yang sama (tambahData) tetapi signature berbeda (satu parameter String vs. dua parameter int).

C. Penanganan Kesalahan (Eksepsi)

Penanganan kesalahan (try..catch) digunakan untuk mengelola situasi error (exception) yang mungkin terjadi saat program berjalan, sehingga program tidak berhenti secara mendadak.

Sintaksis Dasar try..catch

try {
    // Pernyataan-pernyataan yang mungkin menimbulkan error (exception)
} catch(TipeException VariabelException) {
    // Blok pernyataan yang dijalankan jika terjadi error dari jenis TipeException
    // VariabelException dapat digunakan untuk mendapatkan informasi tentang error
}

Jenis-jenis Blok Penanganan Eksepsi:

1. try..catch

Blok try berisi kode yang diawasi untuk potensi exception. Jika exception terjadi, kontrol akan dialihkan ke blok catch yang relevan.

2. try..catch Bersarang

try..catch dapat ditempatkan di dalam try..catch lainnya. Ini berguna ketika sebuah method yang memiliki try..catch dipanggil dari dalam blok try lainnya. Dalam kasus ini, exception akan ditangani oleh blok catch terdalam yang sesuai terlebih dahulu.

3. try..catch Multi

Java memungkinkan penggunaan beberapa blok catch untuk menangani jenis exception yang berbeda. Urutan blok catch penting; exception akan ditangkap oleh blok catch pertama yang cocok. Sebaiknya tempatkan catch untuk exception yang lebih spesifik terlebih dahulu, diikuti oleh exception yang lebih umum (misalnya Exception e).

Contoh penanganan ArrayIndexOutOfBoundsException dan ArithmeticException:

try {
    // ... kode yang mungkin error
} catch (ArrayIndexOutOfBoundsException e) {
    System.out.println("Eksepsi: ArrayIndexOutOfBoundsException");
    System.out.println("Ada indeks array melampaui batas");
} catch (ArithmeticException e) {
    System.out.println("Eksepsi: ArithmeticException");
    System.out.println("Pembagi tidak boleh = 0");
}

4. try..catch..finally

Blok finally adalah blok kode opsional yang akan selalu dieksekusi, terlepas dari apakah exception terjadi atau tidak, atau apakah exception ditangkap atau tidak. Ini sering digunakan untuk membersihkan sumber daya (misalnya menutup file atau koneksi database).

try {
    // ... kode yang mungkin error
} catch (Exception e) {
    System.out.println("Awas! Ada kesalahan akses alamat memori");
} finally {
    System.out.println("Finally : tetap dikerjakan");
}

Pesan dalam blok finally akan selalu ditampilkan.

D. Review Algoritma Sorting

1. Bubble Sort

Algoritma Bubble Sort adalah algoritma pengurutan data yang secara berulang membandingkan dan menukar elemen-elemen yang berdekatan jika urutannya salah, untuk menempatkan elemen terbesar (atau terkecil) ke posisi akhir pada setiap iterasi.

Prinsip Kerja:

  • Dilakukan perulangan dalam perulangan (nested loop).
  • Loop luar (i) mengulang sebanyak n data.
  • Loop dalam (j) mengulang sebanyak n-1 data.
  • Di dalam loop j, elemen a[j] dibandingkan dengan a[j+1]. Jika a[j] lebih besar dari a[j+1], keduanya ditukar.
for (int i = 0; i < n; i++) { // n adalah jumlah elemen
    for (int j = 0; j < n - 1 - i; j++) { // Optimasi: mengurangi j-loop seiring elemen terbesar sudah di akhir
        if (a[j] > a[j+1]) {
            // Tukar elemen
            int temp = a[j];
            a[j] = a[j+1];
            a[j+1] = temp;
        }
    }
}

2. Selection Sort

Algoritma Selection Sort mengurutkan data dengan menemukan elemen terkecil (atau terbesar) dari bagian yang belum terurut dan menukarnya dengan elemen pada posisi terdepan dari bagian yang belum terurut tersebut.

Prinsip Kerja:

  • Iterasi pertama menemukan elemen terkecil dalam seluruh daftar dan menukarnya dengan elemen pertama.
  • Iterasi kedua menemukan elemen terkecil dari sisa daftar (mulai dari indeks kedua) dan menukarnya dengan elemen kedua, dan seterusnya.
for (int i = 0; i < n - 1; i++) {
    int indeks_minimum = i;
    for (int j = i + 1; j < n; j++) {
        if (a[j] < a[indeks_minimum]) {
            indeks_minimum = j;
        }
    }
    // Tukar elemen a[i] dengan a[indeks_minimum]
    int temp = a[indeks_minimum];
    a[indeks_minimum] = a[i];
    a[i] = temp;
}

3. Insertion Sort

Algoritma Insertion Sort adalah algoritma pengurutan sederhana yang membangun array yang diurutkan satu elemen pada satu waktu. Ini beroperasi dengan mengambil elemen dari array yang belum diurutkan dan memasukkannya ke posisi yang benar di bagian array yang sudah diurutkan.

Prinsip Kerja:

  • Diasumsikan elemen pertama adalah bagian yang sudah terurut.
  • Iterasi dimulai dari elemen kedua. Setiap elemen dibandingkan dengan elemen-elemen di bagian yang sudah terurut dan disisipkan pada posisi yang benar.
for (int i = 1; i < n; i++) {
    int key = a[i]; // Elemen yang akan disisipkan
    int j = i - 1;

    // Pindahkan elemen a[0...i-1] yang lebih besar dari key ke satu posisi di depan posisi saat ini
    while (j >= 0 && a[j] > key) {
        a[j + 1] = a[j];
        j = j - 1;
    }
    a[j + 1] = key; // Sisipkan key pada posisi yang benar
}

Poin Penting

  • Array adalah struktur data untuk menyimpan kumpulan data bertipe sama dengan indeks berbasis 0.
  • Array satu dimensi menyimpan data linear, sedangkan multidimensi untuk data seperti matriks.
  • System.arraycopy() dan method .clone() digunakan untuk menyalin atau menduplikasi isi array.
  • Method adalah blok kode untuk melakukan tugas tertentu, dapat mengembalikan nilai atau tidak (menggunakan void).
  • Method overloading memungkinkan beberapa method dengan nama sama namun parameter berbeda dalam satu kelas.
  • Penanganan eksepsi menggunakan blok try..catch untuk menangani error saat runtime, mencegah program berhenti.
  • Blok finally dalam try..catch..finally akan selalu dieksekusi.
  • Bubble Sort mengurutkan dengan menukar elemen berdekatan berulang kali.
  • Selection Sort mengurutkan dengan mencari elemen terkecil dan menukarnya ke posisi terdepan.
  • Insertion Sort mengurutkan dengan menyisipkan elemen ke posisi yang benar di bagian array yang sudah terurut.

Tes Formatif 1 — Kegiatan Belajar 1

Tes Formatif 1Kegiatan Belajar 1

1.Berikut adalah pernyataan yang benar berkaitan dengan array, KECUALI ......

2.Jika arrayInt dideklarasikan dengan `int[] arrayInt = new int[5];` maka berapa indeks arrayInt paling akhir?

3.Kode program: `import java.util.Arrays;` adalah ......

4.Method `System.arraycopy()` memiliki parameter sebagai berikut: `System.arraycopy(sumber, indeks_sumber, tujuan, indeks_tujuan, panjang);` Jika `char[] arraySumber = { 'S', 'e', 'p', 'e', 'd', 'a', ' ', 'S', 'a', 'n', 't', 'a', 'i' };` dan ingin dicopy hanya sebagian saja yaitu: Santai, maka proses penyalinan adalah ......

5.Kemampuan sebuah class mempunyai 2 atau lebih method dengan nama yang sama dan yang membedakan adalah parameter setiap method adalah ......

0/5 soal dijawab

Tes Formatif 2 — Kegiatan Belajar 2

Tes Formatif 1Kegiatan Belajar 2

1.Berikut adalah pernyataan yang benar berkaitan dengan eksepsi (try...catch), KECUALI ......

2.Kata kunci berikut yang membuat sebuah method yang dibuat tidak akan mengembalikan nilai adalah ......

3.Jika program: `int pembagian = 10/0;` dijalankan, maka akan terjadi error jenis ......

4.Jika program dijalankan dengan blok try..catch..finally, maka pernyataan yang akan dikerjakan terakhir kali adalah ......

5.Eksepsi dalam sebuah program ......

0/5 soal dijawab

Tes Formatif 3 — Kegiatan Belajar 3

Tes Formatif 1Kegiatan Belajar 3

1.Algoritma sorting data yang menempatkan data terbesar ke bagian bawah setiap tahap adalah ......

2.Algoritma sorting data yang sangat sederhana dan dimulai dengan menemukan nilai terkecil dalam kumpulan nilai elemen, kemudian menukarnya dengan elemen pada posisi pertama adalah ......

3.Algoritma sorting data yang membandingkan dua elemen data pertama, mengurutkannya, kemudian dilakukan pengecekan elemen data berikutnya satu per satu dan membandingkan data yang telah diurutkan adalah ......

4.Jika sebuah array diurutkan dari nilai terbesar ke nilai terkecil, maka disebut pengurutan ......

5.Pada algoritma Bubble Sort, untuk mengurutkan `n` elemen di dalam array, maka perulangan luar akan berulang sebanyak ......

0/5 soal dijawab

On this page