Kamis, 21 Oktober 2010

ALGORITMA

Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis dan logis.Kata Logis merupakan kata kunci dalam Algoritma. Langkah-langkah dalam Algoritma harus logis dan harus dapat ditentukan bernilai salah atau benar.
Algoritma Merupakan Jantung Ilmu Informatika
Algoritma adalah jantung ilmu komputer atau informatika. Banyak cabang ilmu komputer yang diacu dalam terminologi algoritma. Namun, jangan beranggapan algoritma selalu identik dengan ilmu komputer saja. Dalam kehidupan sehari-haripun banyak terdapat proses yang dinyatakan dalam suatu algoritma. Cara-cara membuat kue atau masakan yang dinyatakan dalam suatu resep juga dapat disebut sebagai algoritma. Pada setiap resep selalu ada urutan langkah-lankah membuat masakan. Bila langkah-langkahnya tidak logis, tidak dapat dihasilkan masakan yang diinginkan. Ibu-ibu yang mencoba suatu resep masakan akan membaca satu per satu langkah-langkah pembuatannya lalu ia mengerjakan proses sesuai yang ia baca. Secara umum, pihak (benda) yang mengerjakan proses disebut pemroses (processor). Pemroses tersebut dapat berupa manusia, komputer, robot atau alat-alat elektronik lainnya. Pemroses melakukan suatu proses dengan melaksanakan atau “mengeksekusi” algoritma yang menjabarkan proses tersebut.

Melaksanakan Algoritma berarti mengerjakan langkah-langkah di dalam Algoritma tersebut. Pemroses mengerjakan proses sesuai dengan algoritma yang diberikan kepadanya. Juru masak membuat kue berdasarkan resep yang diberikan kepadanya, pianis memainkan lagu berdasarkan papan not balok. Karena itu suatu Algoritma harus dinyatakan dalam bentuk yang dapat dimengerti oleh pemroses. Jadi suatu pemroses harus :

1. Mengerti setiap langkah dalam Algoritma
2. Mengerjakan operasi yang bersesuaian dengan langkah tersebut.

Belajar memprogram tidak sama dengan belajar bahasa pemrograman. Belajar memprogram adalah belajar tentang metodologi pemecahan masalah, kemudian menuangkannya dalam suatu notasi tertentu yang mudah dibaca dan dipahami. Sedangakan belajar bahasa pemrograman berarti belajar memakai suatu bahasa aturan-aturan tata bahasanya, instruksi-instruksinya, tata cara pengoperasian compiler-nya, dan memanfaatkan instruksi-instruksi tersebut untuk membuat program yang ditulis hanyam dalam bahasa itu saja. Sampai saat ini terdapat puluhan bahasa pemrogram. Yang dapat dibedakan berdasarkan tujuan dan fungsinya. Diantaranya adalah :

• Belajar memprogram ≠ belajar bahasa pemrograman
• Belajar memprogram : belajar tentang strategi pemecahan masalah, metodologi dan
sistematika pemecahan masalah kemudian menuliskannya dalam notasi yang
disepakati bersama
• Belajar memprogram : bersifat pemahaman persoalan, analisis dan sintesis
• Belajar memprogram, titik berat : designer program
• Belajar bahasa pemrograman : belajar memakai suatu bahasa pemrograman, aturan
sintaks, tatacara untuk memanfaatkan instruksi yang spesifik untuk setiap bahasa
• Belajar bahasa pemrograman , titik berat : coder
• program dengan rancangan yang baik (metodologis, sistematis)
• Dapat dieksekusi oleh mesin
• Berfungsi dengan benar
• Sanggup melayani segala kemungkinan masukan
• Disertai dokumentasi
• Belajar memprogram, titik berat : designer program

Notasi Algoritma dapat diterjemahkan ke dalam berbagai bahasa pemrograman. Analoginya sama dengan resep membuat kue. Sebuah resep dapat ditulis dalam bahasa apapun. Bahasa Jepang, Inggris, Perancis, Indonesia, dan lain sebagainya. Apapun bahasanya, kue yang dihasilkan tetap sama asalkan semua aturan pada resep diikuti. Mengapa demikian ? Karena setiap juru masak (sebagai pemroses) dapat melakukan operasi dasar yang sama, seperti mengocok telur, menimbang berat gula, dan lain sebagainya.

Demikian juga halnya dengan komputer. Meskipun setiap komputer berbeda teknologinya, tetapi secara umum semua komputer dapat melakukan operasi-operasi dasar dalam pemrograman seperti operasi pembacaan data, operasi perbandingan, operasi aritmatika, dan sebagainya. Perkembangan teknologi komputer tidak mengubah operasi-operasi dasar it, yang berubah hanyalah kecepatan, biaya, atau tingkat ketelitian. Pada sisi lain setiap program dalam bahasa tingkat tinggi selalu diterjemahkan kedalam bahasa mesin sebelum akhirnya dikerjakan oleh CPU. Setiap instruksi dalam bahasa mesin menyajikan operasi dasar yang sesuai, dan menghasilkan efek netto yang sama pada setiap komputer.


