Anda di halaman 1dari 19

BAB 04 Algoritma Percabangan

Pada Bab ini anda akan mempelajari

1. Pengertian algoritma percabangan


2. Ekspresi Boolean
3. Penulisan algoritma (teks dan flowchart)
4. Beberapa istilah dasar algoritma

1. Pengertian Algoritma Percabangan

Pada algoritma runtunan telah kita lihat bahwa setiap pernyataan selalu dilakukan bila
telah sampai gilirannya. Namun demikian ada kalanya suatu pernyataan atau perintah
hanya bisa dilakukan bila memenuhi suatu kondisi atau persyaratan tertentu. Algoritma
ini kita sebut dengan algoritma seleksi kondisi atau juga percabangan.

Contoh. Misalnya kita ingin menentukan apakah suatu bilangan merupakan bilangan
genap atau ganjil. Algoritmanya dapat kita jabarkan

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,

1
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.

2. Ekspresi Boolean

Ada dua komponen utama dalam ekspresi percabangan yaitu kondisi dan pernyataan.
Kondisi adalah syarat dilakukannya sebuah (atau sekelompok) pernyataan, sedangkan
pernyataan dalam konteks ini adalah perintah yang berkaitan dengan suatu kondisi.
Contoh umum pernyataan kondisi-pernyataan

1. Jika hari hujan, maka saya tidak jadi keluar rumah


kondisi pernyataan

2. Jika nilai ujian lebih besar atau sama dengan 60, maka ujian dinyatakan lulus
kondisi 1 pernyataan 1
Jika nilai ujian kurang dari 60, maka ujian dinyatakan gagal
kondisi 2 pernyataan 2

Sebagaimana contoh sebelumnya dapat dilihat bahwa adakalanya suatu perintah


dilakukan jika kondisi yang mempersyaratkannya telah jelas nilai benar salahnya. Dalam
hal pemrograman kondisi tersebut harus bisa dinyatakan dalam suatu ekspresi boolean.
Ekspresi boolean adalah ekspresi yang hasil ekspresinya bernilai boolean (true atau
false).

Ekspresi boolean dapat diperoleh dengan menggunakan dua jenis operasi :

1. Operasi Boolean.

2
Operasi boolean adalah operasi yang menggunakan operator boolean seperti
and, or, not, xor.

Contoh operasi relasional

1. z1  x and y
2. z2  a=2 or b=10
3. z3  not(x)
4. z4  p+2=4 xor q=0

2. Operasi Relasional (Operasi Perbandingan)

Operasi relasional adalah operasi yang membandingkan dua buah operan dengan
menggunakan operator perbandingan (ingat, operator perbandingan : =, <>,
<, ≤, >, ≥).

Contoh operasi relasional

1. z1  x > y
2. z2  a <> 10
3. z3  x + y = 17
4. z4  p div q < r
5. z5  p mod 2 = 0

Hasil dari operasi perbandingan memiliki dua kemungkinan, yaitu true (benar)
atau false (salah). Oleh karena itu tipe hasil (z1, z2, z3, z4, z5) dari setiap operasi
di atas adalah boolean.

3. Algoritma Teks dan Flowchart Percabangan

Ada dua tipe algoritma percabangan yang akan kita bahas berikut ini yaitu

3
- Satu kondisi (if-then) : artinya hanya ada satu kondisi yang menjadi syarat untuk
melakukan satu atau satu blok (sekelompok) pernyataan. Bentuk umum algoritma
teks standar percabangan dengan satu kondisi :

if <kondisi> then
pernyataan

Jika <kondisi> bernilai benar maka pernyataan dikerjakan, sedangkan jika tidak,
maka pernyataan tidak dikerjakan dan proses langsung keluar dari percabangan
(begin).

Contoh.

if A>B then
write (A)

Ekspresi di atas menunjukkan bahwa perintah menulis / menampilkan A dikerjakan


hanya jika kondisi A>B bernilai benar. Jika yang terjadi adalah sebaliknya, tidak ada
pernyataan yang dilakukan atau proses langsung keluar dari percabangan (endif).
Secara flowchart ekspresi itu dapat ditulis seperti berikut.

t
A>B?

Write(A)

4
Perhatikan bahwa pada kotak belah ketupat 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 pernyataan apapun.

- Dua kondisi (if-then-else) : artinya ada dua kondisi yang menjadi syarat untuk
dikerjakannya dua jenis pernyataan. Bentuk umum percabangan dengan dua kondisi :

