Powered By Blogger

Struktur Algoritma

Bab.1
Struktur algoritma


Pada dasarnya, sebuah algoritma merupakan deskripsi pelaksanaan suatu proses. Algoritma itu sendiri disusun oleh sederetan langkah instruksi yang logis. Tiap langkah instruksi tersebut mengerjakan suatu tindakan (aksi). Bila suatu aksi dilaksanakan, maka sejumlah operasi yang bersesuaian dengan aksi itu dikerjakan oleh pemroses. Efek dari pengerjaan suatu aksi dapat diamati dengan membandingkan keadaan pada saat aksi belum dimulai (t0), dan keadaan pada saat aksi selesai dikerjakan (t1).
t0  : keadaan sebelum aksi dikerjakan
       aksi
t1 :  keadaan setelah aksi dikerjakan
Sebagai contoh, tinjau kembali algoritma yang menggambarkan proses mempertukarkan larutan dari dua buah bejana A dan B. Pada setiap pelaksanaan aksi amati keadaan awal dan keadaan akhir akhirnya
t0        : Bejana A berisi larutan berwarna merah, bejana B berisi larutan berwarna biru (bejana C masih kosong)

            1. Tuangkan larutan dari bejana A ke dalam bejana C
t1        : Bejana A kosong, bejana C berisi larutan berwarna merah

t0        : Bejana A kosong, bejana B berisi larutan berwarna biru

            2. Tuangkan larutan dari bejana B ke dalam bejana A
t1        : Bejana A berisi larutan berwarna biru, bejana B kosong

t0        : Bejana B kosong, bejana C berisi larutan berwarna merah

3. Tuangkan larutan dari bejana C ke dalam bejana B           
t1        : Bejana B berisi larutan berwarna merah, bejana A sudah berisi larutan berwarna biru (bejana C kosong)

Algoritma berisi langkah suatu masalah. Langkah-langkah tersebut dapat berupa runtunan aksi, pemilihan aksi, dan pengulangan aksi. Ketiga jenis langkah tersebut membentuk konstruksi suatu algoritma. Jadi, sebuah algoritma dapat dibangun dari tiga buah struktur dasar, yaitu:
  1. Runtunan (sequence)
  2. Pemilihan (selection)
  3. Pengulangan (repetition)

1. Runtunan
            Sebuah runtunan terdiri dari satu atau lebih instruksi. Tiap instruksi dikerjakan secara berurutan sesuai dengan urutan penulisannya, yakni sebuah instruksi dilaksanakan setelah instruksi sebelumnya selesai dilaksanakan. Urutan instruksi menetukan keadaan akhir algoritma. Bila urutan diubah, maka hasil akhirnya mungkin juga bisa berubah. Perhatikan runtunan instruksi berikut:
A1
A2
A3
A4
A5
Sebagai contoh, tinjau kembali algoritma mempertukarkan larutan di dalam dua buah bejana A dan B pada sessi sebelumnya.
Algoritma diatas disusun oleh runtunan yang terdiri atas 3 buah instruksi. Tiap instruksi dikerjakan secara berurutan, maka hasil akhir adalah hasil diinginkan. Bila instruksi diubah, maka hasil akhirnya pun juga berubah sehingga pertukaran isi dua buah bejana pun tidak benar. Karena itu, penting perlu memperhatikan urutan aksi di dalam sebuah runtunan. Urutan aksi di dalam runtunan mencerminkan cara berpikir si penyusun algoritma dalam menuliskan langkah-langkah pemecahan masalah.

2. Pemilihan
            Adakalanya sebuah instruksi dikerjakan jika kondisi tertentu dipenuhi. Contoh dalam algoritma pencarian data terkecil dilakukan dengan membanding-bandingkan data. Mula-mula data pertama dianggap data terkecil sementara (min). Kemudian membandingkan min dengan data ke-2, 3, ….. N. Selama proses perbandingan, bila data lebih kecil dari min, maka date ke-j itu menjadi min yang baru. Langkah terakhir ditulis dalam pernyataan berikut
Jika data ke-j lebih kecil dari min, maka
     isikan data ke-j sebagai min yang baru
Pernyataan diatas dapat ditulis dalam struktur umum
   if kondisi then
      aksi
 
Dalam bahasa indonesia, if berati “jika” dan then artinya “maka”. Kondisi adalah persyaratan yang dapat bernilai benar atau salah. Aksi hanya dilaksanakan apabila kondisi bernilai benar. Sebaliknya, apabila kondisi bernilai benar. Sebaliknya apabila bernilai salah, maka aksi tidak dilaksanakan. Kata yang digarisbawahi, if dan then, merupakan kata kunci (keywords) untuk struktur pemilihan ini.
Struktur pemilihan if-then hanya memberikan satu pilihan aksi bila kondisi (persyartan) dipenuhi (bernilai benar), dan tidak memberi pilihan aksi lain bila kondisi bernilai salah.
Bentuk pemilihan yang lebih umum ialah pemilihan satu dari dua buah aksi bergantung pada nilai kondisinya. 

Apabila pilihan aksi yang dilakukan lebih dari dua buah, maka struktur pemilihannya menjadi lebih rumit, seperti pada contoh berikut (pemilihan bersarang)
if lampu pengatur lalu lintas berwarna merah then
   anda harus berhenti
else
   if lampu pengatur lalu lintas berwarna kuning then
      anda boleh jalan tapi dengan hati-hati
   else
      anda dipersilahkan terus berjalan
