Algoritma Percabangan Materi yang di pelajari : 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, 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.
UMG – Teknik Informatika
1
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.
Operasi boolean adalah operasi yang menggunakan operator boolean seperti and, or, not, xor.
Contoh operasi relasional
UMG – Teknik Informatika
2
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
-
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 :
UMG – Teknik Informatika
3
if then pernyataan
Jika 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.
A>B?
t
y Write(A)
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.
UMG – Teknik Informatika
4
-
Dua kondisi (if-then-else) : artinya ada dua kondisi yang menjadi syarat untuk
dikerjakannya dua jenis pernyataan. Bentuk umum percabangan dengan dua kondisi :
if then pernyataan1 else pernyataan2
Jika bernilai benar maka pernyataan1 dikerjakan. Sedangkan jika tidak ( 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 yang bernilai benar dan 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.
UMG – Teknik Informatika
5
A>B?
Write (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
d.
(‘bilangan negatif’)
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
UMG – Teknik Informatika
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
UMG – Teknik Informatika
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 read (bil) 3 ket’ganjil’ if bil mod 2 = 0 then ket‘genap’ write (bil)
ket
Output
‘ganjil’
‘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
UMG – Teknik Informatika
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
read (mk, gapok) if mk>3 then tjg 0.2*gapok else tjg 0.1*gapok endif gatot gapok+tjg write(gatot)
2
1000
tjg
gatot
Output
100
2
1000
100
1100 1100
Keluaran algoritma : 1100
UMG – Teknik Informatika
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
then if then Pernyataan1 else Pernyataan2 else If
UMG – Teknik Informatika
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
t
y
Kondisi
Pernyataan4
Pernyataan3
Kondisi
y
t Kondisi
Pernyataan2
y
Pernyataan1
Algoritma Kelipatan2Keliptan5 Deklarasi Bil : integer Ket : string
UMG – Teknik Informatika
11
Deskripsi read (bil) if bil mod 2 = 0 then if bil mod 5 = 0 then Ket ‘ Kelipatan 2 dan K elipatan 5’ else Ket ‘ Kelipatan 2 tapi Bukan K elipatan 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 Ket
: real : string
Deskripsi Read (IPK,MK) If (IPK>=3.5) and (MK<=4) then Ket ‘cum laude’ else Ket ‘tidak cumlaude’ write (Ket)
UMG – Teknik Informatika
12
Begin
read (IPK, MK)
(IPK>=3.5) and (MK <=4)
t
y ket <-- 'cum laude'
ket <-- 'tidak 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
UMG – Teknik Informatika
13
Ket
: string
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 dicapai.
’Tidak cumlaude’ harus ditulis dua kali agar tujuan algoritma dapat
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 then Pernyataan1 else if then Pernyataan2 ... else if then Pernyataan(n) else Pernyataan(n)
UMG – Teknik Informatika
14
Mula-mula dicek nilai kebenarannya. Jika benar, maka dikerjakan pernyataan1 . Jika salah, maka dicek nilai kebenaran . Jika
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
aksi1
t
y
aksi2
t
aksi(n+1)<--0
Pada algoritma di atas pernyataan1 akan dikerjakan jika bernilai benar, jika tidak pemeriksan dilanjutkan ke . Jika 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
UMG – Teknik Informatika
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 Disk0.4 else if jum>=50 then Disk0.25 else Disk0 Ttrhrg*(1-disk) Write(Ttr)
UMG – Teknik Informatika
16
Begin
read (hrg, jum)
jum>=100?
y
disk<--0.4
t
jum>=100?
`
y
disk<--0.25
t
disk<--0
ttr<--hrg*(1-disk)
write(ttr)
End
UMG – Teknik Informatika
17