SPM KMK 2216 study materials
SPM KMK 2216 study resources

SPM KMK 2216: Modul, fungsi dan prosedur

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

All guide sections

Modul, fungsi dan prosedur

Domain Modul, fungsi dan prosedur menguji cara memecahkan atur cara besar kepada unit kecil yang boleh diguna semula, serta cara data dihantar masuk dan keluar daripada unit tersebut. Soalan lazim meminta anda menentukan nilai pemboleh ubah pemanggil selepas satu modul dipanggil, atau memilih sama ada sesuatu tugas patut ditulis sebagai fungsi atau prosedur.

Sebab modulariti

Atur cara dipecahkan kepada modul supaya lebih mudah dibaca, diuji secara berasingan, digunakan semula dalam atur cara lain, dan dikerjakan serentak oleh beberapa pengaturcara.

Fungsi dan prosedur

  • Fungsi mengembalikan satu nilai melalui return dan boleh digunakan dalam ungkapan, contohnya purata = kira_purata(6, 10).
  • Prosedur melaksanakan tindakan (cetak, kemas kini, tulis fail) tanpa nilai pulangan; dipanggil sebagai penyataan tersendiri.
  • Kedua-duanya mempunyai nama, senarai parameter, dan badan; parameter dipadankan mengikut urutan dan jenis.

Penghantaran parameter

  • By value: salinan nilai dihantar; perubahan dalam modul tidak menjejaskan pemboleh ubah pemanggil.
  • By reference: alamat dihantar; perubahan dalam modul mengubah pemboleh ubah pemanggil.

Skop

Pemboleh ubah lokal hanya wujud dalam modul dan hilang selepas modul tamat. Pemboleh ubah global boleh dibaca di mana-mana, tetapi meningkatkan risiko perubahan tidak dijangka dan patut dielakkan.

Contoh berperingkat

procedure tambah_satu(ref x)
    x = x + 1
endprocedure

n = 5
tambah_satu(n)

Parameter dihantar by reference, jadi perubahan pada x ialah perubahan pada n yang sama: selepas panggilan, n = 6. Jika tajuk prosedur ditulis (x) tanpa ref, penghantaran adalah by value, x menjadi 6 di dalam prosedur tetapi n kekal 5. Perhatikan perbezaan satu perkataan ini menentukan jawapan.

Perangkap yang menghilangkan markah

  • Menganggap print dalam fungsi sama dengan return; cetakan tidak memulangkan nilai.
  • Terlupa bahawa by value tidak mengubah pemboleh ubah pemanggil.
  • Menghantar argumen dalam urutan salah apabila dua parameter mempunyai jenis sama.
  • Pemboleh ubah lokal menutupi (shadow) pemboleh ubah global dengan nama sama.
  • Menggunakan prosedur dalam ungkapan seperti y = prosedur_saya() sedangkan ia tiada nilai pulangan.
  • Rekursi tanpa kes asas → rekursi tak terhingga.