Apakah Itu Algoritma
Ditinjau dari asal usul katanya kata Algoritma sendiri mempunyai sejarah yang aneh. Orang hanya menemukan kata Algorism yang berarti proses menghitung dengan angka arab. Anda dikatakan Algorist jika anda menghitung menggunakan Angka Arab. Para ahli bahasa berusaha menemukan asal kata ini namun hasilnya kurang memuaskan. Akhirnya para ahli sejarah matematika menemukan asal kata tersebut yang berasal dari nama penulis buku arab yang terkenal yaitu Abu Ja’far Muhammad Ibnu Musa Al-Khuwarizmi. Al- Khuwarizmi dibaca orang barat menjadi Algorism. Al-Khuwarizmi menulis buku yang berjudul Kitab Al Jabar Wal-Muqabala yang artinya “Buku pemugaran dan pengurangan” (The book of restoration and reduction).
Dari judul buku itu kita juga memperoleh akar kata “Aljabar” (Algebra). Perubahan kata dari Algorism menjadi Algorithm muncul karena kata Algorism sering dikelirukan dengan Arithmetic, sehingga akhiran –sm berubah menjadi- thm. Karena perhitungan dengan angka Arab sudah menjadi hal yang biasa. Maka lambat laun kata Algorithm berangsur-angsur dipakai sebagai metode perhitungan (komputasi) secara umum, sehingga kehilangan makna kata aslinya. Dalam Bahasa Indonesia, kata Algorithm diserap menjadi Algoritma.
Definisi 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 alatalat 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.
Mekanisme Pelaksanan Algoritma Oleh Pemroses
Komputer hanyalah salah satu pemroses. Agar dapat dilaksanakan oleh komputer, algoritma hasrus ditulis dalam notasi bahasa pemrograman sehingga dinamakan program. Jadi program adalah prwujudan atau implementasi teknis Algoritma yang ditulis dalam bahasa pemrogaman tertentu sehingga dapat dilaksanakan oleh komputer.
Belajar Memprogram Dan Belajar Bahasa Pemrograman
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 hanya dalam bahasa itu saja.
Sampai saat ini terdapat puluhan bahasa pemrogram. Yang dapat dibedakan berdasarkan tujuan dan fungsinya. Diantaranya adalah :
Belajar Memprogram
- Belajar memprogram ≠ belajar bahasa pemrograman
- Belajar memprogram : belajar tentang strategi pemecahan masalah, metodologi dansistematika 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 bahasa pemrograman : belajar memakai suatu bahasa pemrograman, aturan sintaks, tatacara untuk memanfaatkan instruksi yang spesifik untuk setiap bahasa
- Belajar bahasa pemrograman , titik berat : coder
Produk yang dihasilkan pemrogram :
- 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
Algoritma
Aksi :
Ø kejadian yang terjadi pada selang waktu terbatas (dimulai saat T0 dan berakhir pada saat T1)
Ø Menghasilkan efek netto yang terdefinisi dengan baik dan direncanakan
Contoh :
Ø Ibu Tati mengupas kentang untuk mempersiapkan makan malam..(luas ruang lingkupnya)
Ø Karena ruang lingkup luas, maka harus didefinisikan keadaan awal dan efek netto yang direncanakan ( Initial State dan Final State)
Ø Initial State (keadaan awal) : T0 kentang sudah ada dikantong kentang, dan ditaruh di rak dapur dimana ibu Tati akan mengupasnya
Ø Final State (keadaan akhir) : T1 kentang dalam keadaan terkupas di panci, siap untuk dimasak dan kantong kertasnya harus dikembalikan ke rak lagi.
Ø Kejadian : urut-urutan dari beberapa aksi yang terjadi secara berurutan.
Ø Efek kumulatif dari semua aksi yang terjadi menjadi efek netto dari kejadian
Ø Penggolongan suatu kejadian menjadi aksi adalah relatif tergantung dari sudut pandang. Contoh mengupas kentang dapat dijelaskan :
ü Ambil kantong kentang dari rak
ü Ambil panci dari almari
ü Kupas kentang
ü Kembalikan kantong kentang ke rak
Ø Contoh lain (jika tidak dipandang perlu untuk menjelaskan kantong kentang diambil dari rak sebelum ambil panci) :
ü Ambil kantong kentang dari rak dan ambil panci dari almari
ü Kupas kentang
ü Kembalikan kantong kentang ke rak
Jika esok hari ibu Tati mengupas kentang lagi untuk makan malam juga, dan kita mengamati hal-hal yang sama, apakah hal tsb bisa disebut sama ? Ini tergantung jawabannya bisa sama bisa tidak.Tidak karena ibu Tati tidak mungkin mengupas kentang yang sama dengan kemarin. Sama karena kemiripan pola yang dilakukan
Notasi Algoritma Independen Terhadap Bahasa Pemrograman Dan Mesin Komputer
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 itu, 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.
Pemrograman Prosedural
Algoritma berisi urutan langkah-langkah penyelesaian masalah. Ini berarti Algoritma adalah proses yang procedural.
Definisi Prosedural menurut Kamus Besar Bahasa Indonesia :
- Tahap-tahap kegiatan untuk menyelesaikan suatu aktivitas.
- 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.
ALGORITMA
1.1. Pendahuluan
Algoritma memegang peranan penting dalam bidang pemrograman. Sebegitu pentingnya suatu algoritma, sehingga perlu dipahami konsep dasar algoritma. Apalagi untuk seorang programer, tentu diperlukan suatu algoritma sehingga dapat membuat program yang lebih efektif dan efisien. Bagi kebanyakan orang, algoritma sangat membantu dalam memahami konsep logika pemrograman. Algoritma adalah kumpulan instruksi yang dibuat secara jelas untuk menunjukan langkah-langkah penyelesaian suatu masalah. Pada umumnya algoritma kurang lebih sama dengan suatu prosedur yang sering dilakukan setiap hari, misalnya prosedur untuk mengganti ban bocor/pecah, prosedur pemakaian telepon umum, prosedur membuat kue dan lain-lain.
Dalam bidang komputer, misalnya EDP (Elektronik Data Processing) atau MIS (Management Information System), algoritma sering dimanfaatkan untuk menyelesaikan suatu masalah atau untuk proses pengambilan keputusan. Seorang sistem analisis (analisist system) tentunya menggunakan algoritma untuk merancang suatu sistem. Bagi seorang programer, algoritma digunakan untuk membuat modul-modul program. Guna memahami suatu algoritma, harus dimiliki pengetahuan dasar matematika karena pada dasarnya algoritma lahir dari konsep logika matematika. Disini yang perlu dilatih adalah kemampuan logikanya agar benar-benar bisa menyusun langkah-langkah penyelesaian masalah dengan baik. Dalam buku ajar ini, disajikan konsep dasar dan analisis algoritma. Pada bagian konsep dasar dibahas komponen utama, desain, dan contoh pembuatan. Selanjutnya, untuk mendapatkan algoritma yang efisien serta mendapatkan rumusan matematika sebagai ukuran kerumitan (kompleksitas) maka dibahas analisis algoritma dengan menggunakan notasi O (big O).
1.2. Konsep Dasar 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. Dalam 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:
- Komponen masukan (input)
Komponen ini biasanya terdiri dari pemilihan variable, jenis variable, tipe variable, konstanta dan paramete (dalam fungsi).
- 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).
- 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).
Konsep Logika Matematika Format Algoritma FlowChart Algoritma Fundamental Knuth (1973) Pseudo Code
1.3. Diagram Alir
Algoritma ini menggunakan sejumlah simbol untuk menyatakan kegiatan-kegiatan secara keseluruhan. Simbol dan artinya dalam diagram alir sebagai berikut:
Proses Input dan output
Prosedur/ Sub routin Fungsi
Keputusan
Terminal
Hubungan Paralel
Ya Tidak
Garis alir
1.4. Kode Semu
Dalam merancang sebuah algoritma menggunakan kode semu, komponenkomponen input, output dan proses harus terdefinisi secara jelas. Disamping itu beberapa ketentuan dan aturan pendefinisian memang secara baku tidak ditemukan dalam beberapa buku literatur, namun aturan-aturan yang di ajukan dibawah ini akan membantu mempermudah perancangan algoritma dan evaluasi serta analisis algoritma.
Aturan-aturan tersebut :
- Kode semu harus dimulai dengan judul. Aturan ini secara mudah dapat dimengerti fungsi dan manfaatnya. Judul harus dapat menjelaskan spesifikasi masalah yang dirancang algoritmanya. Penulisannya dapat dengan huruf kapital semuanya atau tidak.
- Kode semu harus ditulis dengan nomor yang menunjukkan urutan-urutan langkahlangkah dalam algoritma.
- Pendeklarasian variabel, konstanta, parameter, rumus dan pernyataan harus sederhana
Bandingkan kedua algoritma ini. Masalah : Mencari akar-akar persamaan non linear dengan metode bagi dua.
A. Kode semu yang dirancang tidak menggunakan aturan.
Penyelesaian:
1. Formulasikan sebuah persaman non linier
2. Cari nilai bawah xb yang menyebabkan nilai fungsif(xb) positif atau negatif, kemudian cari nilai atas xa yang menyebabkan nilai fungsi f(xa) berlawanan (positif negatif) dengan nilai bawah.
3. Bandingkan nilai f(xb) dengan f(xa)
4. Jika f(xb).f(xa) > 0 maka ulangi langkah 2
5. Jika f(xb).f(xa) <>b dengan xa. Ulangi langkah 3
6. Jika f(xb).f(xa) = 0 maka iterasi berhenti, akar-akar persamaan x diperoleh
B. Kode semu yang dirancang menggunakan aturan
Penyelesaian:
Algoritma Bagi Dua
1. Formulasikan masalah f(x)
2. Cari taksiran bawah (xb) dan taksiran atas (xa)
3. Bandingkan dan evaluasi, jika f(xb).f(xa) > 0 maka ulangi langkah 2
4. Jika f(xb).f(xa) <>b+xa) / 2, kembali bandingkan dan evaluasi.
5. Jika f(xb).f(xa) = 0 maka iterasi berhenti, akar-akar persamaan x diperoleh Buku Ajar Metode Numerik, didanai oleh Proyek HEDS tahun 2002
1.5. Algoritma Fundamental
Knuth (1973) menyajikan format algoritma yang dapat digunakan secara bebas untuk berbagai bahasa pemrograman, artinya dapat dengan mudah diimplementasikan menggunakan Pascal, C, Fortran, PL atau BASIC. Secara umum notasi dan aturan yang digunakan sebagai berikut :
1. Nama/judul algoritma harus ditulis dengan huruf kapital
Contoh : Algoritma BAGI DUA
2. Berikan komentar dan penjelasan pendahuluan. Penjelasan secara singkat tentang algoritma.
Contoh : Algoritma BAGI DUA
Mencari akar persamaan dengan taksiran pertama xb dan xa
3. Langkah-langkah. Algoritma tersusun menurut nomor langkah-langkah diawali dengan ‘[......]’ untuk memberikan keterangan tentang langkah tersebut.
Contoh : 1. [formulasikan f(x)]
4. Komentar (comments). Komentar untuk penjelasan bagi pembaca ditulis dengan tanda (......)
5. Pernyataan dan struktur Kontrol
Pernyataan adalah perintah yang terdapat didalam algoritm, sedangkan struktur control untuk mengendalikan pernyataan yang digunakan.
Contoh Soal
Cara membuat titik di tengah layar
Algoritma cara membuat titik ditengah layar
- Mulai
- Input ' titik ( . ) '
- Baca titik
- Goto xy (37,13)
- Sampil titik ditengah layar
- Selesai