02. Memecahkan masalah di atas kertas terlebih dahulu

Kebanyakan orang langsung loncat ke keyboard. Mereka mengetik sesuatu, menghapusnya, mengetik lagi, buntu, frustrasi, lalu menyimpulkan bahwa pemrograman itu susah. Mereka benar bahwa itu susah, tetapi bagian yang susah bukan mengetiknya. Bagian yang susah adalah berpikir.

Kabar baiknya: berpikir bisa dilakukan di atas kertas, tempat tidak ada yang bisa rusak. Menghapus coretan pensil tidak butuh biaya; program yang berbuat salah butuh berjam-jam untuk diperbaiki. Bab ini menunjukkan bahasa gambar sederhana yang disebut diagram alir (flowchart) untuk membuat sketsa program sebelum kamu menulisnya.

Mengapa repot-repot pakai kertas?

Tiga alasan:

  1. Berubah pikiran itu gratis. Coret satu kotak, gambar yang baru. Di komputer, perubahan itu bisa berarti sepuluh menit mengetik ulang.
  2. Kamu melihat seluruh bentuknya sekaligus. Program di layar harus digulir, jadi kamu tidak bisa melihat baris 1 dan baris 20 bersamaan. Diagram alir muat dalam satu halaman.
  3. Kamu berpikir lebih lambat. Kedengarannya buruk, tetapi itu membantu. Sebagian besar bug berasal dari melewati bagian yang belum kamu pikirkan. Pensil lebih lambat daripada mengetik, sehingga kamu sadar ketika belum tahu apa langkah berikutnya.

Programmer profesional tidak selalu memakai diagram alir, tetapi semuanya punya cara untuk memperlambat diri sebelum mengetik. Untuk program pertamamu, kertas adalah alat yang tepat.

Empat bentuk diagram alir

Buku ini memakai sedikit bentuk saja. Buku teks punya lebih banyak; kamu tidak membutuhkannya.

Bentuk Arti
Oval Awal atau akhir program.
Persegi panjang Aksi: sesuatu terjadi.
Belah ketupat Pertanyaan dengan jawaban ya/tidak.
Panah Apa yang berikutnya. Ikuti panahnya.

Di layar, keempat bentuk itu terlihat seperti ini: awal/akhir berbentuk oval, aksi berbentuk persegi panjang, pertanyaan berbentuk belah ketupat, dan panah yang menghubungkan semuanya:

Awal atau akhir Sebuah aksi Sebuah pertanyaan?

Di kertas kamu menggambar oval, persegi panjang, dan belah ketupat yang sama dengan tangan. Keduanya sama baiknya.

Contoh: membuat sandwich

Diagram alir untuk "membuat sandwich selai kacang dan selai buah":

Mulai Ambil dua lembar roti Letakkan mendatar di piring Oleskan selai kacangdi lembar 1 Oleskan selai buah di lembar 2 Letakkan lembar 2di atas lembar 1 Selesai

Baca dari atas ke bawah. Setiap panah berarti sekarang kerjakan ini. Tidak ada pertanyaan di sini: setiap langkah terjadi, berurutan, setiap kali. Semuanya berupa satu garis lurus ke bawah halaman.

Membaca diagram alir dengan suara keras

Cara menguji yang bagus adalah membaca diagram alir dengan suara keras sambil menelusurkan jari di sepanjang panah. Untuk diagram alir sandwich:

Mulai. Ambil dua lembar roti. Lalu letakkan mendatar di piring. Lalu oleskan selai kacang di lembar 1. Lalu oleskan selai buah di lembar 2. Lalu letakkan lembar 2 di atas lembar 1. Selesai.

Kalau terdengar wajar saat dibaca, diagram alirnya mungkin sudah benar. Kalau terdengar ada yang kurang, kemungkinan memang ada yang kurang.

Diagram alir dengan pertanyaan

Pertanyaan ya/tidak memakai belah ketupat. Dua panah keluar darinya, satu berlabel ya dan satu berlabel tidak, menuju aksi yang berbeda. Setelah itu, kedua jalur biasanya bergabung kembali.

Diagram alir untuk "perlukah aku membawa payung?":

ya tidak Mulai Apakah hujan? Ambil payung Tinggalkan payung Jalan ke sekolah

Sekarang ada dua jalur yang mungkin. Suatu hari program menjalankan sisi kiri, hari lain sisi kanan. Pertanyaan itulah yang menentukan.

Di atas kertas, gambar diagram alir untuk perlukah aku memakai jaket? dengan satu belah ketupat. Pertanyaannya "apakah di luar dingin?". Dua hasilnya adalah "pakai jaket" dan "tinggalkan jaket". Keduanya bergabung kembali di "keluar pintu".

Diagram alir dengan perulangan

Pola ketiga adalah melakukan hal yang sama berulang-ulang sampai sesuatu berubah. Di diagram alir, itu berupa panah yang menunjuk kembali ke langkah yang sudah kamu lewati. Bentuk ini disebut perulangan (loop).

Diagram alir untuk "mencuci piring kotor":

tidak ya Mulai Masih ada piring kotor? Selesai Cuci satu piring

Baca dengan suara keras:

Mulai. Masih ada piring kotor? Kalau tidak, selesai. Kalau ya, cuci satu piring. Lalu kembali ke atas dan tanyakan lagi.

Setiap perulangan punya dua bagian: pertanyaan (kapan kita berhenti?) dan aksi (apa yang kita kerjakan setiap kali?). Kalau kamu tidak bisa mengucapkan keduanya, perulangan itu belum selesai dirancang.

Kapan TIDAK memakai diagram alir

Diagram alir adalah alat untuk berpikir, bukan aturan. Program tiga baris tidak membutuhkannya. Program dengan sepuluh atau dua puluh langkah biasanya sepadan dengan waktu untuk menggambarnya.

Aturan yang bagus untuk sekarang: kalau kamu tidak bisa membayangkan seluruh program di kepalamu sekaligus, gambar diagram alir dulu.

PR

PR di atas kertas, tidak perlu komputer. Sobek saja halaman dari buku catatan lama kalau perlu.

Soal 1 — Sikat gigi

Gambar diagram alir untuk rutinitas sikat gigi pagi. Pakai hanya aksi (persegi panjang), tanpa pertanyaan dan tanpa perulangan. Lima sampai tujuh langkah sudah pas. Mulai dari ambil sikat gigi dan akhiri dengan kembalikan sikat gigi.

Soal 2 — Mau menonton apa

Gambar diagram alir untuk memilih tontonan. Sertakan tepat satu belah ketupat dengan pertanyaan apakah aku sudah pernah menonton episode ini?. Kalau ya, kembali dan pilih lagi. Kalau tidak, akhiri dengan tekan putar.

Soal 3 — Mau pakai baju apa

Gambar diagram alir untuk memutuskan baju hari ini. Sertakan setidaknya dua belah ketupat. Pertanyaan yang disarankan: apakah dingin? dan apakah hujan?. Setiap pertanyaan menuju aksi yang berbeda (atau sepasang aksi). Di akhir, jalur-jalur itu bergabung kembali dan berakhir dengan pakai dan berangkat.

Tantangan — Perulangan dengan penghitung

Gambar diagram alir untuk melakukan sepuluh push-up. Harus ada perulangan, yaitu panah yang menunjuk kembali ke langkah sebelumnya, dan harus berhenti setelah tepat sepuluh, bukan sembilan dan bukan sebelas. Petunjuk: kamu butuh angka yang naik satu setiap kali dan pertanyaan yang memeriksa apakah angka itu sudah mencapai sepuluh.

Bingung atau sudah selesai? Buka halaman Solusi PR.