Chapter 4
PEMILIHAN
Menganalisis kasus dari suatu masalah artinya menentukan kondisi Boolean (bernilai true atau false) dan menentukan aksi yang dilakukan jika kondisi tersebut berlaku. Kondisi Boolean adalah suatu ekspresi relasional yang bernilai true atau false bergantung pada nilai masing-masing operand yang terlihat di dalamnya. Atau Analisis kasus, yang melahirkan instruksi kondisional, adalah elemen primitive pembangun algoritma, yaitu memungkinkan kita untuk membuat teks yang sama namun menghasilkan eksekusi yang berbeda-beda. Mendefinisikan analisis kasus adalah mendefinisikan :
- Kondisi, yang berupa suatu ekspresi yang menghasilkan true atau false
- Aksi yang akan dilaksanakan jika kondisi yang dipasangkan dengan aksi ybs. dipenuhi
Konstruksi dari suatu analisis kasus dapat dimulai dari menentukan semua kondisi yang mungkin (dengan melakukan partisi domain), atau dimulai dari menentukan variasi aksi. Tidak ada rumus yang baku tentang bagaimana memulai menuliskan analisis kasus. Pada contoh-contoh yang diberikan, ada yang berangkat dari kondisi, dan ada yang dimulai dari menentukan aksi. Ada 2 struktur dalam analisis kasus/pemilihan, yakni satu kasus yang mengakibatkan aksi, atau dua kasus komplementer dan analisis kasus yang umum (banyak kasus).
4.1. Satu Kasus
Dalam bahasa Indonesia, if berarti jika dan then berarti maka. Kondisi adalah persyaratan yang dapat bernilai benar atau salah. Aksi hanya akan dilaksanakan jika kondisi bernilai benar. Sebaliknya, jika kondisi bernilai salah, maka aksi tidak akan dilaksankan. Pernyataan ini dapat ditulis dalam struktur umum :
If (Kondisi) Then
Aksi
Endif
Jika kondisi benar, maka aksi dilakukan. Jika kondisi tidak benar, maka tidak terjadi apa-apa (efek neto “kosong”).
Kasus 1. Dibaca sebuah bilangan bulat dari keyboard. Tuliskan algoritma untuk mencetak pesan “bilangan genap” jika bilangan tersebut adalah genap. Bilangan genap adalah bilangan yang habis dibagi 2 (sisa = 0).
Algoritma BilanganGenap
{Mencetak pesan “bilangan genap” jika sebuah bilangan yang dibaca dari keyboard adalah bilangan genap}Deklarasi :Bilangan : Integer Deskripsi : Read (Bilangan) If Bilangan mod 2=0 then Write (‘Bilangan Genap’) EndIf |
4.2. Dua Kasus Komplementer
Kondisi if-then hanya memberikan satu pilihan aksi bila kondisi dipenuhi atau bernilai benar, dan tidak memberi pilihan aksi lain jika kondisi bernilai salah. Berikut adalah kondisi if then else, yang memberi pilihan aksi lain jika kondisi bernilai salah.
If Kondisi then
Aksi 1
Else {not Kondisi}
Aksi 2
EndIf
Else artinya kalau tidak. Jika kondisi bernilai benar, maka aksi 1 akan dikerjakan, tetapi kalau tidak, aksi 2 yang akan dilaksanakan. Hati-hati dalam memakai “else” yang berarti kondisi implisit yang merupakan negasi dari kondisi. Penulisan kondisi “else” secara eksplisit sangat disarankan
Kasus 2. Dibaca dua buah bilangan bulat dari peranti masukan. Tentukan dari kedua bilangan itu bilangan yang terbesar. Mislkan kedua bilangan tersebut adalah A dan B
Jika A > B, bilangan terbesar adalah A
Jika B ≥ A, bilangan terbesar adalah B
Algoritma Maks1
{Menentukan bilangan terbesar dari dua buah bilangan bulat} Deklarasi : A, B : Integer Deskripsi : Read (A,B) If A > B then Write (‘Bilangan terbesar : ‘,A) Else Write (‘Bilangan terbesar : ‘,B) EndIf |
4.3. Banyak Kasus
Apabila pilihan aksi yang dilakukan lebih dari dua buah, maka struktur pemilihan menjadi lebih rumit, dinamakan pemilihan bersarang. Misalkan dibutuhkan pemilihan kondisi percabangan untuk banyak syarat, dan hanya ingin agar kasus hanya memilih salah satu maka dapat ditulis seperti contoh berikut :
If Kondisi_percabangan_1 then
{ proses jika kondisi percabangan 1 terpenuhi }
{end if}
Else if kondisi_percabangan_2 then
{proses jika kondisi percabangan 1 tidak terpenuhi dan kondisi Percabangan 2 terpenuhi }
{end if}
Else if kondisi_percabangan_3 then
{proses jika kondisi percabangan 1 dan 2 tidak terpenuhi dan Kondisi percabangan 3 terpenuhi }
{end if}
Else
{ proses jika kondisi percabangan 1, 2, 3 Tidak terpenuhi }
{end else}
Jika kita ingin melakukan pemeriksaan secara terurut untuk banyak syarat dimana semua syarat harus dilalui oleh semua yang memenuhi syarat atau tidak maka kita dapat membuat percabangan sebagai berikut:
If Kondisi_percabangan_1 then
{proses jika kondisi percabangan 1 terpenuhi }
{end if}
Else if kondisi_percabangan_2 then
{proses jika kondisi percabangan 1 terpenuhi atau tidak terpenuhi
dan kondisi percabangan 2 terpenuhi }
{end if}
Else if kondisi_percabangan_3 then
{proses jika kondisi percabangan 1 dan 2 terpenuhi atau tidak
Terpenuhi dan kondisi percabangan 3 terpenuhi
{end if}
4.4. Depend On (Dua Kondisi atau Lebih)
Percabangan depend on biasa digunakan untuk dua kondisi atau lebih bergantung pada nilai sebuah variabel, syarat kondisi pada percabangan depend on biasanya hanya sebuah nilai. Deklarasi percabangan depend on adalah sebagai berikut:
depend on (nama-nama)
<kondisi-1> : <aksi-1>
<kondisi-2 > :<aksi-2>
<kondisi-3> : <aksi-3>
kondisi-N : aksi-N
{end depend on}
Tiap kondisi akan diperiksa nilai kebenarannya mulai dari kondisi yang pertama sampai ditemukan kondisi yang bernilai benar. Jika kondisi k benar, maka aksi k dilaksanakan sedangkan aksi yang lainnya akan diabaikan, dengan syarat :
1. Kondisi-1,kondisi-2,kondisi-3 … .,kondisi-N domain harganya [true,false]
2. Kondisi-1,kondisi-2,kondisi-3 … .,kondisi-N adalah ekspresi lojik/boolean yang mengandung nama-nama sebagai operan.
Struktur depend on berfungsi untuk menyederhanakan bentuk if then else yang bertingkat-tingkat. Stuktur depend on diatas ekivalen dengan struktur if then else berikut ini :
If <Kondisi1> then
Aksi1
Else
If <kondisi2> then
Aksi2
Else
If <kondisi3> then
Aksi3
Else
If <kondisiN> then
AksiN
Else
AksiX
EndIf
EndIf
EndIf
EndIf