02. Menyelesaikan masalah di atas kertas terlebih dahulu
Kebanyakan orang langsung loncat ke keyboard. Mereka mengetik sesuatu, menghapusnya, mengetik sesuatu lagi, mentok, frustrasi, dan memutuskan bahwa pemrograman itu susah. Mereka benar bahwa itu memang susah — tapi bagian yang susah bukan mengetiknya. Melainkan berpikir.
Kabar baiknya: berpikir bisa dilakukan di atas kertas, di mana tidak ada yang bisa salah. Sebuah pensil tidak butuh biaya apa pun untuk dihapus; program yang melakukan hal yang salah butuh berjam-jam untuk diperbaiki. Bab ini menunjukkan bahasa gambar sederhana yang disebut flowchart untuk membuat sketsa program sebelum kamu menulisnya.
Mengapa repot-repot pakai kertas?
Tiga alasan:
- Mengubah pikiran itu gratis. Coret sebuah kotak, gambar yang baru. Di komputer, perubahan itu mungkin membutuhkan sepuluh menit pengetikan ulang.
- Kamu melihat keseluruhan bentuk sekaligus. Program di layar bisa di-scroll — kamu tidak bisa melihat baris 1 dan 20 bersamaan. Flowchart muat di satu halaman.
- Kamu berpikir lebih lambat. Kedengarannya buruk, tapi itu membantu. Sebagian besar bug berasal dari melewati bagian yang belum kamu pikirkan. Pensil lebih lambat dari mengetik, yang memaksamu memperhatikan ketika kamu tidak tahu apa yang harus datang berikutnya.
Programmer profesional tidak selalu menggunakan flowchart, tapi setiap orang punya cara untuk memperlambat diri sebelum mengetik. Untuk program pertamamu, kertas adalah alat yang tepat.
Empat bentuk flowchart
Buku ini menggunakan sekumpulan bentuk yang sangat kecil. Buku teks punya lebih banyak; kamu tidak membutuhkannya.
| Bentuk | Arti |
|---|---|
| Oval bulat | Awal atau akhir program. |
| Persegi panjang | Sebuah aksi — sesuatu terjadi. |
| Berlian | Sebuah pertanyaan dengan jawaban ya/tidak. |
| Panah | Apa yang datang berikutnya. Ikuti panahnya. |
Di layar, keempat bentuk terlihat seperti ini — awal/akhir oval bulat, sebuah aksi persegi panjang, sebuah pertanyaan berlian, dan panah yang menghubungkan mereka:
Di kertas kamu akan menggambar oval, persegi panjang, dan berlian yang sama dengan tangan. Keduanya boleh.
Contoh yang dikerjakan: membuat sandwich
Sebuah flowchart untuk "membuat sandwich selai kacang dan selai buah":
Baca dari atas ke bawah. Setiap panah berarti sekarang lakukan ini. Tidak ada pertanyaan di sini — setiap langkah terjadi, berurutan, setiap saat. Keseluruhan hal ini adalah satu garis lurus ke bawah halaman.
Membaca flowchart dengan keras
Tes yang bagus adalah membaca flowchart dengan keras, menelusuri jarimu di sepanjang panah. Untuk flowchart sandwich:
Mulai. Ambil dua lembar roti. Lalu letakkan datar di atas piring. Lalu oleskan selai kacang di atas irisan 1. Lalu oleskan selai di atas irisan 2. Lalu letakkan irisan 2 di atas irisan 1. Selesai.
Jika terdengar alami saat dibaca keras, flowchart-nya mungkin sudah benar. Jika terdengar seperti ada yang hilang, kemungkinan memang ada yang hilang.
Flowchart dengan pertanyaan
Pertanyaan ya/tidak menggunakan berlian. Dua panah keluar darinya —
satu berlabel yes, satu no — mengarah ke aksi
yang berbeda, dan setelahnya kedua jalur biasanya bergabung kembali.
Sebuah flowchart untuk "haruskah saya membawa payung?":
Sekarang ada dua jalur yang mungkin. Suatu hari program menjalankan sisi kiri, hari lain sisi kanan. Pertanyaannya yang menentukan mana.
Di atas kertas, gambar flowchart untuk haruskah saya memakai jas? dengan satu berlian. Pertanyaannya adalah "apakah dingin di luar?". Dua hasilnya adalah "kenakan jas" dan "tinggalkan jas". Keduanya bergabung kembali di "berjalan keluar pintu".
Flowchart dengan loop
Pola ketiga adalah melakukan hal yang sama berulang-ulang sampai sesuatu berubah. Dalam flowchart, itu adalah panah yang menunjuk kembali ke langkah yang sudah kamu lewati.
Sebuah flowchart untuk "cuci piring kotor":
Baca dengan keras:
Mulai. Apakah ada piring kotor? Jika tidak, selesai. Jika ya, cuci satu piring. Lalu kembali ke atas dan tanyakan pertanyaannya lagi.
Setiap loop punya dua bagian: sebuah pertanyaan (kapan kita berhenti?) dan sebuah aksi (apa yang kita lakukan setiap kali?). Jika kamu tidak bisa mengucapkan keduanya dengan keras, itu belum selesai.
Kapan TIDAK menggunakan flowchart
Flowchart adalah alat untuk berpikir, bukan aturan. Program tiga baris tidak membutuhkannya. Program dengan sepuluh atau dua puluh langkah biasanya sebanding dengan waktu yang dibutuhkan untuk menggambarnya.
Aturan bagus untuk sekarang: jika kamu tidak bisa membayangkan seluruh program dalam kepalamu sekaligus, gambar flowchart dulu.
Pekerjaan Rumah
Pekerjaan rumah di atas kertas, tidak perlu komputer. Sobek halaman dari buku catatan lama jika perlu.
Soal 1 — Sikat gigi
Gambar flowchart untuk rutinitas sikat gigi pagi. Gunakan hanya aksi (persegi panjang) — tidak ada pertanyaan, tidak ada loop. Lima hingga tujuh langkah sudah tepat. Mulai dari ambil sikat gigi dan akhiri dengan kembalikan sikat gigi.
Soal 2 — Apa yang akan ditonton
Gambar flowchart untuk pilih sesuatu untuk ditonton. Sertakan tepat satu berlian dengan pertanyaan sudahkah saya menonton episode ini sebelumnya?. Jika ya, loop kembali dan pilih lagi. Jika tidak, akhiri dengan tekan play.
Soal 3 — Apa yang akan dipakai
Gambar flowchart untuk putuskan apa yang akan dipakai hari ini. Sertakan setidaknya dua berlian. 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 kenakan dan pergi.
Tantangan — Loop dengan penghitung
Gambar flowchart untuk lakukan sepuluh push-up. Harus menggunakan loop — sebuah panah yang menunjuk kembali ke langkah sebelumnya — dan berhenti setelah tepat sepuluh, bukan sembilan dan bukan sebelas. Petunjuk: kamu akan membutuhkan angka yang naik satu setiap kali dan pertanyaan yang memeriksa apakah sudah mencapai sepuluh.
Bingung atau sudah selesai? Buka halaman solusi pekerjaan rumah.