if <kondisi> then
pernyataan1
else
pernyataan2

Jika <kondisi> bernilai benar maka pernyataan1 dikerjakan. Sedangkan jika tidak
(<kondisi> bernilai salah), maka pernyataan yang dikerjakan adalah pernyataan2.
Berbeda dengan percabangan satu kondisi, pada percabangan dua kondisi ada dua
pernyataan 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)

Ekspresi di atas sedikit berbeda dengan sebelumnya. Perintah menulis/menampilkan


A dikerjakan hanya jika kondisi A>B bernilai benar, sedangkan jika yang terjadi
adalah sebaliknya maka pernyataan yang dilakukan adalah menulis B. Secara
flowchart pernyataan di atas dapat ditulis sebagai berikut.

5
Write
A>B? (B)

Write
(A)

Berikut ini adalah beberapa contoh lainnya.

a. If x > 0 then
ket  ‘bilangan positif’

b. if m = n
i  m*n
write(i)

b. if bil>=0 then
ket  (‘bilangan positif’)
else
ket  (‘bilangan negatif’)

d. if m = n then
i  m*n
j  m-n
else
i  m/n
j  m+n
write(i,j)

Latihan : Cobalah anda buat flowchart dari algoritma pada poin a-d di atas!

4. Contoh soal

6
1. Buatlah algoritma untuk menentukan apakah suatu bilangan merupakan bilangan
genap atau ganjil. Input algoritma adalah bilangan yang akan ditentukan jenisnya.

algoritma bilangan_genap

deklarasi
bil : integer
ket : string

deskripsi
read (bil)
ket’ganjil’
if bil mod 2 = 0 then
ket‘genap’
write (bil)

Algoritma bilangan_genap

Begin

read
(bil)

ket<--'ganjil'

bil mod 2 =
0?
y

ket<--'ganjil'

write(ket)

End

7
Penjelasan

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.

Perintah bil ket Output


read (bil) 3
ket’ganjil’ ‘ganjil

if bil mod 2 = 0 then
ket‘genap’
write (bil) ‘ganjil’

2. 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.

algoritma gaji_pegawai

deklarasi
tjg, mk, gapok, gatot : real

8
deskripsi
read (mk, gapok)
if mk>3 then
tjg  0.2*gapok
else
tjg  0.1*gapok
gatot  gapok+tjg
write(‘Gaji total ’,gatot)

Penjelasan

Mula-mula dimasukkan data (mk) dan (gapok). Misalnya, masing-masing diberi nilai 2
dan 1000. Karena (mk>3) bernilai salah, maka perintah yang dikerjakan adalah
(tjg0.1*gapok). Kemudian gapok dan tjg dijumlahkan yang hasilnya disimpan
sebagai gatot. Dengan demikian output yang keluar adalah 1100.

Perhatikan tabel penyimpanan data berikut

Perintah mk gapok tjg gatot Output


read (mk, gapok) 2 1000
if mk>3 then
tjg  0.2*gapok
else 100
tjg  0.1*gapok
endif
gatot  gapok+tjg 2 1000 100 1100
write(gatot) 1100

Keluaran algoritma : 1100

9
Algoritma gaji_pegawai

Begin

read(mk,
gapok)

mk>3?

y tjg<--0.1*gapok

tjg<--0.2*gapok

gatot<--gapok+tjg

write(gatot)

End

5. Percabangan Tersarang

Percabangan tersarang adalah percabangan di dalam percabangan. Banyak sekali


bentuknya, namun salah satu contohnya adalah sebagai berikut.

If <kondisi1> then
if <kondisi2> then
Pernyataan1
else
Pernyataan2
else
If <kondisi3>

10
Pernyataan3
else
Pernyataan4

Misalnya, buatlah algoritma untuk menentukan apakah suatu bilangan merupakan


bilangan kelipatan 2 saja, atau kelipatan 5 saja, atau kelipatan 2 dan 5, atau bukan
kelipatan 2 dan 5. Bilangan yang dimaksud merupakan input algorritma.

t y
Kondisi
1

t y t y
Kondisi Kondisi
3 2

Pernyataan4 Pernyataan3 Pernyataan2 Pernyataan1

Algoritma Kelipatan2Keliptan5

Deklarasi
Bil : integer
Ket : string

11
Deskripsi
read (bil)
if bil mod 2 = 0 then
if bil mod 5 = 0 then
Ket  ‘ Kelipatan 2 dan Kelipatan 5’
else
Ket  ‘ Kelipatan 2 tapi Bukan Kelipatan 5’
else
if bil mod 5 = 0 then
Ket  ‘Bukan Kelipatan 2 tapi Kelipatan 5’
else
Ket  ‘Bukan Kelipatan 2 atau 5’)
Write(Ket)

