Decision Making Structure
Dalam hampir semua aspek kehidupan, kita dihadapkan dengan pilihan. Mulai dari aktivitas yang dilakukan untuk mengisi waktu luang hingga cita-cita yang ingin dicapai di masa depan, kita harus mampu untuk mengambil keputusan terhadap pilihan apa yang akan kita pilih. Setiap pilihan yang diambil memiliki rangkaian kejadian masing-masing sebagai konsekuensi dari pengambilan keputusan tersebut.
Pengambilan keputusan dalam pemrograman bekerja dengan prinsip yang serupa. Program dapat disusun sedemikian rupa sehingga alurnya dapat dipengaruhi oleh suatu kondisi baik yang merupakan sifat intrinsik dari program itu sendiri maupun yang merupakan dorongan eksternal (seperti masukan dari pengguna atau sistem). Sistem ini merupakan komponen mendasar dalam alur pemrograman mulai dari program yang kondisi-kondisi pengambilan keputusannya diatur secara eksplisit oleh perancang program hingga Artificial Intelligence yang mampu membuat keputusan secara otonom.
Struktur pengambilan keputusan pada pemrograman pada umumnya berbentuk suite if
-else
. Dalam Python, suite ini memiliki kata kunci tambahan sehingga menjadi if
-elif
-else
di mana elif
merupakan singkatan dari else if
. Amati grafik di bawah ini:
Dalam representasi program pengecekan ketersediaan kursi kosong di atas, pertama dilakukan deklarasi variabel kursi_kosong
dengan nilai 1. Untuk memberikan hasil yang sesuai kepada pengguna tentang ketersediaan kursi, program harus membuat keputusan tentang hasil yang akan diberikan kepada pengguna berdasarkan isi dari variabel kursi_kosong
tersebut. Pada program di atas, terjadi percabangan yang bergantung pada pengambilan keputusan apakah variabel kursi_kosong
memiliki nilai lebih dari 0 atau tidak. Apabila kondisi tersebut benar, maka alur program akan menghasilkan "Masih muat". Sebaliknya, apabila kondisi tersebut salah, alur program akan menghasilkan "Penuh". Dalam hal ini, kondisi benar karena 1 > 0, sehingga "Masih muat" akan dihasilkan.
Pengambilan Keputusan dengan Satu Kondisi
Pengambilan keputusan yang bergantung pada satu kondisi dapat dirancang dengan hanya menggunakan if
dan else
. Dalam Python, struktur pengambilan keputusan satu kondisi ini adalah sebagai berikut:
Perhatikan indentasinya!
Program pengecekan ketersediaan kursi kosong yang sebelumnya dibahas dapat diimplementasikan sebagai berikut:
Hasil yang dicetak pada layar adalah sebagai berikut:
Penjelasan:
kursi_kosong > 0
adalah operasi pembanding (dibahas pada subbab 1C) yang akan membandingkan isi dari variabelkursi_kosong
dengan0
dan menghasilkan sebuah nilai Boolean sesuai hasil evaluasi operasi tersebut (dalam hal ini True).- Kondisi True akan membuat blok yang ada di dalam
if
untuk berjalan dan yang ada di dalamelse
untuk tidak berjalan sehingga "Masih muat" tercetak. print("Selesai")
tidak termasuk blok manapun sehingga tetap dicetak, apapun kondisinya.
Masing-masing dari if
dan else
memiliki blok program yang ditandai dengan titik dua dan diikuti oleh indentasi satu tingkat (umumnya ekuivalen dengan 4x spasi). Blok program tersebut mengikuti kondisi sebagai berikut:
- Blok program yang ada di dalam
if
akan dijalankan jika dan hanya jika kondisi yang diberikan (operasi pembanding) dievaluasi sebagai True. - Blok program yang ada di dalam
else
akan dijalankan jika dan hanya jika kondisi yang diberikan (operasi pembanding) padaif
dievaluasi sebagai False.
Penggunaan Boolean dalam Struktur Percabangan:
Jika kamu sudah memiliki suatu variabel yang berisi sebuah nilai Boolean, program dapat disusun seperti berikut ini dengan memanfaatkan syarat berjalannya masing-masing blok:
status = Trueif status:print("OK")else:print("Not OK")
Cobalah untuk mencari hasil dari masing-masing program berikut ini!
Pengambilan Keputusan dengan Kondisi Majemuk
Terkadang perbedaan dalam kehidupan itu tidak semudah perbedaan hitam dan putih. Dengan gagalnya suatu kondisi untuk diasosiasikan dengan sebuah blok if
belum tentu berarti semuanya dapat digeneralisasi menjadi sebuah blok else
. Seringkali, ada kondisi lain yang harus diperiksa dan dijadikan pertimbangan dalam mengambil keputusan. Amati grafik berikut ini:
Penjelasan:
- Program membuat sebuah variabel
kepadatan_krl
dengan nilai 1.2 (dalam konteks ini, 120%). - Program menghadapi percabangan pertama di mana jika
kepadatan_krl
memiliki nilai kurang dari atau sama dengan 1.0 (dalam konteks ini, 100%), maka keluarannya adalah "Santuy". - Jika nilai
kepadatan_krl
lebih dari 1.0 (kondisi dievaluasi sebagai False), program akan menemui percabangan kedua di mana jikakepadatan_krl
memiliki nilai kurang dari atau sama dengan 1.5 (dalam konteks ini, 150%), maka keluarannya adalah "Uh oh" (Program akan menempuh jalur ini). - Jika seandainya nilai
kepadatan_krl
masih lebih dari 1.5, program akan menempuh jalur yang menghasilkan keluaran "Pepes tahu".
Rancangan program yang dijelaskan di atas merupakan salah satu contoh struktur percabangan dengan kondisi majemuk. Pada program tersebut, ada dua kondisi yang mengendalikan alur program dan menghasilkan tiga kemungkinan keluaran. Program di atas sebenarnya dapat diimplementasikan dengan menurunkan struktur percabangan dengan satu kondisi seperti di bawah ini:
Hasilnya adalah sebagai berikut:
Namun, struktur percabangan seperti di atas akan menyulitkan penyusunan program, khususnya yang memerlukan kondisi sangat banyak (8, 10, 12, dan lain-lain). Struktur percabangan dapat diibaratkan sebagai ranting di mana pada program di atas, perpecahan terjadi sebanyak dua kali. Pertama, rantingnya terpecah menjadi dua. Kemudian, ranting else
hasil pecahan tadi akan terpecah kembali menjadi dua. Untuk memudahkan dalam struktur program seperti ini, Python menyediakan kata kunci elif
yang merupakan singkatan dari else if
dan dapat digunakan untuk memusatkan pemecahan di awal (secara tertulis) sehingga memudahkan penulisan. Contohnya:
Program ini dan program sebelumnya memiliki perilaku yang sama. Namun, kali ini kamu hanya perlu memberikan indentasi sebanyak satu kali. Dengan menggunakan elif
, percabangan yang dibuat akan menjadi lebih scalable jika misalnya sewaktu-waktunya kamu ingin menambahkan kondisi tambahan. Penambahan tersebut hanya perlu dilakukan dengan menambah satu blok elif
sebelum else
tanpa harus memikirkan jumlah indentasi >1. Secara umum, struktur percabangan seperti ini memiliki rancangan sebagai berikut:
Pentingnya indentasi:
Salin program berikut ini apa adanya ke IDLE dan coba untuk dijalankan. Amati hal yang terjadi!:
sebuah_angka = 70if sebuah_angka < 10:print("Satuan")elif sebuah_angka < 100:print("Puluhan")elif sebuah_angka < 1000:print("Ratusan")Jika program tersebut dijalankan apa adanya, Python akan memberikan sebuah error yang berkaitan dengan format penulisan. Cobalah untuk mengoreksi program di atas sehingga dapat mencetak keluaran yang sesuai.
Carilah hasil dari program berikut ini: