percabangan - logika dan algoritma

25
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

Upload: ari-septiawan

Post on 16-Apr-2017

480 views

Category:

Education


8 download

TRANSCRIPT

Page 1: Percabangan - Logika dan Algoritma

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

Page 2: Percabangan - Logika dan Algoritma

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

Page 3: Percabangan - Logika dan Algoritma

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

Page 4: Percabangan - Logika dan Algoritma

- 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> thenpernyataan

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 thenwrite (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.

4

Page 5: Percabangan - Logika dan Algoritma

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> thenpernyataan1

elsepernyataan2

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 thenwrite (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

Page 6: Percabangan - Logika dan Algoritma

Berikut ini adalah beberapa contoh lainnya.

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

b. if m = n i m*nwrite(i)

b. if bil>=0 thenket (‘bilangan positif’)

elseket (‘bilangan negatif’)

d. if m = n theni m*nj m-n

else i m/n

j m+nwrite(i,j)

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

4. Contoh soal

A>B?

Write (A)

Write (B)

6

Page 7: Percabangan - Logika dan Algoritma

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

7

Begin

read(bil)

bil mod 2 =0?

End

y

ket<--'ganjil'

ket<--'ganjil'

write(ket)

Page 8: Percabangan - Logika dan Algoritma

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 Outputread (bil) 3ket’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

Page 9: Percabangan - Logika dan Algoritma

deskripsi read (mk, gapok) if mk>3 then

tjg 0.2*gapok else

tjg 0.1*gapokgatot 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

(tjg0.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 1000if mk>3 then

tjg 0.2*gapok else

tjg 0.1*gapokendif

100

gatot gapok+tjg 2 1000 100 1100write(gatot) 1100

Keluaran algoritma : 1100

Algoritma gaji_pegawai

9

Page 10: Percabangan - Logika dan Algoritma

5. Percabangan Tersarang

Percabangan tersarang adalah percabangan di dalam percabangan. Banyak sekali

bentuknya, namun salah satu contohnya adalah sebagai berikut.

If <kondisi1> thenif <kondisi2> then

Pernyataan1 else

Pernyataan2 else

If <kondisi3>Pernyataan3

else

10

Begin

read(mk,gapok)

mk>3?

End

y

tjg<--0.2*gapok

tjg<--0.1*gapok

gatot<--gapok+tjg

write(gatot)

Page 11: Percabangan - Logika dan Algoritma

yt yt

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.

Algoritma Kelipatan2Keliptan5

DeklarasiBil : integerKet : string

11

Pernyataan2

Kondisi1

Kondisi3

Kondisi2

Pernyataan1Pernyataan4 Pernyataan3

t y

Page 12: Percabangan - Logika dan Algoritma

Deskripsiread (bil)if bil mod 2 = 0 then

if bil mod 5 = 0 thenKet ‘ Kelipatan 2 dan Kelipatan 5’

elseKet ‘ 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

DeklarasiIPK, MK : realKet : string

Deskripsi Read (IPK,MK) If (IPK>=3.5) and (MK<=4) then

Ket ‘cum laude’ else Ket ‘tidak cumlaude’write (Ket)

12

Page 13: Percabangan - Logika dan Algoritma

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

DeklarasiIPK, MK : realKet : string

13

Page 14: Percabangan - Logika dan Algoritma

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

Page 15: Percabangan - Logika dan Algoritma

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.

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

Page 16: Percabangan - Logika dan Algoritma

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

Disk0.4

else if jum>=50 then

Disk0.25

else

Disk0

Ttrhrg*(1-disk)

Write(Ttr)

16

Page 17: Percabangan - Logika dan Algoritma

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

Page 18: Percabangan - Logika dan Algoritma

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

Page 19: Percabangan - Logika dan Algoritma

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