SPM KMK 2216 study materials
SPM KMK 2216 study resources

SPM KMK 2216 cheat sheet

SPM KMK 2216 · Keep the key ideas within reach.

Quick reference

Kod dan Struktur Arahan / Instruction Code and Structure

  • Arahan (statement) ialah satu unit lengkap yang boleh dilaksanakan; ungkapan (expression) pula menghasilkan nilai dan tidak boleh berdiri sendiri sebagai arahan dalam kebanyakan bahasa pengaturcaraan.

  • Struktur jujukan dilaksanakan baris demi baris dari atas ke bawah; struktur pemilihan menggunakan syarat boolean; struktur ulangan mengulang blok selagi syarat dipenuhi atau sebanyak bilangan tertentu.

  • Kod sumber melalui fasa: penyuntingan → prapemprosesan (jika ada) → penterjemahan (kompilasi atau tafsiran) → pemautan (linking) → pelaksanaan. Ralat sintaks dikesan semasa penterjemahan, ralat logik hanya kelihatan semasa pelaksanaan.

  • Komen tidak dilaksanakan oleh mesin: // hingga hujung baris dan /* ... */ merentas baris dalam C/Java; # dalam Python; ' dalam BASIC. Komen digunakan untuk dokumentasi dan penyahpepijatan.

  • Kata kunci (keyword) ialah perkataan simpanan bahasa (if, while, return) yang tidak boleh digunakan sebagai pengecam; pengecam (identifier) menamakan pemboleh ubah, fungsi atau kelas.

  • Pernyataan tugasan (assignment) menilai sebelah kanan dahulu, kemudian menyimpan hasil ke lokasi di sebelah kiri; operator kesamaan perbandingan (==) berbeza daripada operator tugasan (=).

  • Blok kod ditentukan oleh kurungan kuih {} dalam C, Java dan JavaScript, atau oleh inden dalam Python; inden yang tidak konsisten dalam Python menyebabkan IndentationError.

  • Nilai boolean benar/palsu (true/false) dihasilkan oleh operator perbandingan (<, >, <=, >=, ==, !=) dan digabungkan dengan operator logik AND, OR, NOT.

Quick reference

Pemboleh Ubah, Jenis Data dan Operator / Variables, Data Types and Operators

  • Pemboleh ubah ialah nama yang merujuk kepada lokasi memori yang menyimpan nilai; dalam bahasa bertipe statik (C, Java) jenis ditetapkan semasa pengisytiharan, dalam bahasa bertipe dinamik (Python) jenis ditentukan oleh nilai.

  • Jenis data asas lazim: integer (nombor bulat), float/real (perpuluhan), boolean (true/false), char (satu aksara) dan string (jujukan aksara).

  • Keutamaan operator (tinggi ke rendah): kurungan → unari (+, -, !) → darab/bahagi/modulus → tambah/tolak → perbandingan → logik AND → logik OR → tugasan.

  • Pembahagian integer membuang bahagian perpuluhan (7 / 2 = 3 dalam C/Java); modulus % memberi baki (7 % 2 = 1) dan hanya sah untuk integer.

  • Penukaran jenis: penukaran implisit (coercion) berlaku automatik apabila jenis bercampur, contohnya int + float menghasilkan float; penukaran eksplisit (casting) ditulis oleh pengaturcara, contohnya (int)3.9 menghasilkan 3.

  • Pengisytiharan tanpa pemulaan meninggalkan nilai tidak tentu dalam C; dalam Java pemboleh ubah setempat mesti dimulakan sebelum digunakan, manakala medan kelas mendapat nilai lalai (0, false, null).

  • Operator logik menggunakan penilaian litar pintas (short-circuit): dalam A AND B, B tidak dinilai jika A palsu; dalam A OR B, B tidak dinilai jika A benar.

  • Rentetan aksara tidak boleh dibandingkan dengan == dalam Java kerana == membandingkan rujukan objek; gunakan equals() untuk membandingkan kandungan.

Quick reference

Kawalan Aliran: Jujukan, Pemilihan dan Ulangan / Control Flow: Sequence, Selection and Iteration

  • Pemilihan satu hala: if (syarat) { blok } - blok dilaksanakan hanya jika syarat bernilai benar. Pemilihan dua hala menambah else; pemilihan berantai menggunakan else if.

  • switch/case memilih satu cabang berdasarkan nilai pemalar; penyataan break menamatkan switch, tanpanya kawalan jatuh ke case seterusnya (fall-through). case default dilaksanakan jika tiada padanan.

  • Gelung while menyemak syarat sebelum badan gelung (gelung prasyarat) dan mungkin tidak dilaksanakan langsung; gelung do-while menyemak syarat selepas badan gelung, jadi badannya dilaksanakan sekurang-kurangnya sekali.

  • Gelung for sesuai apabila bilangan ulangan diketahui: for (awal; syarat; kenaikan). Ketiga-tiga bahagian boleh kosong, tetapi gelung for(;;) menjadi gelung tak terhingga.

  • break keluar serta-merta daripada gelung terdekat; continue melangkau baki lelaran semasa dan meneruskan dengan lelaran seterusnya. Kedua-duanya tidak menamatkan atur cara.

  • Gelung bersarang: gelung dalam menyelesaikan semua lelarannya bagi setiap satu lelaran gelung luar; jumlah lelaran ialah hasil darab bilangan lelaran kedua-dua gelung.

  • Gelung tak terhingga berlaku apabila syarat sentiasa benar dan pemboleh ubah kawalan tidak dikemas kini di dalam badan gelung.

  • Reka bentuk algoritma menggunakan struktur kawalan: jujukan, pemilihan dan ulangan, yang boleh digabungkan dan disarang untuk menyelesaikan masalah kompleks.

