Untuk menerangkan algoritma, nyatakan untuk apa ia, pada apa ia bekerja, apa yang dilakukannya pada setiap langkah dan mengapa. Kod hanyalah satu cara menulisnya. Penerangan berkaitan idea, dan ia mesti masuk akal kepada orang yang tidak dapat melihat kod.
Ini ialah kemahiran penaakulan yang melalui penerangan penyelesaian masalah dan reka bentuk algoritma. Pelajaran terangkan algoritma tanpa bergantung pada bahasa pengaturcaraan membincangkan idea ini secara langsung.
Mengapa ini terasa sukar?
Semasa menulis kod, setiap baris bermakna tetap dan komputer melakukan selebihnya. Semasa menerangkan, anda mesti memilih perkataan sendiri, dan dua perangkap muncul. Satu ialah mengulang kod dalam bahasa biasa, baris demi baris. Satu lagi ialah berkata sesuatu yang kabur seperti “ia menyemak semuanya”.
Kedua-duanya berlaku kerana penerangan tiada kerangka. Kerangka mudah boleh membetulkannya.
Kerangka empat bahagian
- Tujuan: satu ayat tentang apa yang dicari atau dilakukan algoritma.
- Input dan output: apa yang masuk, apa yang keluar.
- Langkah dalam perkataan: dua hingga empat ayat, mengikut urutan, setiap satu menyatakan apa yang berlaku pada data.
- Sebab atau semakan: mengapa ia berfungsi, atau jejak dengan nilai contoh.
Contoh penyelesaian
Algoritma itu mencari markah tertinggi dalam senarai markah. Senarai contoh: 14, 9, 21, 17.
Tujuan. Ia mencari markah terbesar dalam senarai.
Input dan output. Input ialah senarai nombor bulat dengan sekurang-kurangnya satu item. Output ialah nilai terbesar dalam senarai.
Langkah dalam perkataan. Algoritma bermula dengan menganggap markah pertama sebagai yang terbesar setakat ini. Kemudian ia melihat setiap markah yang tinggal satu demi satu. Apabila sesuatu markah lebih besar daripada yang terbesar setakat ini, markah itu menjadi yang terbesar baharu. Selepas markah terakhir, nilai yang disimpan ialah jawapannya.
Jejak dengan senarai contoh.
| Markah yang dilihat | Terbesar setakat ini selepas markah ini |
|---|---|
| 14 (pertama) | 14 |
| 9 | 14 (9 tidak lebih besar) |
| 21 | 21 (21 lebih besar) |
| 17 | 21 (17 tidak lebih besar) |
Outputnya ialah 21.
Sebab. Nilai yang disimpan sentiasa yang terbesar antara markah yang telah dilihat, jadi pada akhirnya ia yang terbesar dalam seluruh senarai.
Lemah berbanding kukuh
Penerangan lemah: “Ada gelung. Ia guna pernyataan if untuk membandingkan. Kemudian ia mencetak pemboleh ubah.”
Ini menamakan ciri kod tetapi tidak menyebut apa-apa tentang markah, dan tidak memberi sebab mengapa jawapannya yang terbesar. Pembaca masih tidak tahu apa yang dicapai algoritma.
Penerangan kukuh: “Ia bermula dengan markah pertama sebagai yang terbesar setakat ini, kemudian menyemak setiap markah lain satu demi satu. Jika sesuatu markah lebih besar, ia menggantikan nilai terbesar yang disimpan. Pada akhirnya nilai yang disimpan ialah markah terbesar, kerana ia dikemas kini setiap kali markah yang lebih besar muncul.”
Ia menyatakan apa yang berlaku pada data, mengikut urutan, dan memberi sebabnya.
Kesilapan yang perlu dielakkan
Kesilapan: menerangkan ciri kod, bukan tingkah laku. Perkataan seperti gelung, pemboleh ubah dan pernyataan if sesuai untuk jawapan kod. Soalan terangkan mahu apa yang berlaku pada data.
Pembetulan: bagi setiap ayat, tanya “apa yang berlaku pada markah di sini?” Jika ayat itu boleh tentang mana-mana atur cara, ia terlalu kabur. Tambah data dan tindakannya.
Cara berlatih
- Ambil algoritma yang telah anda tulis.
- Tutup kod dan tulis kerangka empat bahagian dari ingatan.
- Jejak dengan senarai kecil untuk memastikan perkataan anda benar.
- Tukar ke senarai contoh lain dan semak penerangan masih sah.
Pelatih jejak pseudokod menunjukkan langkah demi langkah pada algoritma asli yang kecil, dan kotak pasir penaakulan Python membolehkan anda menguji idea dengan cepat supaya penerangan menggambarkan sesuatu yang benar-benar berfungsi.
Semakan kendiri
1. Tulis satu ayat tujuan bagi algoritma yang mengira berapa banyak markah dalam senarai yang sekurang-kurangnya 50.
Show answer
"Ia mengira berapa banyak markah dalam senarai yang 50 atau lebih." Jawapan yang baik menamakan data (markah), syarat (sekurang-kurangnya 50) dan hasil (satu kiraan).2. Yang mana langkah yang lebih kukuh: “ia pusing dalam gelung” atau “ia melihat setiap markah satu demi satu dan membandingkannya dengan yang terbesar setakat ini”?
Show answer
Yang kedua. Ia menyatakan apa yang berlaku pada data pada setiap langkah. "Pusing dalam gelung" menamakan ciri kod tanpa menyatakan apa yang dilakukannya.3. Menggunakan senarai contoh 14, 9, 21, 17, apakah nilai terbesar yang disimpan selepas markah ketiga dilihat?
Show answer
21. Markah pertama menetapkannya kepada 14, markah kedua (9) membiarkannya pada 14, dan markah ketiga (21) lebih besar, jadi nilai yang disimpan menjadi 21.Langkah seterusnya
Latih huraikan pembetulan tanpa hanya menunjukkan kod dan hubungkan jejak dengan output akhir. Untuk sisi reka bentuk algoritma, baca jejak satu jujukan dengan jadual keadaan.
Apabila anda bersedia untuk ada orang mendengar penerangan anda dan mengemaskan perkataannya, tuisyen Computer Science dalam talian satu-lawan-satu bermula dengan kelas percubaan berbayar dari RM80.