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) . Beberapa istilah dasar algoritma

1. Pengertian Algoritma Percabangan

Pada algoritma runtunan telah kita lihat bahwa setiap pern!ataan selalu dilakukan bila telah sampai gilirann!a. "amun demikian ada kalan!a suatu pern!ataan atau perintah han!a bisa dilakukan bila memenuhi suatu kondisi atau pers!aratan tertentu. #lgoritma ini kita sebut dengan algoritma seleksi kondisi atau juga percabangan. $ontoh. %isaln!a kita ingin menentukan apakah suatu bilangan merupakan bilangan genap atau ganjil. #lgoritman!a 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 . 5. tulis X bilangan ganjil . !elesai Perhatikan bahwa ada dua kemungkinan perintah !ang akan dikerjakan setelah perintah ke&3 dikerjakan. 'ika ( habis dibagi dua maka selanjutn!a perintah ke& !ang dikerjakan) kemudian melompat ke * (perintah + tidak dikerjakan). ,ebalikn!a jika ( tidak habis 1

dibagi dua perintah selanjutn!a melompat ke&+ (perintah kemudian berakhir pada perintah ke&*. 2. Ekspresi Boolean

tidak dikerjakan) dan

#da dua komponen utama dalam ekspresi percabangan !aitu kondisi dan pern!ataan. -ondisi adalah s!arat dilakukann!a sebuah (atau sekelompok) pern!ataan) sedangkan pern!ataan dalam konteks ini adalah perintah !ang berkaitan dengan suatu kondisi. $ontoh umum pern!ataan kondisi&pern!ataan 1. 'ika hari hujan) maka sa!a tidak jadi keluar rumah kondisi pernyataan

2. 'ika nilai ujian lebih besar atau sama dengan *.) maka ujian din!atakan lulus kondisi 1 kondisi 2 pernyataan 2 pernyataan 1 'ika nilai ujian kurang dari *.) maka ujian din!atakan gagal

,ebagaimana contoh sebelumn!a dapat dilihat bahwa adakalan!a suatu perintah dilakukan jika kondisi !ang mempers!aratkann!a telah jelas nilai benar salahn!a. /alam hal pemrograman kondisi tersebut harus bisa din!atakan dalam suatu ekspresi boolean. Ekspresi boolean adalah ekspresi !ang hasil ekspresin!a bernilai boolean (true atau false). Ekspresi boolean dapat diperoleh dengan menggunakan dua jenis operasi 0 1. Operasi Boolean. 1perasi boolean adalah operasi !ang menggunakan operator boolean seperti and, or, not, xor.

$ontoh operasi relasional

1. "1 # and $ 2. "2 a%2 &' b%1( 3. "3 n&t(#) 4. "4 p)2%4 #&' *%( 2. Operasi Relasional (Operasi Perbandingan) 1perasi relasional adalah operasi !ang membandingkan dua buah operan dengan menggunakan operator perbandingan (ingat) operator perbandingan : =, <>, <, , >, ). $ontoh operasi relasional

1. "1 # + $ 2. "2 a ,+ 1( 3. "3 # ) $ % 14. "4 p di. * , ' 5. "5 p m&d 2 % ( 2asil dari operasi perbandingan memiliki dua kemungkinan) !aitu true (benar) atau alse (salah). 1leh karena itu tipe hasil (!1" !2" !#" !4" !$) dari setiap operasi di atas adalah boolean. #. Algoritma %eks dan &lo'c(art Percabangan #da dua tipe algoritma percabangan !ang akan kita bahas berikut ini !aitu

&

)atu kondisi (if-then) 0 artin!a han!a ada satu kondisi !ang menjadi s!arat untuk melakukan satu atau satu blok (sekelompok) pern!ataan. Bentuk umum algoritma teks standar percabangan dengan satu kondisi 0 i *kondisi+ t(en pern,ataan 'ika 3kondisi4 bernilai benar maka pern,ataan dikerjakan) sedangkan jika tidak) maka pern,ataan tidak dikerjakan dan proses langsung keluar dari percabangan (begin). $ontoh.

i/ 0+1 then 2'ite (0)

Ekspresi di atas menunjukkan bahwa perintah menulis 5 menampilkan # dikerjakan han!a jika kondisi #4B bernilai benar. 'ika !ang terjadi adalah sebalikn!a) tidak ada pern!ataan !ang dilakukan atau proses langsung keluar dari percabangan (endif). ,ecara flowchart ekspresi itu dapat ditulis seperti berikut.

A>B? y
Write(A)

Perhatikan bahwa pada kotak belah ketupat memiliki dua cabang arus data) !ang satu untuk kondisi bernilai benar (!) artin!a !a)) sedang !ang lain untuk kondisi bernilai

