Terus ke kandungan
IGCSE·Tuition
Sains Komputer · Pelajaran

Bina subrutin dengan parameter yang jelas

Anda boleh menulis langkahnya dalam atur cara utama, tetapi menukarnya kepada subrutin membuat kurungan dan nama mengelirukan.

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

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) ialah subrutin yang turut memulangkan jawapan.

Pelajaran ini tergolong dalam modul struktur pengaturcaraan. Ia menyambung skop setempat dan global, kerana parameter lebih kemas daripada mencapai pemboleh ubah global.

Bagaimana saya mereka bentuk subrutin?

Buat empat keputusan ini 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.

Atur cara tidak ranap, jadi 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.

Apa selepas ini?

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 anda tersekat pada senarai parameter, guru dalam tuisyen Computer Science dalam talian satu dengan satu boleh menyemak tugasan anda dan bertanya apa yang diperlukan oleh subrutin itu.

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 memutuskan apa yang masuk dalam kurungan, guru satu dengan satu boleh menyemak kod anda dan bertanya apa yang setiap subrutin perlukan, satu parameter demi satu.

Kelas percubaan berbayar satu jam pada kadar guru yang disahkan, bermula RM80.

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

Ibu bapa: tanya di sini

  • 9,000+ pelajar telah dibantu melalui perkhidmatan kami
  • 9+ tahun membantu pelajar IGCSE