6. Menggunakan Operator Boolean

Kita dapat menyederhanakan persoalan percabangan dengan menggunanakan operator


boolean (and, or, not, dan xor) untuk ekspresi boolean yang lebih dari satu. Misalnya,
sebuah univeritas memberlakukan yudisium cumlaude untuk mahasiswa yang lulus
dengan IPK lebih besar sama dengan 3.5 dan masa kuliah tidak lebih dari 4 tahun.
Bagaimana algoritma penentuan yudisiumnya? (Input : IPK dan masa kuliah)

Algoritma yudisium1

Deklarasi
IPK, MK : real
Ket : string

Deskripsi
Read (IPK,MK)
If (IPK>=3.5) and (MK<=4) then
Ket  ‘cum laude’
else
Ket  ‘tidak cumlaude’
write (Ket)

12
Begin

read (IPK,
MK)

(IPK>=3.5) t
and (MK <=4)

y
ket <-- 'tidak cum
laude'
ket <-- 'cum laude'

write(ket)

End

Penjelasan

Mula mula IPK dan MK, misalnya, kita beri nilai 3.6 dan 4. Karena kondisi (IPK>=3.5)
and (MK<=4) bernilai benar maka perintah berikutnya adalah Ket  ‘cum laude’.
Sehingga ketika perintah Write (Ket) menghasilkan output ‘cum laude’. Cobalah
menganalisa soal ini dengan memberikan input yang lain.

Penggunaan operator logika sangat membantu untuk menyederhanakan algoritma. Jika


tidak menggunakan operator logika maka algoritmanya dapat ditulis sebagai berikut.

Algoritma yudisium2

Deklarasi
IPK, MK : real
Ket : string

13
Deskripsi
read (IPK,MK)
if IPK>=3.5 then
if MK<=4 then
Ket  ‘cum laude’
else
Ket  ‘tidak cumlaude’
else
Ket  ‘Tidak cumlaude’
write (Ket)

Di sini terlihat algoritmanya menjadi sedikit rumit. Kerumitan bertambah karena kita
harus membuat percabangan dalam percabangan (percabangan tersarang). Selain
itu penulisan Ket’Tidak cumlaude’ harus ditulis dua kali agar tujuan algoritma
dapat dicapai. Dengan demikian penggunaan operator logika dalam hal ini jelas
menyederhanakan algoritma di atas.

7. Percabangan Tiga Kondisi Atau Lebih

Percabangan dengan tiga kondisi atau lebih adalah bentuk pengembangan dari dua bentuk
percabangan percabangan yang telah kita bahas sebelumnya. Akan ada banyak sekali
variasinya tetapi secara umum ekspresi percabangannya dapat kita tuliskan sebagai
berikut.

If <kondisi1> then
Pernyataan1
else if <kondisi2> then
Pernyataan2
...
else if <kondisi(n-1)> then
Pernyataan(n)
else
Pernyataan(n)

14
Mula-mula <kondisi1> dicek nilai kebenarannya. Jika benar, maka dikerjakan
pernyataan1. Jika salah, maka dicek nilai kebenaran <kondisi2>. Jika <kondisi2>
benar, maka dikerjakan pernyataan2. Jika tidak algoritma akan mengecek ke kondisi
berikutnya dengan cara yang sama dengan yang sebelumnya. Terakhir, jika semua kondisi
bernilai salah, maka pernyataan yang dikerjakan adalah Pernyataan(n+1). Bentuk
flowchartnya dapat dilihat di bawah ini.

y
<kondisi1>? aksi1

y
<kondisi2> aksi2

aksi(n+1)<--0

Pada algoritma di atas pernyataan1 akan dikerjakan jika <kondisi1> bernilai benar, jika
tidak pemeriksan dilanjutkan ke <kondisi2>. Jika <kondisi2> bernilai benar maka
pernyataan2 dikerjakan. Jika tidak, pemeriksaan dilanjutkan pada kondisi-kondisi
berikutnya. Pemeriksaan ini terus terhadap semua kondisi yang ada. Jika tidak ada
kondisi yang benar maka pernyataan yang dikerjakan adalah pernyataan(n+1).

Contoh soal