Perhatikanlah bahwa penggunaan indentasi (rongak kosong) membuat algoritma menjadi lebih mudah dibaca. Tanpa indentasi, algoritma menjadi lebih sulit dibaca, misalnya algoritma ditulis seperti dibawah ini
if lampu pengatur lalu lintas berwarna merah then
anda harus berhenti
Else if lampu pengatur lalu lintas berwarna kuning then
anda boleh jalan tapi dengan hati-hati else
anda dipersilahkan terus berjalan
Perancang algoritma sangat dianjurkan membuat indentasi agar algoritma yang dibuat lebih mudah dibaca.
Contoh lain dari pemilihan bersarang adalah menentukan bilangan terbesar dari tiga buah bilangan: x, y, dan z.
if x > y then
   if x > z then
    tulis x sebagai bilangan terbesar
   else
                tulis z sebagai bilangan terbesar
else   
   if y > z then
       tulis y sebagai bilangan terbesar
   else
       tulis z sebagai bilangan terbesar
Kelebihan struktur pemilihan terletak pada kemampuannya yang memungkinkan pemroses mengikuti jalus aksi yang berbeda berdasarkan kondisi yang ada. Tanpa struktur pemilihan, kita tidak mungkin menulis algoritma untuk permasalahan praktis yang demikian kompleks.

3. Pengulangan
            Salah satu kelebihan komputer adalah kemampuannya untuk mengerjakan  pekerjaan yang sama berulang kali tanpa mengenal lelah.
Sewaktu duduk di sekolah dasar, bila anda pernah dihukum oleh guru untuk menuliskan sebuah kalimat sebanyak 500 kali, misalnya dikarenakan anda nakal tidak mengerjakan PR. Misalkan kalimat yang harus ditulis 500 kali tersebut adalah:
“Saya berjanji tidak akan nakal dan malas lagi”
Bila pekerjaan menulis kalimat ini diserahkan kepada komputer, maka pemrogram mungkin menuliskannya sebagai berikut:
 Algoritma menulis 500 kalimat

Deskripsi :
1. Saya berjanji tidak akan nakal dan malas lagi
2. Saya berjanji tidak akan nakal dan malas lagi
3. Saya berjanji tidak akan nakal dan malas lagi
4. Saya berjanji tidak akan nakal dan malas lagi
....
500

Tentu saja algoritma untuk menuliss 500 buah kalimat seperti diatas tidak elegan, karena instruksi
        “Saya berjanji tidak akan nakal dan malas lagi”harus dibuat di dalam teks algoritma sebanyak 500 kali. Untuk mengatasi hal ini, maka anda dapat menggunakan struktur pengulangan for-do sehingga algoritma menulis 500 buah kalimat dapat ditulis sebagai berikut:

Algoritma menulis 500 kalimat 

Menuliskan kalimat " Saya berjanji tidak akan nakal dan malas lagi " Sebanyak 500 kali.

Deskripsi :
for J dari 1 sampai 500 do
     t tulis kalimat " Saya berjanji tidak akan nakal dan malas lagi "

J adalah pencacah pengulangan yang dari 1 sampai 500. Komputer akan melaksanakan aksi tulis kalimat tersebut sebanyak 500 kali. Struktur pengulangan ini dapat ditulis secara umum sebagai berikut:
for pencacah pengulangan dari 1 sampai N do
    aksi
Struktur pengulangan yang kedua adalah REPEAT yang terdiri atas kata kunci repeat-until (repeat artinya “ulangi”  dan until artinya “sampai” atau “hingga”) yang mempunyai bentuk umum sebagai berikut:
repeat
   aksi
Until kondisi
yang artinya adalah pengulangan aksi dilakukan hingga kondisi (persyaratan) berhenti terpenuhi.
Struktur pengulangan yang ketiga adalah WHILE dengan kata kunci while-do (while artinya “selagi” atau “selama” dan do artinya “lakukan”) yang mempunyai bentuk umum sebagai berikut:
while kondisi do
   aksi
yang artinya adalah selama kondisi (persyaratan) pengulangan masih benar, maka aksi dikerjakan. Perbedaannya dengan repeat-until, jika pada repeat-until kondisi pengulangan dievaluasi diakhir, sedangkan pada while-do kondisi pengulangan dievaluasi di awal perhitungan.
Meskipun struktur repeat-until dan while-do mempunyai fungsi yang mirip sehingga pada beberapa kasus dapat saling menggantikan, namun secara umum penggunaannya bergantung pada spesifikasi masalah.
  1. Tiga pasang suami istri yang sedang menempuh perjalanan sampai ke sebuah sungai. Di situ mereka menemukan sebuah perahu kecil yang hanya bisa membawa tidak lebih dari dua orang setiap kali menyebrang. Penyebrangan sungai dirumitkan oelh kenyataan bahwa para suami istri sangan pencemburu dan tidak mau meninggalkan istri-istri mereka jika ada lelaki lain. Tulislah alogaritma untuk menunjukan bagaimana penyebrangan itu bisa dilakukan.
  2. Sebuah tabel terdiri atas kolom NIM, Nama, Alamat, dan Nomor Telpon. Tabel tersebut sudah berisi data utama sekumpulan mahasiswa di sebuah Perguruan Tinggi. Misalkan seorang mahasiswa pindah kos sehingga alamat dan nomor mengubah kolom Alamat dan Nomor Telpon dari mahasiswa dengan NIM tertentu.