salah (t) artin!a tidak). 'ika kondisi bernilai benar (!) maka perintah !ang dikerjakan adalah 'rite(A). 'ika kondisi salah (t) maka arus data langsung menuju ke bawah tanpa mengerjakan pern!ataan apapun.

&

-ua kondisi (i .t(en.else) 0 artin!a ada dua kondisi !ang menjadi s!arat untuk dikerjakann!a dua jenis pern!ataan. Bentuk umum percabangan dengan dua kondisi 0 i *kondisi+ t(en pern,ataan1 else pern,ataan2

'ika 3kondisi4 bernilai benar maka pern,ataan1 dikerjakan. ,edangkan jika tidak (3kondisi+ bernilai salah)) maka pern!ataan !ang dikerjakan adalah pern,ataan2. Berbeda dengan percabangan satu kondisi) pada percabangan dua kondisi ada dua pern!ataan untuk dua keadaan kondisi) !aitu untuk 3kondisi4 !ang bernilai benar dan 3kondisi4 !ang bernilai salah. $ontoh algoritma percabangan dua kondisi 0 i/ 0+1 then 2'ite (0) else 2'ite (1)

Ekspresi di atas sedikit berbeda dengan sebelumn!a. Perintah menulis5menampilkan # dikerjakan han!a jika kondisi #4B bernilai benar) sedangkan jika !ang terjadi adalah sebalikn!a maka pern!ataan !ang dilakukan adalah menulis B. ,ecara flowchart pern!ataan di atas dapat ditulis sebagai berikut.

A>B?

Write (B)

Write (A)

Berikut ini adalah beberapa contoh lainn!a. a. 3/ # + ( then ket bilangan p&siti/ b. i/ m % n i m4n 2'ite(i) b. i/ bil+%( then ket (bilangan p&siti/) else ket (bilangan negati/) d. i/ m % n then i m4n j m5n else i m6n j m)n 2'ite(i7j)

/ati(an 0 $obalah anda buat flowchart dari algoritma pada poin a&d di atas6

4. 0onto( soal 1. Buatlah algoritma untuk menentukan apakah suatu bilangan merupakan bilangan genap atau ganjil. 7nput algoritma adalah bilangan !ang akan ditentukan jenisn!a. alg&'itma bilangan8genap dekla'asi bil 9 intege' ket 9 st'ing desk'ipsi 'ead (bil) ketganjil i/ bil m&d 2 % ( then ketgenap 2'ite (bil) Algoritma bilangan1genap
Begin

read (bil)

ket<--'ganjil'

bil mod 2 = 0? y ket<--'ganjil'

write(ket)

End

Pen2elasan %ula&mula inputkan 9ariabel (bil)) misaln!a 3. -emudian (ket) diberi nilai 3gan2il4. -emudian karena kondisi (bil mod 2 5 0) bernilai salah) maka (ket) tidak berubah dan tetap bernilai 3gan2il4) sehingga ketika perintah 'rite(ket)) output !ang muncul adalah 3gan2il4. :ntuk jelasn!a perhatikan tabel pen!impanan data berikut.

Perintah read (bil) ketganjil if bil mod 2 = 0 then ketgenap write (bil)

bil 3

ket ganjil ganjil

Output

2. Buatlah algoritma menentukan gaji total pegawai. /iketahui pegawai dengan masa kerja lebih dari 3 tahun mendapat tunjangan sebesar 2.; gaji pokok sedang !ang kurang dari itu mendapat tunjangan 1.;. 7nput program adalah masa kerja dan gaji pokok. alg&'itma gaji8pega2ai dekla'asi tjg7 mk7 gap&k7 gat&t 9 'eal <

desk'ipsi 'ead (mk7 gap&k) i/ mk+3 then tjg (.24gap&k else tjg (.14gap&k gat&t gap&k)tjg 2'ite(:aji t&tal 7gat&t) Pen2elasan %ula&mula dimasukkan data (mk) dan (gapok). %isaln!a) masing&masing diberi nilai 2 dan 1.... -arena (mk+#) bernilai salah) maka perintah !ang dikerjakan adalah (t2g 0.16gapok). -emudian gapok dan t2g dijumlahkan !ang hasiln!a disimpan sebagai gatot. /engan demikian output !ang keluar adalah 11... Perhatikan tabel pen!impanan data berikut Perintah read (mk, gapok) if mk>3 then tjg 0.2 gapok el!e tjg 0.1 gapok endif gatot gapok"tjg write(gatot) -eluaran algoritma 0 1100 mk 2 gapok 1000 tjg gatot Output

100 2 1000 100 1100 1100

Algoritma ga2i1pega'ai

#egin

read(mk ga!ok)

mk>"?

tjg<--0#%$ga!ok

tjg<--0#2$ga!ok

gatot<--ga!ok&tjg

write(gatot)

End

$. Percabangan %ersarang Percabangan tersarang adalah percabangan di dalam percabangan. Ban!ak sekali bentukn!a) namun salah satu contohn!a adalah sebagai berikut. 3/ ,k&ndisi1+ then i/ ,k&ndisi2+ then ;e'n$ataan1 else ;e'n$ataan2 else 1.

3/ ,k&ndisi3+ ;e'n$ataan3 else ;e'n$ataan4

%isaln!a) buatlah algoritma untuk menentukan apakah suatu bilangan merupakan bilangan kelipatan 2 saja) atau kelipatan + saja) atau kelipatan 2 dan +) atau bukan kelipatan 2 dan +. Bilangan !ang dimaksud merupakan input algorritma.

