SPM KMK 2216 study materials
SPM KMK 2216 study resources

SPM KMK 2216: Input/output, fail dan pengendalian ralat

SPM KMK 2216 ยท Work through your exam, one topic at a time.

All guide sections

Input/output, fail dan pengendalian ralat

Domain Input/output, fail dan pengendalian ralat menguji cara atur cara berkomunikasi dengan pengguna dan dengan storan kekal, serta cara ia bertindak apabila sesuatu berjalan tidak seperti dijangka. Soalan kerap meminta anda memilih mod buka fail yang betul, mengenal pasti jenis ralat, atau menentukan sama ada data hilang selepas satu siri operasi fail.

Input dan output

  • Input biasanya melalui penyataan seperti INPUT atau READ; output melalui PRINT atau WRITE.
  • Sentiasa paparkan gesaan (prompt) sebelum membaca input supaya pengguna tahu apa yang dikehendaki.
  • Pengesahan input (validation) mesti berulang sehingga nilai sah diterima: semak julat, jenis, dan nilai kosong.

Pengendalian fail

  1. Buka fail dengan mod yang betul: baca, tulis, atau tambah.
  2. Proses rekod, biasanya dalam gelung sehingga hujung fail (EOF).
  3. Tutup fail supaya data ditulis dan sumber dilepaskan.

Perbezaan mod adalah kritikal:

  • Mod tulis mencipta fail baharu atau mengosongkan fail sedia ada.
  • Mod tambah menulis selepas kandungan sedia ada tanpa memadamkannya.
  • Mod baca gagal jika fail tidak wujud.

Jenis ralat

  • Ralat sintaks: struktur kod salah; dikesan oleh compiler/penterjemah; atur cara tidak boleh dijalankan langsung.
  • Ralat masa jalan (runtime): pembahagian dengan sifar, fail tidak dijumpai, indeks luar julat; berlaku semasa atur cara berjalan.
  • Ralat logik: atur cara berjalan tanpa henti tetapi output salah; tidak dikesan oleh penterjemah.

Contoh berperingkat

buka fail data.txt untuk baca
bilangan = 0
while bukan EOF
    baca satu baris
    bilangan = bilangan + 1
endwhile
tutup fail

Sebab langkah ini perlu disusun begini: fail mesti dibuka dahulu sebelum baca boleh berfungsi. Jika data.txt tidak wujud, mod baca mencetuskan ralat masa jalan, jadi buka fail perlu dibalut dalam blok try ... catch, atau kewujudan fail disemak dahulu. Pengiraan dibuat sebelum semakan EOF seterusnya supaya baris terakhir tidak terlepas, dan tutup fail mesti dilaksanakan walaupun ralat berlaku, biasanya dalam blok finally.

Perangkap yang menghilangkan markah

  • Membuka fail dengan mod tulis sedangkan data lama perlu dikekalkan โ†’ kandungan lama terpadam.
  • Terlupa menutup fail โ†’ data dalam penimbal tidak ditulis ke cakera.
  • Tidak menyemak sama ada fail berjaya dibuka.
  • Menangkap ralat tetapi tidak berbuat apa-apa, lalu kegagalan tersembunyi.
  • Mengelirukan ralat sintaks (tidak boleh dijalankan) dengan ralat masa jalan (gagal semasa berjalan).