15
Sebuah toko buku memberikan diskon pembelian buku dengan jumlah tertentu. Pembeli
yang membeli 100 atau lebih mendapat diskon 40%, sedangkan pembelian sebanyak 50
hingga 99 diberi diskon 25%. Buat algoritma menghitung total transaksi dengan input
harga satuan buku dan jumlah pembelian.

Algoritma pembelian

Deklarasi
Hrg,Disk,Ttr : real
Jum : integer

Deskripsi
Read(hrg,jum)
if jum >= 100 then
Disk0.4
else if jum>=50 then
Disk0.25
else
Disk0
Ttrhrg*(1-disk)
Write(Ttr)

16
Begin

read (hrg,
jum)

y
jum>=100? disk<--0.4

y
jum>=100? disk<--0.25

t
`

disk<--0

ttr<--hrg*(1-disk)

write(ttr)

End

Latihan : Buatlah tabel penyimpanan data kemudian tentukan keluaran algoritma jika
diberi input tertentu.

8. Soal

Tuliskan algoritma penyelesaian dari soal-soal berikut

1. Seseorang dinyatakan lulus dalam kuliah Algoritma jika nilai akhirnya lebih besar
atau sama dengan 60. Buat algoritma menentukan kelulusan seseorang dalam
kuliah algoritma. Input : nilai akhir. Output : keterangan.

17
2. Sama dengan no 1, tetapi nilai akhirnya diperoleh dari nilai UTS (30%), UAS
(40%) dan Tugas (30%). Input : nilai UTS, UAS dan Tugas. Output : nilai akhir
dan keterangan.

3. Buatlah algoritma untuk menentukan apakah suatu tahun merupakan tahun


kabisat atau bukan. Input : tahun. Output : keterangan (‘kabisat ‘ atau ‘bukan
kabisat’)

4. Buatlah algoritma menentukan bilangan terbesar dari tiga buah bilangan. Input :
tiga bilangan (A, B dan C). Ouput : bilangan terbesar dari ketiga input tersebut.

5. Indeks nilai kuliah algoritma ditentukan oleh nilai akhir :

NA>=75 :A
60<=NA<75 : B
45<=NA<60 : C
30<=NA<45 : D
NA<30 :E

Nilai akhir diperoleh dari rumus : NA = 0.2*TU+0.3*UTS+0.5*UAS


Buat algoritma menentukan indeks nilai algoritma. Input : TU (tugas), UTS, UAS.
Output : indeks.

6. Toko A mempunyai kebijakan dalam penjualan buku tulis. Jika pelanggan


membeli lebih dari 100 eksemplar mendapat diskon 20%, sedangkan yang
membeli antara 20 hingga 100 mendapat dikon 10%. Lainnya tidak mendapat
diskon. Input : harga satuan buku, jumlah buku yang dibeli. Output : total harga

7. Buat algoritma untuk menentukan apakah seseorang boleh ikut pemilu. Syarat
ikut pemilu adalah telah menikah atau sudah berusia 17 tahun atau lebih. Input :
usia dan status. Output : keterangan (‘ikut pemilu’ atau ‘tidak ikut pemilu’.)

18
8. Buat algoritma menentukan apakah suatu akar suatu persamaan kuadrat bersifat
real atau imaginer. Input : komponen persamaan kuadrat a, b, c. Output :
keterangan (‘real’ atau ‘imaginer’).

9. Buat algoritma menentukan akar-akar real suatu persamaan kuadrat yang akarnya
bersifat real. Jika akarnya bersifat imaginer tampilkan pesan ‘akar imaginer’.
Input : komponen a, b, c dari persamaan kuadrat yang dimaksud. Output : akar-
akar persamaan kuadrat tersebut.

10. Buatlah algoritma untuk menentukan apakah tiga buah titik dapat membentuk
segitiga sama sisi, atau sama kaki, atau bukan keduanya. Input : koordinat dari
ketiga titik yang dimaksud. Output : keterangan (‘segitiga sama sisi’, segitiga
sama kaki’, ‘segitiga biasa’).

11. Sebuah penyewaan kendaraan memberlakukan tarif sebagai berikut. Lama


penyewaan minimal untuk dua jam dengan tarif 1000. Untuk jam berikutnya
sampai dengan 12 jam tarif perjamnya adalah 400. Sedangkan untuk jam
berikutnya sampai dengan 24 jam maka tarif perjamnya menjadi 300. Buatlah
algoritma yang menentukan berapa yang harus dibayar konsumen untuk lama
peminjaman tertentu. Input : lama peminjaman. Output : total pembayaran.

19

Anda mungkin juga menyukai