Pada algoritma runtunan telah kita lihat bahwa setiap aksi atau perintah selalu
dilakukan bila telah sampai gilirannya. Namun demikian ada kalanya suatu aksi
hanya bisa dilakukan bila memenuhi suatu kondisi atau persyaratan tertentu.
Algoritma ini kita sebut dengan algoritma seleksi kondisi atau juga percabangan.
1. Mulai
2. Masukkan satu bilangan (X)
3. jika X habis dibagi dua maka lanjut ke 4. Jika tidak lanjut ke 5
4. tulis ‘X bilangan genap’. Lanjut ke 6.
5. tulis ‘X bilangan ganjil’
6. Selesai
Perhatikan bahwa ada dua kemungkinan perintah yang akan dikerjakan setelah
perintah ke-3 dikerjakan. Jika X habis dibagi dua maka selanjutnya perintah ke-4
yang dikerjakan, kemudian melompat ke 6 (perintah 5 tidak dikerjakan). Sebaliknya
jika X tidak habis dibagi dua perintah selanjutnya melompat ke-5 (perintah 4 tidak
dikerjakan) dan kemudian berakhir pada perintah ke-6.
Ada dua tipe algoritma percabangan yang akan kita bahas berikut ini yaitu
- Satu kondisi (if-then) : artinya hanya ada satu kondisi yang menjadi syarat
untuk melakukan satu atau satu blok (sekelompok) aksi. Bentuk umum
algoritma teks standar percabangan dengan satu kondisi :
if <kondisi> then
aksi
Jika <kondisi> terpenuhi atau bernilai benar maka aksi dikerjakan, sedangkan
jika tidak, maka aksi tidak dikerjakan dan proses langsung keluar dari
percabangan. Perhatikan contoh berikut ini.
if A>B then
write (A)
Ungkapan dalam belah ketupat “A>B?” dapat kita baca “apakah A lebih besar B?”.
Perhatikan bahwa pada belah ketupat tersebut memiliki dua cabang arus data, yang
satu untuk kondisi bernilai benar (y, artinya ya), sedang yang lain untuk kondisi
bernilai salah (t, artinya tidak). Jika kondisi bernilai benar (y) maka perintah yang
dikerjakan adalah write(A). Jika kondisi salah (t) maka arus data langsung menuju
ke bawah tanpa mengerjakan aksi apapun.
- Dua kondisi (if-then-else) : artinya ada dua kondisi yang menjadi syarat untuk
dikerjakannya dua jenis aksi. Bentuk umum percabangan dengan dua kondisi :
if <kondisi> then
aksi1
else
aksi2
Jika <kondisi> bernilai benar maka aksi1 dikerjakan. Sedangkan jika tidak
(<kondisi> bernilai salah), maka aksi yang dikerjakan adalah aksi2. Berbeda
dengan percabangan satu kondisi, pada percabangan dua kondisi ada dua aksi
untuk dua keadaan kondisi, yaitu untuk <kondisi> yang bernilai benar dan
<kondisi> yang bernilai salah. Contoh algoritma percabangan dua kondisi :
if A>B then
write (A)
else
write (B)
If x > 0 then
ket ‘bilangan positif’
if m = n
i m*n
write(i)
if bil>=0 then
ket (‘bilangan positif’)
else
ket (‘bilangan negatif’)
if m = n then
i m*n
j m-n
else
i m/n
j m+n
write(i,j)
Studi Kasus
Berikut ini adalah algoritma untuk menentukan apakah suatu bilangan merupakan
bilangan genap atau ganjil. Input algoritma adalah bilangan yang akan ditentukan
jenisnya tersebut.
Identifikasi Masalah
Input : Bilangan
Algoritma 2-1
algoritma bilangan_genap_ganjil
deskripsi
read (bil)
ket’ganjil’
if bil mod 2 = 0 then
ket‘genap’
write (ket)
Mula-mula inputkan variabel (bil), misalnya 3. Kemudian (ket) diberi nilai ‘ganjil’.
Kemudian karena kondisi (bil mod 2 = 0) bernilai salah, maka (ket) tidak berubah
dan tetap bernilai ‘ganjil’, sehingga ketika perintah write(ket), output yang muncul
adalah ‘ganjil’. Untuk jelasnya perhatikan tabel penyimpanan data berikut.
read (bil) 3
ket’ganjil’ ‘ganjil’
ket‘genap’
Untuk menyelesaikan soal di atas anda juga dapat menggunakan algoritma if-then-
else seperti berikut ini.
Algoritma 2-2
algoritma bilangan_genap_ganjil
deskripsi
read (bil)
if bil mod 2 = 0 then
ket‘genap’
else
ket ’ganjil’
write (ket)
Studi Kasus
Buatlah algoritma menentukan gaji total pegawai. Diketahui pegawai dengan masa
kerja lebih dari 3 tahun mendapat tunjangan sebesar 20% gaji pokok sedang yang
kurang dari itu mendapat tunjangan 10%. Input program adalah masa kerja dan gaji
pokok.
Identifikasi masalah
Algoritma 2-3
algoritma gaji_pegawai
deskripsi
read (mk, gapok)
if mk>3 then
tjg 0.2*gapok
else
tjg 0.1*gapok
gatot gapok+tjg
write(‘Gaji total ’,gatot)
Flowchart Algoritma 2.6. Flowchart Algoritma 2.7.
gatot gapok+tjg
2 1000 100 1100
write(gatot)
1100
1100