Algoritma Pemrograman


Konsep algoritma
Algoritma adalah kumpulan instruksi/perintah yang dibuat secara jelas dan sistematis berdasarkan urutan yang logis (logika) untuk penyelesaian suatu masalah. French,C.S. (1984) menyatakan sejumlah konsep yang mempunyai relevansi dengan masalah rancangan program yaitu kemampuan komputer, kesulitan dan ketepatan.
Penerapan dari konsep tersebut biasanya digunakan dalam rancangan algoritma. alam merancang sebuah algoritma, Fletcher (1991) memberikan beberapa cara atau metode yaitu  kumpulan perintah, ekspresi, tabel instruksi, program komputer, kode semu dan flow chart, sedangkan Knuth (1973) menyarankan algoritma fundamental. Untuk keperluan matematika dan program komputer metode yang sering digunakan yaitu : 

1.      Diagram Alir (Flow Chart)
2.      Kode Semu (Pseudo Code)
3.      Algoritma Fundamental

Knuth (1973) menyatakan 5 komponen utama dalam algoritma yaitu finiteness, definiteness, input, output dan effectiveness. Sehingga dalam merancang sebuah algoritma ada 3 (tiga) komponen yang harus ada yaitu:
1.      Komponen masukan (input)
Komponen ini biasanya terdiri dari pemilihan variable, jenis variable, tipe variable, konstanta dan parameter (dalam fungsi).
2.      Komponen keluaran (output)
Komponen ini merupakan tujuan dari perancangan algoritma dan program.
Permasalahan yang diselesaikan dalam algoritma dan program harus ditampilkan dalam komponen keluaran. Karakteristik keluaran yang baik adalah benar (menjawab) permasalahan dan tampilan yang ramah (Frendly).
3.      Komponen proses (processing)
Komponen ini merupakan bagian utama dan terpenting dalam merancang sebuah algoritma. Dalam bagian ini terdapat logika masalah, logika algoritma (sintaksis dan semantik), rumusan, metode (rekursi, perbandingan, penggabungan, pengurangan dan lain-lain).
===========================================================================
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
t1 :  keadaan setelah aksi dikerjakan

Contoh algoritma menghidupkan laptop :
Aksi : Tekan tombol power pada laptop.
t0 : Tombol power computer mati
t1 : Tombol power computer menyala.

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 : ambil sebuah gelas
A2 : isi piring dengan air
A3 : sajikan di atas meja makan
Algoritma diatas disusun oleh runtunan yang terdiri atas 4 buah instruksi. Tiap instruksi dikerjakan secara berurutan, maka hasil akhir adalah hasil diinginkan. Bila instruksi diubah, maka hasil akhirnya pun juga berubah sehingga penyajian segelas air diatas meja makan menjadi 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
     end if

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 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
end if

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
   if y > z then
       tulis y sebagai bilangan terbesar
   else
       tulis z sebagai bilangan terbesar
end if

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 100 kali, misalnya dikarenakan anda nakal tidak mengerjakan PR. Misalkan kalimat yang harus ditulis 100 kali tersebut adalah:
“Saya berjanji tidak akan nakal lagi”
Bila pekerjaan menulis kalimat ini diserahkan kepada komputer, maka pemrogram mungkin menuliskannya sebagai berikut:

Algoritma menulis 100 kalimat
Deskripsi :
1. Saya berjanji tidak akan nakal lagi
2. Saya berjanji tidak akan nakal lagi
3. Saya berjanji tidak akan nakal lagi
4. Saya berjanji tidak akan nakal lagi
Dst..

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

Algoritma menulis 100 kalimat 
Menuliskan kalimat " Saya berjanji tidak akan nakal dan malas lagi " Sebanyak 100 kali.
Deskripsi :
for J dari 1 sampai 100 do
     t tulis kalimat " Saya berjanji tidak akan nakal 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
end for

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. 
===========================================================================
algoritma menggunakan bahasa natural
Bahasa Natural merupakan cara penyajian suatu algoritma yang paling sederhana dan paling mudah. Mengapa? Mungkin karena Bahasa Natural adalah bahasa yang biasa kita gunakan sehari – hari namun tetap sesuai dengan kaidah bahasa yang baku. Ada beberapa hal yang perlu diperhatikan jika kita akan menyajikan suatu algoritma sebuah program dengan bahasa natural, antara lain Start dan End yang harus dituliskan secara explisit. Sepengalaman saya dalam menggunakan Bahasa Natural, Start biasanya dituliskan sebagai ‘inisialisasi’ atau ‘Mulai’ dan merupakan langkah pertama dalam algoritma, sedangkan End sendiri dituliskan sebagai ‘selesai’ dan dituliskan pada akhir algoritma. Namun sebenarnya tidak ada aturan baku dalam hal penamaan lain dari Start dan End itu sendiri, jadi terserah namun tetap mengandung arti/maksud yang sama.
Salah satu contoh sederhana adalah algoritma untuk menentukan sebuah bilangan adalah ganjil atau genap . Jadi diberikan input sebuah bilangan dari user, dan program akan secara otomatis menentukan dan memberikan output berupa informasi genap atau ganjil. Coba perhatikan :
1.  Inisialisasi
2.  Input sebuah bilangan, masukkan ke dalam sebuah variabel, misalkan saja bil.
3.  Apakah bil modulus 2 sama dengan nol?
     –  Jika ya, maka bilangan tersebut adalah bilangan genap.
     –  Jika tidak, maka sudah dapat dipastikan bahwa bilangan tersebut adalah bilangan ganjil.
4.  Tampilkan jenis bilangan (genap, atau ganjil).
5.  Apakah ingin mengulang proses?
     –  Jika ya, kembali ke langkah 2.
     –  Jika tidak, langsung ke langkah 5 (selesai).
5.  Selesai.


|=| Lanjut ke algoritma 2 |=|

No comments:

Post a Comment