Algoritma Percabangan
Jejakmultimediasuryadi.blogspot.com
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.
Contoh. Misalnya kita ingin menentukan
apakah suatu bilangan merupakan bilangan genap atau ganjil. Algoritmanya dapat
kita jabarkan seperti berikut ini
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)
Ekspresi
di atas menunjukkan bahwa perintah menulis / menampilkan A dikerjakan hanya
jika kondisi A>B terpenuhi (bernilai benar). Jika yang terjadi adalah
sebaliknya, tidak ada aksi yang dilakukan atau proses langsung keluar dari
percabangan. Secara flowchart ekspresi itu dapat ditulis seperti berikut.
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)
Ekspresi di atas sedikit berbeda dengan
sebelumnya. Perintah menulis/menampilkan A dikerjakan hanya jika kondisi A>B
bernilai benar. Jika yang terjadi adalah sebaliknya maka aksi yang dilakukan
adalah menulis B. Secara flowchart aksi di atas dapat ditulis sebagai berikut.
Berikut ini adalah beberapa contoh
lainnya.
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
j ß m-n
else
i ß m/n
j ß m+n
write(i,j)
Studi Kasus
Jejakmultimediasuryadi.blogspot.com
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
Output : Keterangan
“Ganjil” atau “Genap"
Algoritma 2‑5
algoritma
bilangan_genap_ganjil
deskripsi
read
(bil)
ketß’ganjil’
if bil mod 2 = 0 then
ketß‘genap’
write
(ket)
Keterangan
: mod (modulus) adalah operator sisa pembagian.
Contoh 5 mod 2 = 1, atau 6 mod 3 = 0
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.
Tabel Penyimpanan Data Algoritma
2‑5
|
7. Perintah
|
8. bil
|
9. ket
|
10. Output
|
|
11. read
(bil)
|
12. 3
|
13.
|
14.
|
|
15. ketß’ganjil’
|
16.
|
17. ‘ganjil’
|
18.
|
|
19. if
bil mod 2 = 0 then
20. ketß‘genap’
|
21.
|
22.
|
23.
|
|
24. write
(ket)
|
25.
|
26.
|
27. ‘ganjil’
|
Untuk menyelesaikan soal di atas anda juga
dapat menggunakan algoritma if-then-else seperti berikut ini.
Algoritma 2‑6
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
Input : masa kerja, gaji
pokok
Output : gaji total
Algoritma 2‑7
algoritma
gaji_pegawai
deskripsi
read
(mk, gapok)
if
mk>3 then
tjg
ß 0.2*gapok
Jejakmultimediasuryadi.blogspot.com
Jejakmultimediasuryadi.blogspot.com
else
tjg
ß 0.1*gapok
gatot
ß gapok+tjg
write(‘Gaji total ’,gatot)
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
|
28. Perintah
|
29. mk
|
30. gapok
|
31. tjg
|
32. gatot
|
33. Output
|
|
34. read
(mk, gapok)
|
35. 2
|
36. 1000
|
37.
|
38.
|
39.
|
|
40. if
mk>3 then
41. tjg
ß
0.2*gapok
42. else
43. tjg
ß
0.1*gapok
|
44.
|
45.
|
46. 100
|
47.
|
48.
|
|
49. gatot
ß
gapok+tjg
|
50. 2
|
51. 1000
|
52. 100
|
53. 1100
|
54.
|
|
55. write(gatot)
|
56.
|
57.
|
58.
|
59.
|
60. 1100
|
Jadi keluaran algoritma :
1100
Jejakmultimediasuryadi.blogspot.com
Jejakmultimediasuryadi.blogspot.com
Ini Kalau Pake FlowCart:
Jejakmultimediasuryadi.blogspot.com
0 komentar:
Posting Komentar