SAINS KOMPUTER • Tingkatan 4 • Bab 1: Pengaturcaraan
1.6 Struktur Data dan Modular
Atur cara komputer memerlukan struktur data dan kaedah modularisasi untuk memproses sejumlah data yang besar dengan lebih sistematik, efisien, mudah dibaca, diuji dan dikemas kini. Melalui topik ini, murid diperkenalkan kepada struktur tatasusunan (array) satu dimensi bagi menyimpan koleksi elemen dalam ruang memori berindeks serta penggunaan subatur cara (prosedur dan fungsi) bagi membahagikan masalah atur cara yang kompleks kepada modul-modul kecil.
Objektif Pembelajaran
- Menerangkan struktur tatasusunan (array) satu dimensi merangkumi pengisytiharan nilai dan pengumpukan nilai awal.
- Menggunakan subatur cara dan memahami konsep menghantar parameter ke subatur cara serta mengembalikan data.
- Membezakan antara fungsi (function) dan prosedur (procedure) pada subatur cara.
- Menulis atur cara bermodular yang mengandungi struktur tatasusunan.
Apakah itu tatasusunan?
Tatasusunan ialah pemboleh ubah yang membolehkan koleksi beberapa nilai data (elemen) disimpan dalam satu-satu masa. Setiap elemen disimpan dalam ruang memori berindeks yang tersusun secara berjujukan, iaitu sebelah-menyebelah.
Semua elemen dalam sesuatu tatasusunan Java mestilah daripada jenis data yang sama seperti yang diisytiharkan.
Pemboleh ubah mudah lwn tatasusunan
Pemboleh ubah mudah menyimpan hanya satu nilai data pada satu-satu masa dalam satu sel ingatan.
Tatasusunan pula menyimpan banyak elemen yang berkongsi satu nama pemboleh ubah, dengan indeks integer bermula dari 0 hingga \(n-1\), di mana \(n\) ialah saiz tatasusunan.
Pengisytiharan tatasusunan Java
Pengisytiharan boleh dilakukan dalam dua baris: baris pertama mengisytiharkan nama dan jenis data, manakala baris kedua memperuntukkan saiz memori.
Sintaks pengisytiharan dua baris
jenisData [] namaTatasusunan;
namaTatasusunan = new jenisData[saizTatasusunan];
Contoh
int [] senaraiMarkah;
senaraiMarkah = new int[6];
Pengumpukan nilai ke dalam tatasusunan
Satu-persatu mengikut indeks
Nilai diumpuk dengan memanggil nombor indeks, contohnya senaraiMarkah[0] = 34;, senaraiMarkah[1] = 56; sehingga indeks maksimum.
Pengumpukan nilai awal serentak
Nilai awal boleh diumpuk serentak dengan pengisytiharan menggunakan tanda kurung dakap { }. Saiz ditentukan secara automatik mengikut bilangan data.
int [] senaraiMarkah = {34, 56, 78, 89, 56, 95};
Capaian elemen
Elemen dicapai menggunakan sintaks namaTatasusunan[indeks]. Contohnya hariMinggu[0] menghasilkan elemen pertama. Indeks mestilah bernilai integer, bukan rentetan, dan berada dalam batasan 0 hingga saiz tolak 1. Mengakses di luar batasan menghasilkan ralat masa larian (runtime error).
Subatur cara dan modularisasi
Modularisasi memecahkan kod komputer yang panjang dan kompleks kepada beberapa modul atau subatur cara kecil yang mengkhusus kepada tujuan tertentu, seperti menerima input, memproses data atau memaparkan maklumat.
- 1Projek yang kompleks menjadi lebih ringkas.
- 2Lebih mudah digunakan semula (reusable).
- 3Lebih mudah diuji, dinyah pijat (debug) dan dibaiki.
- 4Membolehkan tugasan pengaturcaraan dibahagikan kepada ahli kumpulan berbeza.
- 5Lebih mudah menangani projek komputer.
Struktur subatur cara
Setiap subatur cara mempunyai Pengepala (Header) dan Badan (Body). Pengepala terdiri daripada kata kunci khas static, jenis data pulangan (void atau jenis primitif/objek), nama subatur cara, dan bekas parameter ( ). Badan dikepung oleh kurung dakap { } dan mengandungi arahan logik yang berakhir dengan tanda koma bertindih (;).
Subatur cara main()
public static void main(String[] args){ }
Subatur cara main() ialah modul utama yang wajib wujud dalam setiap aplikasi Java. Ia mengandungi baris awal dan akhir pelaksanaan atur cara.
Parameter dan pengembalian data
Parameter
Parameter membolehkan subatur cara menerima nilai daripada subatur cara pemanggil.
Parameter rasmi dinyatakan pada pengepala subatur cara yang dipanggil, manakala parameter sebenar ialah nilai atau argumen yang dihantar semasa panggilan dibuat. Nilai yang dihantar mesti sepadan dari segi jenis data, bilangan dan urutan susunan.
Mengembalikan data
Data dikembalikan menggunakan kata kunci return di baris akhir badan subatur cara. Jenis data pulangan diisytiharkan pada pengepala, contohnya int, double atau String. Jika tiada data dikembalikan, kata kunci void digunakan.
Perbezaan prosedur dan fungsi
Perbandingan prosedur dan fungsi
| Ciri | Prosedur | Fungsi |
| Jenis pulangan | void | Selain void (int, double, String, tatasusunan, dsb.) |
| Pemulangan data | Tidak memulangkan data | Memulangkan tepat satu nilai data menggunakan return nilai; |
| Cara panggilan | Dipanggil terus sebagai penyataan berdiri sendiri, contohnya cariJumlah(5, 8); | Panggilan mesti disambut, contohnya int jumlah = cariJumlah(5, 8); |
| Kegunaan lazim | Memaparkan output atau proses sekali guna | Hasil proses perlu disimpan atau digunakan semula oleh pemanggil |
Persamaan: kedua-duanya mengembalikan kawalan pelaksanaan kepada subatur cara pemanggil setelah selesai.
Fungsi utiliti Java (kelas Math)
Fungsi utiliti Math yang lazim
| Fungsi | Keterangan |
Math.sqrt(double n) | Memulangkan punca kuasa dua bagi nilai \(n\). |
Math.floor(double n) | Memulangkan integer terdekat yang kurang daripada atau sama dengan \(n\). |
Math.round(double n) | Memulangkan nilai \(n\) dibundarkan kepada integer terdekat. |
Math.max(double m, double n) | Memulangkan nilai terbesar antara \(m\) dan \(n\). |
Math.min(double m, double n) | Memulangkan nilai terkecil antara \(m\) dan \(n\). |
Menulis atur cara bermodular dengan tatasusunan
Pemboleh ubah sejagat diisytiharkan di luar subatur cara tetapi di dalam kelas, dan boleh dikongsi serta dicapai oleh semua subatur cara, contohnya objek Scanner, pemboleh ubah nama dan markah.
Tatasusunan boleh dihantar ke subatur cara dengan kepala subatur cara menerima parameter bertanda []. Contohnya static void paparSenarai(int[] senaraiNombor). Pemprosesan tatasusunan dalam modul lazimnya menggunakan gelung for yang berulang mengikut indeks dari 0 hingga \(n-1\).
Penghantaran tatasusunan secara rujukan
Tatasusunan yang dihantar sebagai parameter dihantar secara rujukan (reference). Pengubahsuaian elemen di dalam subatur cara yang dipanggil akan mengubah nilai elemen dalam subatur cara pemanggil secara langsung, tanpa perlu penyataan return.