&ondi!i 1

t
&ondi!i 3

t
&ondi!i 2

%ern$ataan'

%ern$ataan3

%ern$ataan2

%ern$ataan1

0lg&'itma <elipatan2<eliptan5 =ekla'asi 1il 9 intege'

11

<et

9 st'ing

=esk'ipsi 'ead (bil) i/ bil m&d 2 % ( then i/ bil m&d 5 % ( then <et <elipatan 2 dan <elipatan 5 else <et <elipatan 2 tapi 1ukan <elipatan 5 else i/ bil m&d 5 % ( then <et 1ukan <elipatan 2 tapi <elipatan 5 else <et 1ukan <elipatan 2 atau 5) >'ite(<et)

7. 8enggunakan Operator Boolean -ita dapat men!ederhanakan persoalan percabangan dengan menggunanakan operator boolean (and" or" not" dan 9or) untuk ekspresi boolean !ang lebih dari satu. %isaln!a) sebuah uni9eritas memberlakukan !udisium cumlaude untuk mahasiswa !ang lulus dengan 7P- lebih besar sama dengan 3.+ dan masa kuliah tidak lebih dari Bagaimana algoritma penentuan !udisiumn!a> (7nput 0 7P- dan masa kuliah) tahun.

0lg&'itma $udisium1 =ekla'asi 3;<7 M< <et 9 'eal 9 st'ing

=esk'ipsi ?ead (3;<7M<) 3/ (3;<+%3.5) and (M<,%4) then <et @um laude else <et tidak @umlaude 2'ite (<et)

12

Begin

read ('() *))

('()>="#+) and (*) <=,)

y
ket <-- '-.m la.de' ket <-- 'tidak -.m la.de'

write(ket)

End

Pen2elasan %ula mula 7P- dan %-) misaln!a) kita beri nilai 3.* dan . -arena kondisi ( :P;+5#.$) and (8;*54) bernilai benar maka perintah berikutn!a adalah ;et 3cum laude4. ,ehingga ketika perintah <rite (;et) menghasilkan output 3cum laude4. $obalah menganalisa soal ini dengan memberikan input !ang lain. Penggunaan operator logika sangat membantu untuk men!ederhanakan algoritma. 'ika tidak menggunakan operator logika maka algoritman!a dapat ditulis sebagai berikut.

0lg&'itma $udisium2 =ekla'asi

13

3;<7 M< <et

9 'eal 9 st'ing

=esk'ipsi 'ead (3;<7M<) i/ 3;<+%3.5 then i/ M<,%4 then <et @um laude else <et tidak @umlaude else <et Aidak @umlaude 2'ite (<et) /i sini terlihat algoritman!a menjadi sedikit rumit. -erumitan bertambah karena kita harus membuat percabangan dalam percabangan (percabangan tersarang). ,elain itu penulisan ;et 4%idak cumlaude4 harus ditulis dua kali agar tujuan algoritma dapat dicapai. /engan demikian penggunaan operator logika dalam hal ini jelas men!ederhanakan algoritma di atas. =. Percabangan %iga ;ondisi Atau /ebi( Percabangan dengan tiga kondisi atau lebih adalah bentuk pengembangan dari dua bentuk percabangan percabangan !ang telah kita bahas sebelumn!a. #kan ada ban!ak sekali 9ariasin!a tetapi secara umum ekspresi percabangann!a dapat kita tuliskan sebagai berikut.
3/ ,k&ndisi1+ then ;e'n$ataan1 else i/ ,k&ndisi2+ then ;e'n$ataan2 ... else i/ ,k&ndisi(n51)+ then ;e'n$ataan(n) else ;e'n$ataan(n)

%ula&mula 3kondisi14 dicek nilai kebenarann!a. 'ika benar) maka dikerjakan pern,ataan1. 'ika salah) maka dicek nilai kebenaran 3kondisi24. 'ika 3kondisi24 benar) maka dikerjakan pern,ataan2. 'ika tidak algoritma akan mengecek ke kondisi berikutn!a dengan cara !ang sama dengan !ang sebelumn!a. ?erakhir) jika semua kondisi bernilai salah) maka pern!ataan !ang dikerjakan adalah Pern,ataan(n>1). Bentuk flowchartn!a dapat dilihat di bawah ini.

<kondi/i%>?

ak/i%

t y

<kondi/i2>

ak/i2

ak/i(n&%)<--0

Pada algoritma di atas pern,ataan1 akan dikerjakan jika 3kondisi14 bernilai benar) jika tidak pemeriksan dilanjutkan ke 3kondisi24. 'ika 3kondisi24 bernilai benar maka pern,ataan2 dikerjakan. 'ika tidak) pemeriksaan dilanjutkan pada kondisi&kondisi berikutn!a. Pemeriksaan ini terus terhadap semua kondisi !ang ada. 'ika tidak ada kondisi !ang benar maka pern!ataan !ang dikerjakan adalah pern,ataan(n>1).

