gusdya.net Modul & Materi Kuliah
IF25W0305-20261-MA04 Praktikum Pemrograman II Matrikulasi Ganjil 2026/2027

Matrikulasi 04 - Array Matrix dan String

Wanda Gusdya

Pengampu / Penulis Materi

23 Okt 2026 • 5 menit baca • 88 pembaca

CAPAIAN LUARAN PRAKTIKAN

Dalam 170 menit, mahasiswa dapat menelusuri array, mengolah matrix kecil, mencari elemen, dan membedakan kesamaan isi String dari kesamaan referensi. M02–M03 menjadi prasyarat. Bukti: metode pencarian dan ringkasan data yang menangani array kosong. Bekal ini dipakai pada heap, graph, sorting, serta pencocokan string.

TEORI DASAR

Array dan indeks. Array menyimpan deretan elemen bertipe sama dengan panjang tetap setelah dibuat. Indeks sah berada pada 0 sampai length−1. Array kosong memiliki length=0 dan tidak boleh diakses pada indeks 0. Pengulangan dengan i<array.length mengunjungi semua posisi tanpa langkah berlebih. Pencarian linear memeriksa elemen satu per satu dan dapat mengembalikan −1 sebagai penanda tidak ditemukan jika kontraknya demikian.

Salinan dan alias. Pernyataan b=a menyalin nilai referensi, sehingga kedua variabel menunjuk array yang sama. Mengubah b[0] juga terlihat melalui a[0]. Arrays.copyOf membuat array baru dengan isi yang disalin. Untuk array berisi objek, salinan tersebut masih berbagi referensi objek elemen. Pada array dua dimensi, menyalin array luar saja juga belum menyalin seluruh baris. Selalu jelaskan apakah metode mengubah input atau mengembalikan hasil baru.

Matrix dan array dua dimensi. Java mewakili int[][] sebagai array yang elemennya referensi array baris. Karena itu, panjang setiap baris dapat berbeda. Pada matrix persegi panjang, matrix.length adalah banyak baris, sedangkan matrix[r].length adalah panjang baris r. Jangan memakai banyak baris sebagai batas kolom. Graph matrix dan tabel dynamic programming bergantung pada ketepatan pemetaan baris/kolom tersebut.

String dan Unicode. String bersifat immutable: operasi seperti trim atau toLowerCase menghasilkan nilai String dan tidak mengubah objek asli. equals membandingkan isi, sedangkan == pada objek membandingkan nilai referensi. charAt memakai indeks unit UTF-16; satu karakter yang terlihat pengguna dapat terdiri atas lebih dari satu char. Pada latihan awal gunakan data sederhana, tetapi catat bahwa length tidak selalu menghitung karakter yang dipersepsikan pengguna.

Batas operasi dan hasil kosong. Metode minimum pada array kosong tidak dapat mengambil elemen pertama sebagai awal. Pilih kontrak gagal atau hasil opsional, lalu uji. Untuk findFirst, hasil −1 sudah cukup membedakan tidak ada kecocokan dari indeks 0. Nilai null berbeda dari array kosong: null berarti referensi tidak menunjuk array. Latihan ini menolak null secara eksplisit dan menerima array kosong untuk pencarian.

LANGKAH EKSPERIMEN

Tahap dan durasi Aktivitas dan bukti
Diagnostik 10 menit Tentukan indeks sah dan jejak alias
Konsep 25 menit Baca array, matrix, String, dan kontrak kosong
Demonstrasi 20 menit Jalankan pencarian contoh
Latihan terbimbing 40 menit Buat jumlah array dan jumlah per baris
Latihan mandiri 45 menit Tulis salinan dan pencarian nama
Uji dan penjelasan 20 menit Kasus kosong, tidak ada, dan alias
Refleksi 10 menit Jelaskan satu kesalahan indeks
public class M04ArrayString {
    static int findFirst(int[] data, int target) {
        if (data == null) throw new IllegalArgumentException("null");
        for (int i = 0; i < data.length; i++) {
            if (data[i] == target) return i;
        }
        return -1;
    }
    public static void main(String[] args) {
        int[] data = {4, 2, 4};
        System.out.println(findFirst(data, 4));
        System.out.println(findFirst(new int[0], 4));
        String a = new String("Ani");
        System.out.println(a.equals("Ani"));
    }
}

Output contoh adalah 0, −1, dan true pada baris terpisah. Test duplikat memastikan findFirst mengembalikan kemunculan pertama.

  1. Buat jumlah(int[] data) dengan akumulator long. Definisikan hasil array kosong sebagai 0 dan tolak null.
  2. Buat jumlahPerBaris(int[][] matrix). Uji pada {{1,2,3},{4,5}} sehingga hasil {6,9}. Tolak referensi baris null; baris kosong boleh menghasilkan 0.
  3. Pada salinan latihan, jalankan int[] b=a; b[0]=99. Catat akibatnya, lalu ganti dengan Arrays.copyOf dan buktikan input asli tetap.
  4. Buat findName(String[] names,String target) memakai equals, dengan kontrak target tidak null dan nama dalam array tidak null. Gunakan new String untuk mencegah test bergantung pada string literal yang dapat berbagi objek.
  5. Normalisasi salinan nama dengan trim, tetapi pertahankan data sumber. Jelaskan apakah pencarian Anda membedakan huruf besar/kecil.

[GAMBAR PERLU DITAMBAHKAN — MAT04] Diagram a dan b menunjuk array yang sama dibanding dua array hasil copyOf; beri label indeks.

LATIHAN TUGAS EVALUASI KEMAMPUAN

Kasus Hasil harapan
findFirst({4,2,4},4) 0
findFirst({4,2,4},7) −1
findFirst({},4) −1
jumlah({}) 0
jumlahPerBaris({{1,2,3},{4,5}}) {6,9}
findName({new String("Ani")},"Ani") 0

Kasus kritis: tidak mengakses array kosong, panjang baris berbeda tidak menyebabkan indeks salah, dan pencarian String memakai kesamaan isi. Jelaskan mengapa data[0] dan indeks hasil 0 mempunyai makna berbeda.

Cek pemahaman dan kunci. Apakah b=a merupakan deep copy? Tidak; referensinya menunjuk array sama. Apakah semua baris int[][] harus sama panjang? Tidak. Apakah String.trim mengubah objek asli? Tidak; hasil perlu disimpan atau dipakai.

Pengumpulan dan remediasi. Kumpulkan metode, tabel uji, dan diagram alias. Bila masih salah, gunakan array panjang 0,1,2 dan gambar setiap indeks sebelum menambah ukuran.

PUSTAKA

Cosmina, Bab 5 dan 7 untuk tipe data dan penelusuran. Barker, Bab 2, 3, dan 6 untuk dasar Java, referensi, dan koleksi. RPS IF25W0305 untuk penggunaan array dan representasi.