Algoritma berisi urutan langkah-langkah penyelesaian masalah. Ini berarti Algoritma
adalah proses yang procedural.

Definisi Prosedural menurut Kamus Besar Bahasa Indonesia :

1. Tahap-tahap kegiatan untuk menyelesaikan suatu aktivitas.
2. Metode langkah demi langkah secara eksak dalam memecahkan suatu masalah.

Pada pemrograman procedural, program dibedakan antara bagian data dengan bagian instruksi. Bagian instruksi terdiri atas runtutan (sequence) instruksi yang dilaksanakan satu per satu secara berurutan oleh pemroses. Alur pelaksanaan instruksi dapat berubah karena adanya pencabangan kondisional. Data yang disimpan di dalam memori dimanipulasi oleh instrusi secara beruntun atau procedural. Paradigma pemrograman seperti ini dinamakan pemrograman procedural.

Bahasa-bahasa tingkat tinggi seperti Cobol, Basic, Pascal, Fortran dan C mendukung kegiatan pemrograman procedural, karena itu mereka dinamakan juga bahasa procedural. Selain paradigma pemrograman procedural, ada lagi paradigma yang lain yaitu pemrograman berorientasi objek (Object Oriented Programming). Paradigma pemrograman ini merupakan trend baru dan sangat populr akhir-akhir ini. Paradigma pemrograman yang lain adalah Pemrograman Fungsional, Pemrograman Deklaratif dan Pemrograman Konkuren.


Definisi Algoritma


Prosedur                    : himpunan hingga instruksi, yg bersifat diskrit dan jelas,
  serta dapat  dijalankan secara mekanik.
  Secara mekanik maksudnya dapat dibuat program
  komputer.

Semi- Algoritma        : adalah prosedur yang mampu menghasilkan pemecahan
  atau solusi masalah, bila solusi memang ada, dan
  kemudian berhenti.

Algoritma                   : - semi algoritma yang mampu mendeteksi tidak adanya
    solusi, bila solusi memang tidak ada, dan mampu
    untuk berhenti.
  - suatu susunan langkah-langkah instruksi untuk
                                        menyelesaikan masalah.
           
Contoh :

Masalah :
            Tentukan akar kuadrat dari suatu bilangan bulat positif ! (akarnya
                                                                                       bilangan bulat positif)

Penyelesaiannya :

Semi algoritmanya :
1.      Baca bilangan bulat positif y
2.      Nyatakan nilai q = 0
3.      Hitung p = q x q
4.      Jika p = y maka q adalah akarnya, lalu berhenti
5.      Q ditambah 1
6.      Kembali ke langkah 3

Dari semi algoritma di atas, jika dijalankan
Untuk nilai y = 4, prosesnya adalah :
1.      y = 4
2.      q = 0
3.      p = 0
4.      p = y   ®  0 = 4 ? (salah)
5.      q = 1
6.      kembali ke langkah 3
3. p = 1
4. p = y  ®  1 = 4 ? (salah)
5.  q = 2
6.  kembali ke langkah 3

3. p = 4
4. p = y  ®  4 = 4 ? (benar)
5. berarti q = 2 adalah akarnya.
6. Proses berakhir.

Untuk nilai y = 5, maka prosesnya adalah :
1.      y = 5
2.      q = 0
3.      p = 0
4.      p = y  ®  0 = 5 ? (salah)
5.      q = 1
6.      kembali ke 3
3. p = 1
4. p = y  ®  4 = 5 ? (salah)
5. q = 3
6. kembali ke langkah 3

3. p = 9
4. p = y  ®  9 = 5 ? (salah)
5. q = 3
6. kembali ke 3
……
…..
                        dan seterusnya

Proses tersebut tidak akan pernah berhenti, karena untuk masalah nilai y = 5 tidak mempunyai solusi.

Urutan dari barisan langkah-lamgkah tersebut di atas (semi algoritma) dapat diubah menjadi algoritma. Dengan demikian proses akan berhenti atau berakhir baik dalam keadaan ada solusi maupun tidak ada solusi. Hal ini cukup dilakukan dengan penambahan satu instruksi di antara langkah ke-4 dan ke-5. Sehingga algoritmanya adalah :

1.      Baca bilangan bulat positif y
2.      Nyatakan nilai q = 0
3.      Hitung p = q x q
4.      Jika p = y maka q adalah akarnya, lalu berhenti
5.      Jika p > y maka y tidak punya akar, lalu benrhenti
6.      Q ditambah 1
7.      Kembali ke langkah 3



