Minggu, 02 Juni 2013

Algoritma Percabangan

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
i  m*n
j  m-n  
else
i  m/n   
j  m+n
write(i,j)


Latihan : Cobalah anda buat flowchart dari algoritma di atas!
Studi Kasus         
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
Perintah bil ket Output
read (bil) 3
ket’ganjil’ ‘ganjil’
if bil mod 2 = 0 then
ket‘genap’
write (ket) ‘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 
else
  tjg  0.1*gapok
gatot  gapok+tjg
write(‘Gaji total ’,gatot)
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
tjg  0.1*gapok 100
gatot  gapok+tjg 2 1000 100 1100
write(gatot) 1100
Jadi keluaran algoritma : 
1100
Untuk mendownload Materi ini dalam format .doc Klik Disini

0 comment:

Posting Komentar