Quick reference

Struktur Data: Tatasusunan dan Senarai / Data Structures: Arrays and Lists

  • Tatasusunan (array) menyimpan elemen jenis sama dalam lokasi memori berturutan; saiznya tetap selepas diperuntukkan dalam C dan Java. Indeks bermula dari 0, jadi elemen terakhir berada pada indeks n-1.

  • Mengakses indeks di luar julat 0 hingga n-1 menyebabkan ralat masa jalan: ArrayIndexOutOfBoundsException dalam Java atau tingkah laku tidak tentu dalam C.

  • Tatasusunan satu dimensi diisytiharkan sebagai int a[5]; tatasusunan dua dimensi sebagai int m[3][4] dengan 3 baris dan 4 lajur; jumlah elemen ialah 3 × 4 = 12.

  • Senarai (list) seperti ArrayList dalam Java atau list dalam Python boleh membesar dan mengecil secara dinamik; operasi lazim termasuk add/append, remove, get dan size/len.

  • Gelung traversal tatasusunan menggunakan indeks 0 hingga panjang-1; panjang diperoleh melalui a.length (Java) atau len(a) (Python).

  • Carian linear memeriksa elemen satu demi satu dengan kerumitan O(n); carian binari memerlukan senarai tersusun dan membahagi julat carian separuh setiap langkah dengan kerumitan O(log n).

  • Isihan gelembung (bubble sort) membandingkan pasangan bersebelahan dan menukar kedudukan jika tidak tersusun; setiap pas menyusun satu elemen di hujung, dengan kerumitan O(n²) dalam kes terburuk.

  • Menyalin tatasusunan dengan tugasan biasa (b = a) menyalin rujukan, bukan kandungan; salinan sebenar memerlukan gelung elemen demi elemen atau kaedah salinan khusus.

Quick reference

Modul, Fungsi dan Prosedur / Modules, Functions and Procedures

  • Fungsi memulangkan satu nilai melalui penyataan return; prosedur melaksanakan tindakan tanpa memulangkan nilai (dalam C ditulis sebagai fungsi dengan jenis pulangan void).

  • Pemanggilan fungsi memindahkan kawalan ke definisi fungsi; selepas return, kawalan kembali ke titik pemanggilan bersama nilai pulangan.

  • Parameter formal ialah pemboleh ubah dalam definisi fungsi; argumen ialah nilai sebenar yang dihantar semasa pemanggilan. Bilangan dan jenis mesti sepadan.

  • Hantaran mengikut nilai (pass by value) menyalin nilai argumen, jadi perubahan dalam fungsi tidak menjejaskan pemboleh ubah pemanggil. Hantaran mengikut rujukan (pass by reference) membolehkan fungsi mengubah pemboleh ubah asal.

  • Pemboleh ubah setempat (local) hanya wujud dalam fungsi dan dimusnahkan selepas fungsi tamat; pemboleh ubah global boleh diakses oleh semua fungsi dan meningkatkan risiko kesan sampingan.

  • Rekursi ialah fungsi yang memanggil dirinya sendiri dan mesti mempunyai kes asas (base case) untuk mengelakkan rekursi tak terhingga dan limpahan tindanan (stack overflow).

  • Kelebihan menggunakan fungsi dan modul: mengelakkan pertindihan kod, memudahkan pengujian, menyembunyikan butiran pelaksanaan (enkapsulasi) dan membolehkan penggunaan semula.

  • Modul atau pustaka (library) mengumpulkan fungsi berkaitan; ia diimport atau disertakan menggunakan arahan seperti import, #include atau require sebelum digunakan.

Quick reference

Input/Output, Fail dan Pengendalian Ralat / Input/Output, Files and Error Handling

  • Input piawai dibaca melalui pembaca seperti scanf (C), Scanner (Java) atau input() (Python); output piawai ditulis melalui printf, System.out.println atau print.

  • Aliran fail mempunyai tiga langkah wajib: buka (open) dengan mod yang betul, baca atau tulis, kemudian tutup (close) untuk melepaskan sumber dan memastikan data disimpan.

  • Mod fail: 'r' membaca fail sedia ada, 'w' mencipta atau menimpa fail, 'a' menambah di hujung fail, 'r+' membaca dan menulis. Membuka fail yang tiada dengan mod 'r' menghasilkan ralat.

  • Ralat dikelaskan sebagai ralat sintaks (dikesan penterjemah), ralat masa jalan (contohnya pembahagian dengan sifar, indeks luar julat) dan ralat logik (atur cara berjalan tetapi hasilnya salah).

  • Blok try-catch mengendalikan pengecualian (exception): kod berisiko diletakkan dalam try, pengendali catch menerima objek pengecualian, dan blok finally sentiasa dilaksanakan sama ada pengecualian berlaku atau tidak.

  • Pengesahan input (validation) menyemak julat, jenis dan format data sebelum diproses; gelung while sering digunakan untuk meminta semula input sehingga sah.

  • Pembahagian dengan sifar integer dalam Java membuang ArithmeticException; dalam C tingkah lakunya tidak tentu. Pembahagian float dengan sifar menghasilkan Infinity atau NaN, bukan pengecualian.

  • Fail teks dibaca baris demi baris sehingga penanda akhir fail (EOF) dikesan; setiap baris perlu ditukar kepada jenis berangka dengan fungsi seperti parseInt atau int() sebelum pengiraan.