Analisis kasus, yang melahirkan instruksi kondisional, adalah elemen primitif
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 yang
bersangkutan 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.
Notasi algoritmik secara umum untuk analisis kasus yang umum (banyak
kasus) :
dengan syarat :
• kondisi-1, kondisi-2, kondisi-3, ..., kondisi-N domain harganya [true,false].
• kondisi-1, kondisi-2, kondisi-3, ..., kondisi-N adalah ekspresi lojik/boolean yang
mengandung nama-nama sebagai operan.
• kondisi-1 ∩ kondisi-2 ∩ kondisi-3 ∩ ... ∩ kondisi-N = Ø. Berarti semua kondisi
disjoint, tidak ada kasus yang sama tercakup pada dua buah kondisi.
• kondisi-1 ∪ kondisi-2 ∪ kondisi-3 ∪ ... ∪ kondisi-N = U. Berarti kondisi
mencakup semua kemungkinan
Jika hanya ada satu kasus yang mengakibatkan aksi, atau dua kasus komplementer,
dapat dipakai notasi sebagai berikut :
SATU KASUS:
Jika kondisi benar, maka aksi dilakukan. Jika kondisi tidak benar, maka tidak terjadi
apa-apa (efek neto “kosong”).
DUA KASUS KOMPLEMENTER:
Catatan:
1. Perhatikan "indentasi" penulisan. Pada diktat ini, "end" sengaja tidak dituliskan
supaya mahasiswa memperhatikan indentasi penulisan.
2. Hati-hati dalam memakai “else” yang berarti kondisi implisit yang merupakan
negasi dari kondisi. Penulisan kondisi “else” secara eksplisit sangat disarankan.
Contoh-1 : MAKSIMUM DUA HARGA
Persoalan:
Dibaca dua buah harga a dan b, a mungkin sama dengan b. Harus dituliskan harga
yang lebih besar. Eksekusi akan menghasilkan dua kemungkinan: menuliskan a, jika a
≥ b, atau menuliskan b, jika a < b. Tidak mungkin keduanya.
Spesifikasi:
Input : a dan b integer
Proses : menuliskan harga yang lebih besar, dengan spesifikasi bahwa menuliskan a,
jika a ≥ b, atau menuliskan b, jika a < b
Output : a atau b, integer
Contoh 2: WUJUD AIR
Persoalan:
Dibaca sebuah harga berupa bilangan bulat, yang mewakili pengukuran suhu air
(dalam oC) pada tekanan atmosfir, harus dituliskan wujud air pada temperatur dan
tekanan itu.
Spesifikasi:
Input : T (integer)
Proses : menuliskan wujud air sesuai dengan nilai T
Output : “Beku” jika T ≤ 0
“Cair” jika 0 < T ≤ 100
“Uap” jika T > 100
Catatan:
1. Solusi pada versi-1 berbeda dengan versi-2. Ini menyangkut spesifikasi dan
batasan program yang harus dijabarkan dan disetujui bersama dengan pemesan
program
2. Solusi versi-1 akan dapat dipakai untuk Temperatur yang bertype riil, namun
solusi versi-2 akan menimbulkan masalah karena operator kesamaan tidak dapat
dipakai untuk bilangan riil. Sebagai latihan, disarankan untuk menuliskan solusi
versi-2 jika Temperatur direpresentasi sebagai bilangan riil
Contoh 3: RANKING
Persoalan :
Dibaca tiga buah harga a,b dan c, harus dituliskan secara terurut, mulai dari yang
terkecil sampai dengan yang terbesar. Ketiga bilangan yang dibaca selalu berlainan
harganya.
Spesifikasi:
Input : a,b,c, tiga besaran integer
Proses : menuliskan harga yang dibaca mulai dari yang terkecil s/d yang terbesar
Output : a,b,c jika a < b dan b < c
a,c,b jika a < c dan c < b
b,a,c jika b < a dan a < c
b,c,a jika b < c dan c < a
c,a,b jika c < a dan a < b
c,b,a jika c < b dan b < a

Contoh 4: RANKING (DENGAN PEMERIKSAAN KESALAHAN)
Persoalan :
Dibaca tiga buah harga a, b, dan c, harus dituliskan secara terurut, mulai dari yang
terkecil sampai dengan yang terbesar. Ketiga bilangan yang dibaca selalu berlainan
harganya.
Spesifikasi:
Input : a,b,c, tiga besaran integer
Proses : menuliskan harga yang dibaca mulai dari yang terkecil s.d. yang terbesar,
jika a,b,c berlainan : output (a,b,c)
Output : Jika data benar (a ≠ b, b ≠ c, a ≠ c):
a,b,c jika a < b dan b < c
a,c,b jika a < c dan c < b
b,a,c jika b < a dan a < c
b,c,a jika b < c dan c < a
c,a,b jika c < a dan a < b
c,b,a jika c < b dan b < a
Menuliskan pesan “Data salah” jika ada data yang sama

Catatan:
1. Pemeriksaan data semacam itu akan menambah robustness dari program. Jika
pemeriksaan data tidak dilakukan, maka kriteria data yang valid harus ditampilkan
secara eksplisit sehingga pemakai program dapat mengetahui spesifikasi data
benar dan tidak menyebabkan program abort.
2. Selanjutnya, algoritma-algoritma yang diberikan tidak akan mengandung
pemeriksaan kesalahan.
3. Berikut ini diberikan skema pemrosesan data yang dibaca dengan pemeriksaan
kesalahan yang dapat dipakai untuk beberapa kasus sederhana. Untuk kasus yang
lebih kompleks, pemeriksaan tidak dapat dilakukan dengan cara sederhana dan
pada awal program.
Contoh predikat yang merupakan ekspresi data valid:
- Jika data harus positif, dan data adalah X bertype integer: X ≥ 0.
- Jika data adalah X dan Y, dan X harus lebih besar daripada Y: X > Y.
Komentar
Posting Komentar