Memisahkan logik daripada input dan output bermaksud pengiraan berada dalam fungsi yang menerima nilai melalui parameter dan memulangkan hasil. Atur cara utama ialah satu-satunya tempat yang meminta nilai daripada pengguna dan memaparkan jawapan.
Pelajaran ini menutup modul struktur pengaturcaraan. Ia menggabungkan parameter, nilai yang dipulangkan dan skop dalam satu tabiat yang menjadikan atur cara lebih mudah diuji.
Mengapa memisahkan atur cara begini?
Bandingkan dua cara mengira purata. Dalam cara pertama, pengiraan meminta nombor, menjumlahkannya dan mencetak hasil, semuanya dalam satu blok. Untuk mengujinya, anda perlu menaip nombor setiap kali.
Dalam cara kedua, fungsi hanya mengira. Anda boleh memanggilnya dengan empat set nilai berbeza dalam empat baris, menyemak hasil, dan menggunakannya semula kemudian.
Peraturan berguna: fungsi menerima nilai melalui parameter dan menghantar nilai keluar melalui RETURN. Atur cara utama yang bercakap dengan pengguna.
Contoh berlangkah
Sebuah ujian kelas rekaan mempunyai tiga skor. Tulis atur cara supaya logiknya terasing.
FUNCTION Average(A : INTEGER, B : INTEGER, C : INTEGER) RETURNS REAL
RETURN (A + B + C) / 3
ENDFUNCTION
DECLARE S1 : INTEGER
DECLARE S2 : INTEGER
DECLARE S3 : INTEGER
INPUT S1
INPUT S2
INPUT S3
OUTPUT "Average: ", Average(S1, S2, S3)
Andaikan pengguna memasukkan 70, 65 dan 81. Atur cara utama menghantar S1, S2 dan S3 sebagai argumen.
| Langkah | A | B | C | Nilai |
|---|---|---|---|---|
| Panggil Average(70, 65, 81) | 70 | 65 | 81 | belum ada |
| A + B + C | 70 | 65 | 81 | 216 |
| 216 / 3 | 70 | 65 | 81 | 72 |
| RETURN | 72 |
Outputnya ialah Average: 72. Oleh sebab fungsi tidak mempunyai INPUT atau OUTPUT, anda boleh mengujinya dengan jadual nilai pilihan:
| Panggilan | Pengiraan | Hasil dijangka |
|---|---|---|
| Average(70, 65, 81) | 216 / 3 | 72 |
| Average(50, 60, 70) | 180 / 3 | 60 |
| Average(0, 0, 0) | 0 / 3 | 0 |
| Average(100, 100, 100) | 300 / 3 | 100 |
Setiap baris boleh disemak dengan tangan. Itulah faedahnya: anda menguji logik sekali dan mempercayainya di mana sahaja ia dipanggil.
Kesilapan manakah yang paling kerap berlaku?
Kod yang salah:
FUNCTION Average() RETURNS REAL INPUT A INPUT B INPUT C OUTPUT (A + B + C) / 3 ENDFUNCTION
Fungsi ini mempunyai tiga masalah. Ia meminta input sendiri, jadi anda tidak boleh mengujinya dengan nilai pilihan. Ia mengeluarkan dan bukan memulangkan, jadi pernyataan seperti Result ← Average() tidak menerima apa-apa. Ia juga menggunakan A, B dan C tanpa mengisytiharkannya.
Pembetulannya ialah versi di atas: nilai tiba sebagai parameter, jawapan keluar melalui RETURN, dan atur cara utama mengendalikan INPUT dan OUTPUT.
Pengecualiannya ialah apabila soalan secara langsung menyuruh anda memaparkan sesuatu dalam prosedur. Ikut soalan itu, dan kekalkan tabiat ini untuk semua yang lain.
Semakan kendiri
1. Nyatakan hasil Average(90, 80, 70).
Tunjukkan jawapan
90 + 80 + 70 = 240, dan 240 / 3 = 80.
2. Berikan dua sebab fungsi tidak patut mengandungi INPUT.
Tunjukkan jawapan
Anda tidak boleh mengujinya dengan nilai pilihan tanpa menaipnya setiap kali, dan ia tidak boleh digunakan semula di tempat nilai sudah wujud dalam atur cara. Ia juga lebih sukar dibaca kerana melakukan dua tugas.
3. Bahagian mana dalam atur cara contoh ialah logik dan bahagian mana ialah input dan output?
Tunjukkan jawapan
Fungsi Average ialah logik. Tiga baris INPUT dan baris OUTPUT terakhir ialah input dan output, dan ia kekal dalam atur cara utama.
Ke mana pelajaran ini membawa?
Anda kini telah meliputi set penuh kemahiran struktur dalam modul ini. Gabungkannya dalam set latihan struktur pengaturcaraan, di mana setiap soalan merujuk kembali pelajaran yang diuji. Kotak pasir penaakulan Python yang selamat ialah tempat yang baik untuk mencuba jadual ujian di atas sebagai kod sebenar.
Jika anda mahu guru menyemak kod yang anda tulis dan menunjukkan cara menyusunnya semula, tuisyen Computer Science dalam talian satu dengan satu boleh bermula daripada atur cara anda sendiri.