03. Tiga blok pembangun
Bab sebelumnya memperkenalkan diagram alir dengan aksi, pertanyaan, dan perulangan. Bab ini mundur selangkah dan memberikan nama yang tepat untuk ketiga pola tersebut. Begitu kamu bisa melihatnya, setiap program di sisa buku ini akan tersusun dari mereka, dan hanya mereka.
Ya — setiap program. Tidak ada pola keempat. Para ahli telah mempelajari ini selama enam puluh tahun dan jawabannya selalu sama: setiap program dibangun dari tiga pola.
Tiga pola
Nama-namanya adalah:
- Urutan — lakukan ini, lalu ini, lalu ini.
- Keputusan — jika sesuatu bernilai benar, lakukan A; jika tidak, lakukan B.
- Pengulangan — lakukan sesuatu berulang-ulang sampai sebuah kondisi mengatakan berhenti.
Itu saja daftarnya. Baca ulang. Sisa bab ini menunjukkan seperti apa masing-masing pola, dengan contoh sehari-hari.
1. Urutan
Urutan adalah daftar aksi yang dikerjakan secara berurutan. Diagram alirnya adalah garis lurus ke bawah; setiap kotak dikerjakan satu kali.
Kamu sudah menggunakan urutan di diagram alir sikat-gigi di Bab 02.
Ini adalah pola paling sederhana dan paling mudah ditulis. Ini juga
satu-satunya pola dalam proyek pertama buku ini — ASCII Name Banner —
yang tidak lain hanyalah serangkaian panjang pemanggilan
print.
Kamu akan menulis ini dalam kode di Bab 7. Urutan dalam Lua cukup satu baris setelah baris lainnya:
print("Put bread in toaster")
print("Push the lever down")
print("Wait two minutes")
print("Take the bread out")
Itu secara harfiah adalah diagram alir urutan yang ditulis.
2. Keputusan
Keputusan mengajukan pertanyaan ya/tidak dan menjalankan aksi yang berbeda tergantung jawabannya. Diagram alir menggunakan bentuk berlian dengan dua panah yang keluar darinya.
Keputusanlah yang membuat program bisa bereaksi. Tanpa keputusan, program berjalan dengan cara yang sama setiap saat, tidak peduli apa yang terjadi. Tambahkan satu keputusan dan program bisa mengambil jalur yang berbeda di hari yang berbeda.
Kamu sudah menggunakan keputusan di PR pilih-tontonan dan pilih-pakaian. Program sungguhan menggunakannya untuk setiap jenis "jika". Jika skor pemain lebih dari 100, berikan bonus. Jika file tidak ada, buat file tersebut. Jika sentuhan berasal dari Player, berikan koin.
Kamu akan menulis ini dalam kode di Bab 16. Keputusan dalam Lua terlihat seperti ini:
if door_is_locked then
find_the_key()
unlock_it()
else
open_it()
end
Bentuk yang sama: pertanyaan di atas, dua jalur, bergabung di akhir.
3. Pengulangan
Pengulangan adalah melakukan hal yang sama berulang-ulang sampai sebuah kondisi mengatakan berhenti. Diagram alir menggunakan panah yang menunjuk kembali ke langkah yang sudah kamu lewati.
Setiap perulangan memiliki bagian yang sama:
- sebuah kondisi awal (count bernilai 0),
- sebuah pertanyaan (apakah count sudah 10?),
- pekerjaan yang dilakukan setiap putaran (lakukan satu push-up),
- sesuatu yang mendekati kondisi berhenti (tambahkan 1 ke count).
Jika sebuah perulangan tidak memiliki bagian mendekati kondisi berhenti, perulangan itu tidak akan pernah berakhir. Itu adalah bug yang disebut infinite loop, dan ini adalah bug paling umum dalam program-program awal. Jika programmu tampak membeku, kamu mungkin menulis satu. (Gunakan Ctrl + C di terminal untuk menghentikannya.)
Kamu sudah menggunakan pengulangan dalam tantangan push-up di Bab 02. Program sungguhan menggunakan perulangan untuk melewati setiap item dalam daftar, menggambar setiap frame animasi, menanyakan pengguna kembali sampai mereka mengetik jawaban yang valid.
Kamu akan menulis ini dalam kode di Bab 18. Perulangan dalam Lua terlihat seperti ini:
for i = 1, 10 do
print("Push-up " .. i)
end
Sepuluh baris keluaran dari tiga baris kode. Perulangan adalah cara program mengerjakan pekerjaan yang terlalu besar untuk ditulis satu per satu.
Menggabungkan ketiganya
Program sungguhan adalah ketiga pola yang bersarang di dalam satu sama lain: urutan yang berisi keputusan, keputusan yang berisi perulangan, perulangan yang berisi perulangan lainnya. Permainan Tebak Angka dari Bagian 3 memiliki ketiganya:
- Keseluruhan program adalah sebuah urutan: pilih angka, lalu bermain, lalu umumkan pemenangnya.
- Bagian bermain adalah sebuah perulangan: minta tebakan sampai salah satu benar.
- Setiap putaran perulangan memiliki sebuah keputusan: apakah tebakannya terlalu tinggi, terlalu rendah, atau tepat?
Begitu kamu bisa mengenali tiga pola tersebut, kamu bisa membaca
program apa pun dengan bertanya, di setiap baris, ini pola yang
mana?. Sebagian besar baris adalah urutan. Baris dengan
if adalah awal sebuah keputusan. Baris dengan
while atau for adalah awal sebuah perulangan.
Itulah sebagian besar dari pemrograman.
Di atas kertas, buat sketsa diagram alir satu halaman untuk memainkan satu ronde suit (batu, gunting, kertas) melawan komputer. Coba gunakan setidaknya satu dari setiap pola: sebuah urutan langkah untuk menyiapkan permainan, sebuah keputusan untuk membandingkan dua pilihan, dan (opsional) sebuah perulangan jika kamu ingin bermain lebih dari satu ronde.
PR
Masih menggunakan kertas — ini PR terakhir di atas kertas sebelum kamu menginstal Lua.
Soal 1 — Kenali polanya
Untuk setiap skenario, tuliskan pola mana dari ketiganya yang paling utama. (Beberapa menggunakan lebih dari satu — tuliskan yang paling penting.)
- Menghitung kelereng dalam sebuah toples.
- Memutuskan apakah kamu mampu membeli game baru.
- Mengikuti resep yang tidak memiliki pilihan di dalamnya.
- Meminta pengguna memasukkan angka sampai mereka mengetik yang valid.
- Mencetak setiap nama dalam daftar kelas.
Soal 2 — Urutan saja
Gambar sebuah diagram alir untuk membuat sepotong roti panggang menggunakan hanya urutan (tidak ada berlian, tidak ada perulangan). Lima sampai tujuh kotak.
Soal 3 — Urutan dan keputusan
Gambar sebuah diagram alir untuk pergi tidur dengan tepat satu keputusan. Pertanyaannya adalah apakah ini malam sekolah?. Jika ya, tambahkan langkah ekstra (pasang alarm). Jika tidak, lewati. Kedua jalur berakhir di matikan lampu.
Tantangan — Ketiga pola
Gambar sebuah diagram alir untuk memberi makan hewan peliharaan. Program harus mengandung ketiga pola:
- Urutan: isi mangkuk makanan, lalu isi mangkuk air, lalu panggil hewan peliharaannya.
- Perulangan: terus memanggil sampai hewan peliharaan datang atau sampai kamu sudah memanggil lima kali (menyerah setelah lima kali).
- Keputusan: jika hewan peliharaan datang, berikan camilan. Jika tidak, simpan makanannya.
Beri label setiap pola di diagram alirmu agar pembaca bisa melihat di mana pola itu dimulai.
Buntu atau sudah selesai? Buka halaman solusi PR.