Dari algoritma di atas, jika dijalankan untuk nilai :
y = 4, prosesnya adalah :
1.      y = 4
2.      q = 0
3.      p = 0
4.      0 = 4 ? (salah)
5.      0 > 4 ? (salah)
6.      q = 1
7.      kembali ke 3
3.  p = 1
4. 1 = 4 ? (salah)
5. 1 > 4 ? (salah)
6. q = 2
7. kembali ke langkah 3
7.      p = 4
8.      4 = 4 ? (benar)
berarti q = 2 adalah akarnya.
Proses  berakhir.

Untuk y = 5, prosesnya adalah :
1.      y = 5
2.      q = 0
3.      p = 0
4.      0 = 5 ? (salah)
5.      0 > 5 ? (salah)
6.      q = 1
7.      kembali ke langkah 3
3. p = 1
4. 1 = 5 ? (salah)
5. 1 > 5 ? (salah)
6. q = 2
7. kembali ke langkah 3

3. p = 4
4. 4 = 5 ? (salah)
5 .5 ? (salah)
6. q = 3
7. kembali ke langkah 3

8.      p = 9
9.      9 = 5 ? (salah)
10.  9 > 5 ? (benar)
11.  berarti tidak punya akar.
Proses berhenti
    Sifat-sifat Algoritma :

1.      Banyaknya langkah instruksi yang hingga :
Banyaknya instruksi atau langkah haruslah berhingga, jika tidak demikian, proses yang dilakukan akan memerlukan waktu yang relatif lebih lama dan diperoleh hasil yang tidak diperlukan atau tidak berhubungan dengan masalah yang ada. Bahkan akan memungkinkan proses berlangsung terus walaupun solusi yang diharapkan sudah diperoleh.

2.      Harus jelas :
Penulisan dari setiap langkah yang terdapat didalam sebuah algoritma harus memiliki arti yang khusus dan spesifik, karena penulisan langkah bagi komputer berbeda dengan penulisan langkah bagi manusia.

3.      Batasan dari rangkaian proses :
Rangkaian proses yang berisi langkah-langkah dari suatu algoritma yang akan dilaksanakan harus ditetapkan dengan pasti.

4.      Batasan dari input dan output :
Input merupakan data yang dimasukkan ke dalam algoritma. Input tersebut harus sesuai dengan jenis algoritma yang bersangkutan. Output merupakan hasil yang dikeluarkan oleh komputer sebagai hasil dari pelaksanaan program.

5.      Efektivitas :
Instruksi dari sebuah algoritma dapat memerintahkan komputer agar hanya melaksanakan penugasan yang mampu dilaksanakannya saja. Komputer tidak dapat  melaksanakan instruksi, jika informasinya tidak lengkap, atau jika hasil dari pelaksanaan perintah tidak diberi batasan yang jelas.

6.      Batasan ruang lingkup :
Sebuah algoritma adalah diperuntukkan bagi suatu masalah tertentu.

Contoh 1.
Masalah :
            Tentukan bilangan terbesar diantara 3 bilangan bulat yang diberikan.

Algoritma :
1.      Baca (sebagai input) bilangan yang pertama, sebut sebagai NUM1
2.      Baca (sebagai input) bilangan yang kedua, sebut sebagai NUM2
3.      Bandingkan NUM1 dengan NUM2, kita ambil yang lebih besar, jika kedua bilangan tersebut sama besarnya, kita ambil NUM1, dan sebut bilangan tersebut BESAR.
4.      Baca (sebagai input) bilangan yang ketiga, sebut sebagai NUM3
5.      Bandingkan BESAR dengan NUM3 dan pilih yang lebih besar, jika keduanya sama besar, pilih BESAR, dan sebut bilangan tersebut BESAR
6.      Keluarkan, sebagai output, BESAR
7.      Selesai


Contoh 2.
Berikut ini perluasan dari masalah pada contoh 1.
Masalah :
Tentukan bilangan terbesar diantara N buah bilangan yang duberikan, dengan N lebih besar dari 2.

Algoritma :
1.      Input (masukkan) N
2.      Input (masukkan) bilangan yang pertama , sebut sebagai NUM1
3.      Input (masukkan) bilangan yang kedua ,sebut sebagai BESAR
4.      Buatlah pencacah atau counter untuk menghitung banyaknya bilangan yang sudah dibaca, sebut pencacah tersebut HITUNG. Istilah sebagai harga awal dari HITUNG adalah 2.
5.      Bandingkan NUM1 dengan BESAR, jika NUM1 lebih besar dari pada BESAR, tempatkan BESAR = NUM1.
6.      Jika HITUNG sama dengan N, output adalah BESAR, kemudian berhenti
7.      Jika HITUNG tidak sama dengan N, tambahkan 1 pada nilai HITUNG. Masukkan bilangan berikutnya sebut NUM1. Kemudian laksanakan lagi langkah ke- 5 ini.

1 komentar:

  1. ihh kk kok artikel'a ky memek si
    isi'a tentang algoritma

    staaaaaaakk..

    BalasHapus