Jumat, 12 Februari 2010

Algoritma dan Pemrograman

| No comment
Definisi Algoritma

Algoritma adalah logika, metode dan tahapan (urutan) sistematis yang digunakan untukmemecahkan suatu permasalahan.
Kamus besar bahasa Indonesia (Balai Pustaka 1988) secara formal mendefinisikan
algoritma sebagai:

Algoritma adalah urutan logis pengambilan putusan untuk pemecahan masalah.
Dari pengertian diatas sudah jelas bahwa algoritma tidak hanya identik dengan ilmu komputer atau teknik informatika, bahkan resep makanan merupakan suatu algoritma juga karena merupakan urutan sitematis untuk memecahkan masalah(membuat makanan)[MUN00]. Dan perlu diingat bahwa algoritma tidak terikat dengan bahasa pemrograman apapun, jadi dengan algoritma kita bisa menggunakan semua bahasa pemrograman yang kita mau. Yang terpenting algoritma harus dinyatakan langkah (dalam bentuk) yang dapat dimengerti oleh programmer lain . Jadi terserah kita mau bikin algoritmanya sebagai cerita atau gambar yang jelas orang lain bisa mengerti maksudnya. Dan sebagai programmer juga harus memiliki keahlian membaca algoritma. Sebagai analogi, Seorang pianis tidak dapat memainkan musik bila ia tidak mengerti not balok. Sama halnya dengan programmer, menurut [GOL88] seharusnya programmer mengerti setiap langkah dalam suatu algoritma, dan mengerjakan operasi yang bersesuaian dengan langkah tersebut.

Algoritma Vs Pemrograman
Kita mungkin sudah sering mendengar kata-kata algoritma dan pemrograman, apalagi bagi para mahasiswa teknik informatika, ilmu komputer, ataupun yang lainnya. Nah, kenapa judulnya “Algoritma Vs Pemrograman” ?? Mungkin dua kata tersebut sudah melekat disanubari kita, tapi jarang sekali yang paham bedanya, jikalau sudah paham apakah sudah diimplementasikan dengan benar?
Kita buat analogi sederhana, andaikan belajar pemrograman kita samakan dengan belajar mengendarai mobil. Maka jika kita belajar bahasa pemrograman Java, C#, atau delphi tak ubahnya seperti belajar mengendarai truk, sedan, atau bus. Jika kita sudah bisa mengendarai satu kendaraan itu pasti tidak akan sulit untuk mengendarai yang lain. Lha jika algoritma bagaimana? Tadi jika pemrograman sama saja dengan belajar mengendarai, tapi algoritma adalah belajar ngebut tapi selamat sampai tujuan. Dari analogi tersebut telah jelas beda Pemrograman dengan algoritma.

Let's start
Sekarang kita mulai mencoba dari penulisan apa ">variabel, kebanyakan bagi para mahasiswa(TI, ilmu komputer, dll) semester awal penulisan variabel pada program sangat kacau. Misalnya dengan simbol satu karakter (int a, int b, dll) yang tidak menggambarkan apa variabel itu dan apa tipe yang digunakan. Ya mungkin karena baris kode program hanya 20 baris, jadi sangat mudah mengoreksinya, tapi jika sampai 10000 baris atau lebih anda butuh orang 1 RW lebih untuk membantu mengoreksi kode program anda.
Solusinya: misalkan kita akan membuat variabel untuk Luas bangun dengan tipe data integer(bilangan bulat), maka kita sering menulisnya sebagai berikut :
int luas; //hanya menggambarkan variabel itu dibuat untuk menampung nilai luas

Jika kita ganti sebagai berikut :
int iLuas; //terdapat tambahan huruf I yang merepresentasikan tipe data integer
int[] iArrLuas; //Arr merupakan penanda bahwa variabel itu merupakan array
float[] fArrLuas; //Arr merupakan penanda bahwa variabel itu merupakan array dan f adalah penanda jika variabel bertipe float.



Cara penulisan diatas adalah contoh penulisan dengan style saya agar memudahkan debugging(mencari serangga/bug atau kesalahan yang bikin program saya error). Anda bisa menggantinya dengan style anda sendiri yang memudahkan anda. Misalkan iLuas diganti menjadi i_luas atau intLuas.
Setelah variabel kita menuju ke komputasi program, dengan sedikit manipulasi rumus kita bisa memperoleh proses perhitungan yang jauh lebih cepat. Saya ambil kasus kombinasi,



rumusnya adalah seperti ini C(n,r)= n! / (n-r)!r!



misalkan kita menghitung C(5,2), secara konvensional kita langsung menghitungnya seperti ini
C(5,4) = 5 x 4 x 3 x 2 x 1 / (3 x 2 x 1 x 2 x 1) =10→memerlukan 11 perhitungan
namun jika kita mengganti rumusnya menjadi C(n,r) = (n-r+1)*...*n / r! perhitungannya



menjadi C(5,4) = 4x5 / 1x2 =10→ memerlukan 5 perhitungan.



Dari contoh diatas mungkin hanya sedikit sekali selisihnya, namun jika jumlah perhitungan diatas mencapat ratusan ribu dan nilai kombinasinya juga besar maka akan sangat berpengaruh.
Saya ambil contoh kasus polinomial berderajat n, saya memakai derajat 5 saja,



f(x) =ax5+bx4+cx3+dx2+ex+f    →pada perhitungan biasa terdapat 15 perkalian dan 5 penjumlahan.



Nah, apakah apakah ">masih bisa dioptimasi lagi? Dulu awalnya saya ragu apakah itu bisa disederhanakan lagi? Pasti memfaktorkannya sulit. Ternyata tidak begitu susah, saya hanya bisa geleng-geleng kepala saja saat dijelaskan Pak Wayan waktu kuliah Algoritma dan Struktur Data 2. Bagaimana bentuk fungsi yang teroptimasi? Bentuknya sebagai berikut:



f(x) =(( (((ax+b)x+c)x+d)x+e)x+f) → hanya terdapat 5 perkalian dan 5 penjumlahan



Gampang kan!! → kata2nya Pak Wayan yang sering saya dengar waktu kuliah.
Sekian dulu sedikit ilmu yang saya dapat waktu kuliah Algoritma, semoga bermanfaat...
Referensi:
Catatan kuliah
[GOL88] Goldshlager, Les & Lister, Anfrew. Computer Science. A Modern Introduction.
Edisi kedua. Prentice hall. 1998
[MUN00] Munir, Rinaldi. Algoritma & Pemrograman Dalam Bahasa Pascal dan C Buku 1.
Edisi Kedua. Informatika. Bandung. 2000



Terima kasih Pak Wayan atas bimbingannya di kelas.
Tags :

Tidak ada komentar:

Posting Komentar

Popular Posts

Accordition