02. Menyelesaikan masalah di atas kertas dulu
Kebanyakan orang langsung loncat ke keyboard. Mereka mengetik sesuatu, menghapusnya, mengetik hal lain, macet, frustrasi, lalu menyimpulkan bahwa pemrograman itu susah. Mereka benar — memang susah — tapi yang susahnya bukan bagian mengetiknya. Yang susah adalah berpikir-nya.
Kabar baiknya: berpikir bisa dilakukan di atas kertas, di mana tidak ada yang bisa salah. Menghapus coretan pensil tidak butuh biaya apa-apa; memperbaiki program yang sudah salah jalan bisa makan waktu berjam-jam. Bab ini memperkenalkan kamu pada sebuah bahasa gambar sederhana yang disebut diagram alir — untuk membuat sketsa program sebelum kamu mulai menulisnya.
Kenapa repot-repot pakai kertas?
Tiga alasan:
- Ganti pikiran itu gratis. Coret satu kotak, gambar yang baru. Di komputer, perubahan itu bisa butuh sepuluh menit re-typing.
- Kamu melihat keseluruhan gambaran sekaligus. Program di layar bisa di-scroll — kamu tidak bisa melihat baris 1 dan baris 20 sekaligus. Diagram alir muat di satu halaman.
- Kamu berpikir lebih pelan. Kedengarannya jelek, tapi justru itu yang membantu. Kebanyakan bug muncul karena kita melewati bagian yang belum benar-benar dipikirkan. Pensil lebih lambat dari mengetik, dan itu memaksamu untuk sadar ketika kamu belum tahu apa yang harus terjadi selanjutnya.
Programmer profesional tidak selalu menggunakan diagram alir, tapi setiap programmer punya cara tersendiri untuk memperlambat diri sebelum mulai mengetik. Untuk program-program pertamamu, kertas adalah alat yang tepat.
Empat bentuk dalam diagram alir
Buku ini menggunakan sekumpulan bentuk yang kecil. Buku teks lain punya lebih banyak; kamu tidak perlu semuanya.
| Bentuk | Arti |
|---|---|
| Oval berlengkung | Awal atau akhir program. |
| Persegi panjang | Sebuah aksi — sesuatu terjadi. |
| Belah ketupat | Sebuah pertanyaan dengan jawaban ya/tidak. |
| Panah | Apa yang terjadi selanjutnya. Ikuti panahnya. |
Di layar, keempat bentuk itu terlihat seperti ini — start/end oval berlengkung, aksi persegi panjang, pertanyaan belah ketupat, dan panah yang menghubungkannya:
Di atas kertas, kamu akan menggambar oval, persegi panjang, dan belah ketupat yang sama dengan tangan. Keduanya sama-sama oke.
Contoh langsung: membuat sandwich
Diagram alir untuk "membuat sandwich selai kacang dan selai buah":
Baca dari atas ke bawah. Setiap panah berarti lakukan ini sekarang. Tidak ada pertanyaan di sini — setiap langkah terjadi, secara berurutan, setiap kali. Semuanya satu garis lurus dari atas ke bawah halaman.
Membaca diagram alir dengan suara keras
Tes yang bagus adalah membaca diagram alir dengan suara keras sambil mengarahkan jarimu mengikuti panahnya. Untuk diagram alir sandwich:
Mulai. Ambil dua lembar roti. Lalu taruh keduanya rata di atas piring. Lalu oleskan selai kacang di roti 1. Lalu oleskan selai buah di roti 2. Lalu taruh roti 2 di atas roti 1. Selesai.
Kalau kedengarannya wajar saat diucapkan, diagram alirnya kemungkinan sudah benar. Kalau ada yang terasa kurang, kemungkinan memang ada yang kurang.
Diagram alir dengan pertanyaan
Pertanyaan ya/tidak menggunakan belah ketupat. Dua panah keluar
darinya — satu berlabel yes, satu no — menuju
aksi yang berbeda, dan setelahnya dua jalur itu biasanya bergabung
kembali.
Diagram alir untuk "apakah aku perlu bawa payung?":
Sekarang ada dua jalur yang mungkin. Suatu hari program berjalan di sisi kiri, hari lain di sisi kanan. Pertanyaannyalah yang menentukan mana yang dipilih.
Di atas kertas, gambar diagram alir untuk apakah aku perlu pakai jaket? dengan satu belah ketupat. Pertanyaannya adalah "apakah di luar dingin?". Dua hasilnya adalah "pakai jaket" dan "tinggalkan jaket". Keduanya bergabung kembali di "keluar dari pintu".
Diagram alir dengan perulangan
Pola ketiga adalah melakukan hal yang sama berulang kali sampai sesuatu berubah. Dalam diagram alir, itu berupa panah yang menunjuk kembali ke langkah yang sudah kamu lewati sebelumnya.
Diagram alir untuk "cuci piring kotor":
Baca dengan suara keras:
Mulai. Apakah ada piring kotor? Kalau tidak, selesai. Kalau ya, cuci satu piring. Lalu kembali ke atas dan tanya pertanyaannya lagi.
Setiap perulangan punya dua bagian: sebuah pertanyaan (kapan kita berhenti?) dan sebuah aksi (apa yang kita lakukan setiap kali?). Kalau kamu tidak bisa mengucapkan keduanya dengan lantang, berarti belum selesai.
Kapan TIDAK menggunakan diagram alir
Diagram alir adalah alat untuk berpikir, bukan sebuah aturan wajib. Program tiga baris tidak perlu diagram alir. Program dengan sepuluh atau dua puluh langkah biasanya sepadan dengan waktu yang dihabiskan untuk menggambarnya.
Aturan praktis untuk sekarang: kalau kamu tidak bisa membayangkan seluruh program dalam kepalamu sekaligus, gambar diagram alir dulu.
PR
PR dengan kertas, tidak perlu komputer. Sobek halaman dari buku catatan lama kalau perlu.
Soal 1 — Sikat gigi
Gambar diagram alir untuk rutinitas sikat gigi di pagi hari. Gunakan hanya aksi (persegi panjang) — tidak ada pertanyaan, tidak ada perulangan. Lima sampai tujuh langkah sudah pas. Mulai dari ambil sikat gigi dan akhiri dengan kembalikan sikat gigi.
Soal 2 — Pilih tontonan
Gambar diagram alir untuk pilih sesuatu untuk ditonton. Sertakan tepat satu belah ketupat dengan pertanyaan apakah aku sudah pernah menonton episode ini?. Kalau ya, kembali ke awal dan pilih lagi. Kalau tidak, akhiri dengan tekan play.
Soal 3 — Pilih pakaian
Gambar diagram alir untuk tentukan apa yang dipakai hari ini. Sertakan setidaknya dua belah ketupat. Pertanyaan yang disarankan: apakah dingin? dan apakah hujan?. Setiap pertanyaan mengarah ke aksi yang berbeda (atau sepasang aksi). Di akhir, jalur-jalur bergabung kembali dan berakhir dengan pakai dan keluar.
Tantangan — Perulangan dengan penghitung
Gambar diagram alir untuk lakukan sepuluh push-up. Harus menggunakan perulangan — panah yang menunjuk kembali ke langkah sebelumnya — dan berhenti tepat setelah sepuluh kali, tidak sembilan dan tidak sebelas. Petunjuk: kamu akan butuh sebuah angka yang naik satu setiap kali dan sebuah pertanyaan yang mengecek apakah angka itu sudah mencapai sepuluh.
Stuck atau sudah selesai? Buka halaman solusi PR.