0onto( soal

1+

,ebuah toko buku memberikan diskon pembelian buku dengan jumlah tertentu. Pembeli !ang membeli 1.. atau lebih mendapat diskon .;) sedangkan pembelian seban!ak +. hingga == diberi diskon 2+;. Buat algoritma menghitung total transaksi dengan input harga satuan buku dan jumlah pembelian.

0lg&'itma pembelian =ekla'asi B'g7=isk7At' 9 'eal Jum 9 intege' =esk'ipsi ?ead(h'g7jum) i/ jum +% 1(( then =isk(.4 else i/ jum+%5( then =isk(.25 else =isk( At'h'g4(15disk) >'ite(At')

1*

Begin

read (0rg j.m)

j.m>=%00?

di/k<--0#,

t y

j.m>=%00?

di/k<--0#2+

di/k<--0

ttr<--0rg$(%-di/k)

write(ttr)

End

/ati(an ? Buatlah tabel pen!impanan data kemudian tentukan keluaran algoritma jika diberi input tertentu. @. )oal ?uliskan algoritma pen!elesaian dari soal&soal berikut 1. ,eseorang din!atakan lulus dalam kuliah #lgoritma jika nilai akhirn!a lebih besar atau sama dengan *.. Buat algoritma menentukan kelulusan seseorang dalam kuliah algoritma. 7nput 0 nilai akhir. 1utput 0 keterangan.

18

2. ,ama dengan no 1) tetapi nilai akhirn!a diperoleh dari nilai :?, (3.;)) :#, ( .;) dan ?ugas (3.;). 7nput 0 nilai :?,) :#, dan ?ugas. 1utput 0 nilai akhir dan keterangan. 3. Buatlah algoritma untuk menentukan apakah suatu tahun merupakan tahun kabisat atau bukan. 7nput 0 tahun. 1utput 0 keterangan (@kabisat @ atau @bukan kabisatA) . Buatlah algoritma menentukan bilangan terbesar dari tiga buah bilangan. 7nput 0 tiga bilangan (#) B dan $). 1uput 0 bilangan terbesar dari ketiga input tersebut. +. 7ndeks nilai kuliah algoritma ditentukan oleh nilai akhir 0 AA+5=$ ?A

70*5AA*=$ ? B 4$*5AA*70 ? 0 #0*5AA*4$ ? AA*#0 ?E

"ilai akhir diperoleh dari rumus 0 NA = 0.2*TU+0.3*UT +0.!*UA Buat algoritma menentukan indeks nilai algoritma. 7nput 0 ?: (tugas)) :?,) :#,. 1utput 0 indeks. *. ?oko # mempun!ai kebijakan dalam penjualan buku tulis. 'ika pelanggan membeli lebih dari 1.. eksemplar mendapat diskon 2.;) sedangkan !ang membeli antara 2. hingga 1.. mendapat dikon 1.;. Bainn!a tidak mendapat diskon. 7nput 0 harga satuan buku) jumlah buku !ang dibeli. 1utput 0 total harga 8. Buat algoritma untuk menentukan apakah seseorang boleh ikut pemilu. ,!arat ikut pemilu adalah telah menikah atau sudah berusia 18 tahun atau lebih. 7nput 0 usia dan status. 1utput 0 keterangan (@ikut pemiluA atau @tidak ikut pemiluA.)

1<

<. Buat algoritma menentukan apakah suatu akar suatu persamaan kuadrat bersifat real atau imaginer. 7nput 0 komponen persamaan kuadrat a) b) c. 1utput 0 keterangan (@realA atau @imaginerA). =. Buat algoritma menentukan akar&akar real suatu persamaan kuadrat !ang akarn!a bersifat real. 'ika akarn!a bersifat imaginer tampilkan pesan @akar imaginerA. 7nput 0 komponen a) b) c dari persamaan kuadrat !ang dimaksud. 1utput 0 akar& akar persamaan kuadrat tersebut. 1.. Buatlah algoritma untuk menentukan apakah tiga buah titik dapat membentuk segitiga sama sisi) atau sama kaki) atau bukan keduan!a. 7nput 0 koordinat dari ketiga titik !ang dimaksud. 1utput 0 keterangan (@segitiga sama sisiA) segitiga sama kakiA) @segitiga biasaA). 11. ,ebuah pen!ewaan kendaraan memberlakukan tarif sebagai berikut. Bama pen!ewaan minimal untuk dua jam dengan tarif 1.... :ntuk jam berikutn!a sampai dengan 12 jam tarif perjamn!a adalah ... ,edangkan untuk jam berikutn!a sampai dengan 2 jam maka tarif perjamn!a menjadi 3... Buatlah algoritma !ang menentukan berapa !ang harus diba!ar konsumen untuk lama peminjaman tertentu. 7nput 0 lama peminjaman. 1utput 0 total pemba!aran.

1=

Anda mungkin juga menyukai