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.
- Namakan tugas. Gunakan nama yang menyatakan apa yang dilakukan, seperti
HireFee. - Senaraikan input. Apa yang mesti diketahui oleh subrutin? Setiap satu menjadi parameter, dengan jenis.
- Tentukan output. Jika pemanggil memerlukan jawapan, tulis FUNCTION dengan
RETURNSdan satu jenis. Jika tugasnya hanya melakukan sesuatu, tulis PROCEDURE. - 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):
| Baris | Hours | Rate | Fee |
|---|---|---|---|
| Panggilan | 6 | 20.00 | belum ditetapkan |
| Fee ← Hours * Rate | 6 | 20.00 | 120.00 |
| IF Hours >= 5 ialah TRUE | 6 | 20.00 | 120.00 × 0.9 = 108.00 |
| RETURN | 6 | 20.00 | 108.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
Hoursdan yang kedua keRate, mengikut kedudukan. Di siniHoursmenjadi 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.