03. Tiga blok bangunan
Bab sebelumnya menunjukkan diagram alir dengan aksi, pertanyaan, dan perulangan. Bab ini melihat lebih luas dan memberi ketiga pola itu nama yang sebenarnya. Begitu kamu bisa melihatnya, setiap program di sisa buku ini akan tersusun dari pola-pola itu, dan hanya dari pola-pola itu.
Ya, setiap program. Tidak ada pola keempat. Orang sudah mempelajari ini selama enam puluh tahun dan jawabannya selalu sama: setiap program dibangun dari tiga pola.
Tiga polanya
Namanya:
- Urutan (sequence): kerjakan ini, lalu ini, lalu ini.
- Keputusan (decision): kalau sesuatu benar, kerjakan A; kalau tidak, kerjakan B.
- Pengulangan (repetition): kerjakan sesuatu berulang-ulang sampai suatu kondisi menyuruh berhenti.
Itu seluruh daftarnya. Baca sekali lagi. Sisa bab ini menunjukkan seperti apa masing-masing, dengan contoh sehari-hari.
1. Urutan
Urutan adalah daftar aksi yang berurutan. Diagram alirnya berupa garis lurus ke bawah halaman; setiap kotak terjadi sekali.
Kamu sudah memakai urutan dalam diagram alir sikat gigi di Bab 02.
Ini pola yang paling sederhana dan paling mudah ditulis. Ini juga
satu-satunya pola dalam proyek kode pertama buku ini, Banner Nama ASCII,
yang isinya hanya deretan panjang panggilan
fmt.Println.
Kamu akan menulis ini dalam kode di Bab 7. Urutan dalam Go hanyalah satu baris setelah baris lainnya:
fmt.Println("Masukkan roti ke pemanggang")
fmt.Println("Tekan tuasnya ke bawah")
fmt.Println("Tunggu dua menit")
fmt.Println("Keluarkan rotinya")Itulah diagram alir urutan, dalam bentuk tulisan.
2. Keputusan
Keputusan mengajukan pertanyaan ya/tidak dan menjalankan aksi yang berbeda tergantung jawabannya. Diagram alirnya memakai belah ketupat dengan dua panah yang keluar darinya.
Keputusan membuat program bisa bereaksi. Tanpa keputusan, program berjalan dengan cara yang sama setiap kali, apa pun yang terjadi. Tambahkan satu keputusan, dan program bisa mengambil jalur berbeda di hari yang berbeda.
Kamu sudah memakai keputusan dalam PR mau-menonton-apa dan mau-pakai-baju-apa. Program nyata memakainya untuk segala jenis "kalau". Kalau skor pemain lebih dari 100, beri bonus. Kalau file belum ada, buat file itu. Kalau pengunjung mengosongkan kotak nama, minta lagi.
Kamu akan menulis ini dalam kode di Bab 16. Keputusan dalam Go terlihat seperti ini:
if doorIsLocked {
findTheKey()
unlockIt()
} else {
openIt()
}Bentuknya sama: pertanyaan di atas, dua jalur, bergabung di akhir.
Pertanyaannya tidak diapit tanda kurung, dan kurung kurawal
{ } menandai awal dan akhir setiap jalur.
3. Pengulangan
Pengulangan adalah mengerjakan hal yang sejenis berulang-ulang sampai suatu kondisi menyuruh berhenti. Diagram alirnya memakai panah yang menunjuk kembali ke langkah yang sudah kamu lewati.
Setiap perulangan punya bagian yang sama:
- kondisi awal (hitungan 0),
- pertanyaan (apakah hitungan sudah 10?),
- pekerjaan di setiap putaran (lakukan satu push-up),
- sesuatu yang bergerak menuju berhenti (tambah 1 ke hitungan).
Kalau perulangan tidak punya bagian bergerak menuju berhenti, ia tidak pernah berakhir. Bug ini disebut perulangan tanpa akhir (infinite loop), dan ini bug paling umum dalam program awal. Kalau programmu tampak membeku, kemungkinan kamu menulis satu. (Tekan Ctrl + C di terminal untuk menghentikannya.)
Kamu sudah memakai pengulangan dalam tantangan push-up di Bab 02. Program nyata memakai perulangan untuk menelusuri setiap item dalam daftar, menggambar setiap frame animasi, meminta pengguna mengetik lagi sampai jawabannya valid.
Kamu akan menulis ini dalam kode di Bab 18. Perulangan dalam Go terlihat seperti ini:
for i := 1; i <= 10; i++ {
fmt.Println("Push-up", i)
}Sepuluh baris output dari tiga baris kode. Perulangan adalah cara
program mengerjakan pekerjaan yang terlalu besar untuk ditulis satu per
satu. for adalah satu-satunya kata kunci perulangan di Go;
tidak ada while.
Mencampur ketiganya
Program nyata adalah ketiga pola yang saling bersarang: urutan yang berisi keputusan, keputusan yang berisi perulangan, perulangan yang berisi perulangan lain. Game Tebak Angka dari Bagian 4 punya ketiganya:
- Seluruh program adalah urutan: pilih angka, lalu bermain, lalu umumkan hasilnya.
- Bagian bermain adalah perulangan: minta tebakan sampai ada yang benar.
- Setiap putaran perulangan punya keputusan: apakah tebakannya terlalu tinggi, terlalu rendah, atau benar?
Begitu kamu bisa mengenali ketiga pola itu, kamu bisa membaca program
apa saja dengan bertanya di setiap baris: yang mana ini?
Sebagian besar baris adalah urutan. Baris dengan if adalah
puncak sebuah keputusan. Baris dengan for adalah puncak
sebuah perulangan. Itulah sebagian besar isi pemrograman.
Di atas kertas, buat sketsa diagram alir satu halaman untuk main satu putaran batu, gunting, kertas melawan komputer. Coba pakai setidaknya satu dari setiap pola: urutan langkah untuk menyiapkan permainan, keputusan untuk membandingkan dua pilihan, dan (opsional) perulangan kalau kamu ingin bermain lebih dari satu putaran.
PR
Masih di kertas. Kamu baru menginstal Go di Bagian 2.
Soal 1 — Temukan polanya
Untuk setiap skenario, tuliskan pola mana dari ketiganya yang menjadi pola utama. (Beberapa memakai lebih dari satu; sebutkan yang paling penting.)
- Menghitung kelereng dalam toples.
- Memutuskan apakah kamu mampu membeli game baru.
- Mengikuti resep yang tidak punya pilihan.
- Meminta pengguna memasukkan angka sampai mereka mengetik angka yang valid.
- Mencetak setiap nama dalam daftar kelas.
Soal 2 — Hanya urutan
Gambar diagram alir untuk membuat selembar roti panggang dengan hanya urutan (tanpa belah ketupat, tanpa perulangan). Lima sampai tujuh kotak.
Soal 3 — Urutan dan keputusan
Gambar diagram alir untuk pergi tidur dengan tepat satu keputusan. Pertanyaannya apakah besok sekolah?. Kalau ya, tambahkan satu langkah (pasang alarm). Kalau tidak, lewati. Kedua jalur berakhir di matikan lampu.
Tantangan — Ketiga pola
Gambar diagram alir untuk memberi makan hewan peliharaan. Programnya harus berisi ketiga pola:
- Urutan: isi mangkuk makanan, lalu isi mangkuk air, lalu panggil hewannya.
- Perulangan: terus panggil sampai hewannya datang atau sampai kamu sudah memanggil lima kali (menyerah setelah lima).
- Keputusan: kalau hewannya datang, beri camilan. Kalau tidak, simpan makanannya.
Beri label setiap pola pada diagram alirmu supaya pembaca bisa melihat di mana pola itu dimulai.
Bingung atau sudah selesai? Buka halaman Solusi PR.