Terus ke kandungan
IGCSE·Tuition
Sains Komputer · Pelajaran

Bina subrutin dengan parameter yang jelas

Anda boleh menulis langkah dalam atur cara utama, tetapi menjadikannya subrutin yang boleh digunakan semula membuat kurungan dan nama terasa mengelirukan.

Dalam halaman ini
  1. Bagaimana saya mereka bentuk subrutin?
  2. Contoh berlangkah
  3. Kesilapan manakah yang paling kerap berlaku?
  4. Semakan kendiri
  5. Ke mana pelajaran ini membawa?

Subrutin (subroutine) ialah blok kod bernama yang melakukan satu tugas, supaya anda boleh menggunakannya banyak kali tanpa menulis semula. Parameter (parameter) ialah input bernama yang diperlukannya, dan fungsi (function) juga memulangkan jawapan.

Pelajaran ini tergolong dalam modul struktur pengaturcaraan. Ia menyusul skop setempat dan global, kerana parameter ialah pilihan yang bersih berbanding mencapai pemboleh ubah global.

Bagaimana saya mereka bentuk subrutin?

Lalui empat keputusan mengikut turutan.

  1. Namakan tugas. Gunakan nama yang menyatakan apa yang dilakukan, seperti HireFee.
  2. Senaraikan input. Apa yang mesti diketahui oleh subrutin? Setiap satu menjadi parameter, dengan jenis.
  3. Tentukan output. Jika pemanggil memerlukan jawapan, tulis FUNCTION dengan RETURNS dan satu jenis. Jika tugasnya hanya melakukan sesuatu, tulis PROCEDURE.
  4. Pastikan badan subrutin berdikari. Gunakan hanya parameter dan pemboleh ubah setempat di dalamnya.

Contoh berlangkah

Sebuah dewan komuniti rekaan mengenakan kadar sejam. Tempahan 5 jam atau lebih mendapat diskaun 10% pada jumlah. Tulis fungsi yang memulangkan yuran.

Input: bilangan jam (INTEGER) dan kadar sejam (REAL). Output: yuran (REAL).

FUNCTION HireFee(Hours : INTEGER, Rate : REAL) RETURNS REAL
    DECLARE Fee : REAL
    Fee ← Hours * Rate
    IF Hours >= 5 THEN
        Fee ← Fee * 0.9
    ENDIF
    RETURN Fee
ENDFUNCTION

OUTPUT HireFee(6, 20.00)
OUTPUT HireFee(3, 20.00)

Jejak panggilan pertama, HireFee(6, 20.00):

BarisHoursRateFee
Panggilan620.00belum ditetapkan
Fee ← Hours * Rate620.00120.00
IF Hours >= 5 ialah TRUE620.00120.00 × 0.9 = 108.00
RETURN620.00108.00 dipulangkan

Panggilan kedua mempunyai Hours = 3, jadi syaratnya FALSE dan fungsi memulangkan 3 × 20.00 = 60.00. Dua output ialah 108.00 dan 60.00.

Fungsi yang sama dalam Python, sebagai perbandingan:

def hire_fee(hours, rate):
    fee = hours * rate
    if hours >= 5:
        fee = fee * 0.9
    return fee

Kesilapan manakah yang paling kerap berlaku?

Jawapan salah: memanggil HireFee(25, 4) apabila tempahan ialah 4 jam pada RM25.

Argumen pertama pergi ke Hours dan yang kedua ke Rate, mengikut kedudukan. Di sini Hours menjadi 25, jadi diskaun dikenakan dan fungsi memulangkan 25 × 4 × 0.9 = 90, bukan 4 × 25 = 100 yang betul.

Tiada apa yang ranap, sebab itu kesilapan ini sukar dikesan. Panggilan yang betul ialah HireFee(4, 25.00), yang memberi 100.00. Apabila menulis panggilan, semak setiap argumen dengan parameternya mengikut turutan.

Kesilapan kedua ialah meletakkan INPUT atau OUTPUT di dalam fungsi yang sepatutnya hanya mengira. Itu dibincangkan dalam memisahkan logik daripada input dan output.

Semakan kendiri

1. Dalam HireFee(Hours : INTEGER, Rate : REAL), yang manakah parameter, dan apakah argumen dalam HireFee(8, 15.00)?

Tunjukkan jawapan

Parameter: Hours dan Rate. Argumen: 8 dan 15.00.

2. Nyatakan nilai yang dipulangkan oleh HireFee(8, 15.00).

Tunjukkan jawapan

8 × 15.00 = 120.00. Hours ialah 8, iaitu sekurang-kurangnya 5, jadi diskaun dikenakan: 120.00 × 0.9 = 108.00.

3. Tulis prosedur Greet yang menerima parameter STRING Name dan mengeluarkan “Hello, ” diikuti nama. Tunjukkan panggilan bagi nama rekaan Aina.

Tunjukkan jawapan
PROCEDURE Greet(Name : STRING)
    OUTPUT "Hello, " & Name
ENDPROCEDURE

CALL Greet("Aina")

Outputnya ialah Hello, Aina. Ia prosedur kerana tiada apa yang perlu dipulangkan.

Ke mana pelajaran ini membawa?

Fungsi menyerahkan jawapannya dengan RETURN. Untuk mengikuti dengan tepat nilai mana yang dipulangkan dan bila, teruskan ke menjejak nilai yang dipulangkan. Anda boleh menjalankan HireFee dalam kotak pasir penaakulan Python yang selamat dan menjejak langkahnya dalam pelatih jejak pseudokod terhad.

Jika menentukan senarai parameter ialah tempat anda tersekat, tuisyen Computer Science dalam talian satu dengan satu kami bekerja berdasarkan tugasan yang diberi kepada anda.

Soalan lazim

Apakah beza parameter dengan argumen?

Parameter ialah pemboleh ubah bernama dalam takrifan subrutin, seperti Hours. Argumen ialah nilai sebenar yang anda hantar semasa memanggilnya, seperti 6. Argumen dipadankan dengan parameter mengikut kedudukan, jadi susunan nilai penting.

Apakah beza prosedur dengan fungsi?

Fungsi memulangkan nilai yang boleh digunakan oleh kod pemanggil, contohnya dalam penugasan. Prosedur melaksanakan tugas dan tidak memulangkan nilai. Pilih fungsi apabila pemanggil memerlukan jawapan, dan prosedur apabila tugasnya hanya melakukan sesuatu, seperti memaparkan satu baris.

Adakah parameter mesti dinamakan sama dengan pemboleh ubah dalam atur cara utama?

Tidak. Namanya bebas. Hours dalam subrutin boleh menerima nilai pemboleh ubah atur cara utama bernama Time. Nama parameter yang jelas dan bermakna menjadikan subrutin lebih mudah dibaca. Semak cara sukatan tahun peperiksaan anda menulis pengepala subrutin.

Dikemas kini:

Langkah seterusnya

Jika anda boleh menulis logik tetapi tersekat menentukan apa yang masuk dalam kurungan, guru satu dengan satu boleh meneliti kod anda sendiri dan bertanya apa yang diperlukan setiap subrutin, satu parameter pada satu masa.

Kelas percubaan berbayar satu jam pada kadar guru yang disahkan, bermula RM80. Yuran lain, jadual dan susunan seterusnya disahkan terus bersama guru selepas kelas percubaan.

Tuisyen diatur bersama ibu bapa atau penjaga. Hantar halaman ini kepada mereka melalui WhatsApp supaya mereka boleh bertanya bagi pihak anda.

Ibu bapa atau penjaga? Tanya di sini

9,000+ pelajar telah dibantu melalui perkhidmatan kami