Menjejak nilai yang dipulangkan (returned value) bermaksud mengikut panggilan fungsi baris demi baris sehingga RETURN, merekod apa yang dipegang oleh setiap pemboleh ubah, dan menyatakan nilai yang kembali kepada pemanggil. Soalan peperiksaan memberi fungsi dan satu panggilan, kemudian meminta nilai yang dipulangkan atau output.
Pelajaran ini sebahagian daripada modul struktur pengaturcaraan. Ia menggunakan parameter daripada membina subrutin dan pemboleh ubah setempat daripada skop.
Apakah kaedah menjejak fungsi?
- Salin argumen panggilan ke dalam parameter. Tulis dalam baris pertama.
- Sediakan satu lajur bagi setiap pemboleh ubah. Sertakan parameter, pemboleh ubah setempat dan pembilang gelung.
- Jalankan setiap baris mengikut turutan. Tulis baris baharu setiap kali nilai berubah.
- Berhenti pada RETURN pertama yang dijalankan. Nilai yang dipulangkan ialah apa yang dipegang oleh RETURN itu pada ketika itu.
- Nyatakan apa yang pemanggil lakukan dengannya, seperti mengeluarkannya.
Contoh berlangkah
Jejak atur cara ini dan nyatakan outputnya.
FUNCTION RepeatAdd(A : INTEGER, B : INTEGER) RETURNS INTEGER
DECLARE Result : INTEGER
Result ← 0
FOR I ← 1 TO B
Result ← Result + A
NEXT I
RETURN Result
ENDFUNCTION
OUTPUT RepeatAdd(4, 3)
Panggilan RepeatAdd(4, 3) memberi A = 4 dan B = 3. Gelung berjalan untuk I = 1, 2 dan 3.
| Langkah | A | B | I | Result |
|---|---|---|---|---|
| Panggilan | 4 | 3 | belum ditetapkan | belum ditetapkan |
| Result ← 0 | 4 | 3 | belum ditetapkan | 0 |
| I = 1 | 4 | 3 | 1 | 0 + 4 = 4 |
| I = 2 | 4 | 3 | 2 | 4 + 4 = 8 |
| I = 3 | 4 | 3 | 3 | 8 + 4 = 12 |
| RETURN Result | 12 |
Fungsi memulangkan 12, dan atur cara utama mengeluarkan 12. Fungsi mengulang penambahan sebanyak B kali, jadi ia mengira A × B. Sebagai semakan, 4 × 3 = 12.
Kesilapan manakah yang paling kerap berlaku?
Kod yang salah:
FUNCTION SumTo(N : INTEGER) RETURNS INTEGER DECLARE Total : INTEGER Total ← 0 FOR I ← 1 TO N Total ← Total + I RETURN Total NEXT I ENDFUNCTIONPenulis menjangka
SumTo(4)memulangkan 1 + 2 + 3 + 4 = 10.
RETURN terletak di dalam gelung. Pada pusingan pertama I = 1, Total menjadi 1, dan RETURN menamatkan fungsi serta-merta. Jadi SumTo(4) memulangkan 1.
Pembetulannya ialah memindahkan RETURN selepas NEXT, di luar gelung. Kemudian gelung menyelesaikan keempat-empat pusingan, Total mencapai 1 + 2 + 3 + 4 = 10, dan 10 dipulangkan.
Kesilapan kedua ialah memanggil fungsi dan mengabaikan nilainya. Menulis RepeatAdd(4, 3) pada satu baris sahaja tidak berguna. Simpan nilainya, contohnya Answer ← RepeatAdd(4, 3), atau keluarkannya.
Semakan kendiri
1. Nyatakan nilai yang dipulangkan oleh RepeatAdd(5, 0).
Tunjukkan jawapan
B ialah 0, jadi gelung FOR I ← 1 TO 0 tidak berjalan langsung. Result kekal 0 dan 0 dipulangkan.
2. Nyatakan nilai yang dipulangkan oleh RepeatAdd(3, 4).
Tunjukkan jawapan
Result menjadi 0, kemudian 3, 6, 9, 12 dalam empat pusingan. Ia memulangkan 12.
3. Nyatakan outputnya.
FUNCTION Larger(X : INTEGER, Y : INTEGER) RETURNS INTEGER
IF X > Y THEN
RETURN X
ELSE
RETURN Y
ENDIF
ENDFUNCTION
OUTPUT Larger(7, 12)
Tunjukkan jawapan
X = 7 dan Y = 12. Ujian 7 > 12 ialah FALSE, jadi cabang ELSE berjalan dan memulangkan Y. Outputnya ialah 12.
Ke mana pelajaran ini membawa?
Setelah anda boleh menjejak apa yang dihantar semula oleh fungsi, fikirkan apa yang patut dan tidak patut dilakukan oleh fungsi selain memulangkan nilai. Itulah tajuk memisahkan logik daripada input dan output. Berlatih dengan pelatih jejak pseudokod terhad yang menunjukkan setiap baris jadual, dan bandingkan dengan kotak pasir penaakulan Python yang selamat.
Pelajar yang boleh menjejak tetapi kekurangan masa dalam peperiksaan sering memerlukan rutin, dan guru Computer Science dalam talian satu dengan satu boleh membinanya berdasarkan kertas anda sendiri.