Apa Itu Algoritma?
Untuk Apa Algoritma digunakan?
Bagaimana mengaplikasikan Algoritma dalam pemrograman komputer?
pertanyaan seperti ini sangat sering terdengar ditelinga kita,dan saya membuat blog ini untuk menjawabnya
Ada beberapa definisi algoritma diantaranya adalah :
- 1. Algoritma adalah penyusunan langkah-langkah penyelesaian masalah dalam bentuk kalimat dengan jumlah kata terbatas tetapi tersusun secara logis dan matematis.
- Algoritma adalah suatu prosedur yang jelas untuk menyelesaikan suatu persoalan dengan menggunakan langkah-langkah tertentu dan terbatas jumlahnya.
- Algoritma adalah susunan langkah yang pasti, yang bila diikuti maka akan mentransformasi data input menjadi output yang berupa informasi.
Sejarah mencatat bahwa algoritma berasal dari sebuah kata al-khawarizmi yang berasal dari seorang muslim yang bernama lengkap Abu Ja’far Muhammad Ibnu Musa Al-Kwarizmi, beliau merupakan ahli matematika dan astronomi dari Persia, dan juga merupakan penulis buku “Aljabar wal Muqobala”. Beliau dianggap sebagai pencetus pertama algoritma karena di dalam buku tersebut Abu Ja’far menjelaskan langkah-langkah dalam menyelesaikan berbagai persoalan arirmatika (aljabar).
Menurut Donald E. Knuth penulis buku algoritma abad XX, menyatakan bahwa ada beberapa ciri algoritma, yaitu :
- Algoritma mempunyai awal dan akhir, suatu algoritma harus berhenti setelah mengerjakan serangkaian tugas. Dengan kata lain, suatu algoritma memiliki langkah yang terbatas.
- Setiap langkah harus didefinisikan dengan tepat, sehingga tidak memiliki arti ganda, tidak membingungkan (not ambiguous)
- Memiliki masukan (input) atau kondisi awal
- Memiliki keluaran (output) atau kondisi akhir
- Algoritma harus efektif, bila diikuti benar-benar maka akan menyelesaikan masalah.
Sesuai dengan ciri-ciri dari algoritma pada penjelasan di atas, maka dapat disimpulkan bahwa sifat suatu algoritma adalah :
- Input : Suatu algoritma mempunyai input atau kondisi awal sebelum dilaksanakan, bias berupa nilai-nilai peubah yang diambil dari himpunan khusus.
- Output : Suatu algoritma akan menghasilkan output setelah dilaksanakan. Suatu algoritma akan mengubah sebuah kondisi awal menjadi kondisi akhir, dimana nilai output diperoleh dari nilai input yang telah diproses melalui algoritma.
- Definiteness : Langkah-langkah yang dituliskan dalam algoritma terdefini dengan jelas sehingga mudah dilaksanakan oleh pengguna algoritma.
- Finiteness : Suatu algoritma harus memiliki kondisi akhir atau output setelah sejumlah langkah yang terbatas jumlahnya dilakukan terhadap setiap kondisi awal atau input yang diberikan.
- Effevtiveness : Setiap langkah dalam algortima dilaksanakan dalam suatu selang waktu tertentu sehingga pada akhirnya didapatkan solusi sesuai dengan yang diharapkan.
- Generality : Langkah-langkah algoritma berlaku untuk setiap himpunan input yang sesuai dengan persoalan yang diberikan, tidak hanya untuk himpunan tertentu.
Adapun secara garis besar bahasa pemrograman dikelompokkan menjadi :
- Bahasa pemrograman tingkat tinggi ( high-level language )
Adalah bahasa pemrograman yang berorientasi kepada bahasa manusia. Program yang dibuat dengan menggunakan bahasa pemrograman yang mudah dipahami oleh manusia, biasanya menggunakan bahasa inggris, misalnya IF, FOR, While, dll.
Contoh bahasa pemrograman tingkat tinggi adalah : C, C#, BASIC, PHP, VB, VB.NET, JAVA, dll.
- Bahasa pemrograman tingkat rendah ( low-level language )
Adalah bahasa pemrograman yang berorientasi kepada mesin. Bahasa ini hanya menggunakan kode biner ( hanya mengenal bilangan 0 dan 1 ) atau suatu kode sederhana untuk menggantikan kode-kode tertentu dalam system biner.
Contoh : kode ASCII yang merepresentasikan karakter ke dalam bilangan biner.
Dalam pemrograman yang sederhana, algoritma merupakan langkah pertama yang harus ditulis sebelum menuliskan program. Masalah yang dapat diselesaikan dengan pemrograman komputer adalah masalah-masalah yang berhubungan dengan perhitungan matematik.
Hal yang penting dikuasai dalam pemrograman adalah logika berpikir bagaimana cara memecahkan masalah pemrograman yang akan dibuat. Kadang-kadang ada masalah matematika yang sangat gampang jika diselesaikan secara tertulis, tetapi cukup sulit jika diterjemahkan ke dalam pemrograman. Jika menemukan hal seperti itu, maka algoritma dan logika pemrograman sangat penting untuk memecahkan masalah.
Sebagai gambaran, saya mengambil masalah Frekuensi data. Misalnya ada sekelompok data seperti berikut :
2 4 6 7 2 4 6 6 9 3 5 6 4
Secara tertulis, frekuensi data diperoleh dengan cara menghitung banyaknya tiap data dan menuliskan data mulai dari data yang terkecil ke terbesar dalam tabel. Kolom pertama berisi data dan kolom kedua berisi frekuensi masing-masing data.
Data | Frekuensi |
2 | 2 |
3 | 1 |
4 | 3 |
5 | 1 |
6 | 4 |
7 | 1 |
9 | 1 |
Cukup mudah bukan? Bagaimana jika cara mencari frekuensi di atas dibuat dalam bentuk program? Cukup sulit karena kita perlu menguasai logika pemrograman. Namun kasus ini akan saya bahas nanti, jika tidak ada halangan.
Selanjutnya kita akan belajar tentang....
Perbedaan Interpreter Dan Compiler
Interpreter adalah perangkat lunak yang mampu mengeksekusi code program (yang ditulis oleh programmer) lalu menterjemahkannya ke dalam bahasa mesin, sehingga mesin melakukan instruksi yang diminta oleh programmer tersebut. Perintah-perintah yang dibuat oleh programmer tersebut dieksekusi baris demi baris, sambil mengikuti logika yang terdapat di dalam kode tersebut. Proses ini sangat berbeda dengan compiler, dimana pada compiler, hasilnya sudah langsung berupa satu kesatuan perintah dalam bentuk bahasa mesin, dimana proses penterjemahan dilaksanakan sebelum program tersebut dieksekusi.
sedangkan Complier adalah program sistem yang digunakan sebagai alat bantu dalam pemrogaman.Perangkat lunak yang melakukan proses penterjemahan code (yang dibuat programmer) ke dalam bahasa mesin. Hasil dari terjemahan ini adalah bahasa mesin. Pada beberapa compiler, output berupa bahasa mesin dilaksanakan dengan proses assembler yang berbeda.
Untuk lebih jelas kita dapat melihat tabel dibawah ini
Interpleter
|
Compiler
|
Menerjemahkan
intruksi per intruksi
|
Menerjemahkan
secara keseluruhan
|
Source
program tidak harus di tulis lengkap
|
Source
program harus ditulis lengkap
|
Bila
terjadi keslahan intruksi dapat langsung diperbaiki secara interaktif
|
Bila
terjadi kesalahan kompilasi source program harus di benarkan dan proses
kompilasi harus diulang
|
Tidak
menghasilkan object program
|
Menghasilkan
object program
|
Pemrosesan
program berjalan lambat
|
Pemerosesan
program berjalan lebih cepat
|
Source
program diterjemahkan sekali pada saat kompilasi program
|
Dalam Algoritma ada tiga format penulisan yaitu
1. Deskriptif
Algoritma bertipe Deskriptif maksudnya adalah algoritma yang ditulis dengan bahasa manusia sehari-hari (misalnya Bahasa Indonesia atau Bahasa Inggris). Setiap Langkahnya ditulis dalam satu kalimat atau lebih. Tidak ada aturan untuk penulisan algoritma bertipe Deskriptif ini. Semua kalimat ditulis dengan sistematis, jelas, terbatas dan berurutan.
Contoh :
Algoritma bertipe Deskriptif maksudnya adalah algoritma yang ditulis dengan bahasa manusia sehari-hari (misalnya Bahasa Indonesia atau Bahasa Inggris). Setiap Langkahnya ditulis dalam satu kalimat atau lebih. Tidak ada aturan untuk penulisan algoritma bertipe Deskriptif ini. Semua kalimat ditulis dengan sistematis, jelas, terbatas dan berurutan.
Contoh :
- Algoritma menghitung_luas_segitiga
- Untuk menghitung Luas Segitiga pertama Masukan nilai alas
- Kemudian masukan nilai tinggiKemudian hitung dengan menggunakan rumus Luas = Alas * Tinggi / 2
- Cetak Luas
2. Flowchart (diagram alur)
1. Flowchart atau Bagan Alir adalah suatu skema / gambar yang memperlihatkan urutan urutan instruksi atau kegiatan dan hubungan antar proses beserta instruksinya.
2. Flowchart adalah penyajian yang sistematis tentang proses dan logika dari kegiatan penanganan informasi , Gambaran ini dinyatakan dengan symbol. Dengan demikian setiap symbol menggambarkan proses tertentu.
sedangkan antara proses digambarkan dengan Garis penghubung.
2. Flowchart adalah penyajian yang sistematis tentang proses dan logika dari kegiatan penanganan informasi , Gambaran ini dinyatakan dengan symbol. Dengan demikian setiap symbol menggambarkan proses tertentu.
sedangkan antara proses digambarkan dengan Garis penghubung.
Kegunaan:
1. Untuk Mendesain Program
2. Untuk Mempresentasikan Program
2. Untuk Mempresentasikan Program
Jenis:
1. Diagram Air System (System flowchart)
Bagan yang memperlihatkan urutan prosedur dan proses dari beberapa file dalam media tertentu.
System Flowchart Menggambarkan :a. Hubungan antar suatu file dengan file lainnya
b. Media yang dipakai untuk setiap File
2. Diagram Alir Program (Program FlowChart)
Bagan yang memperlihatkan urutan dan hubungan proses dalam suatu program.
Penulisan dengan menggunakan Bagan Alir sudah tidak banyak digunakan, dengan alasan
Penulisan dengan menggunakan Bagan Alir sudah tidak banyak digunakan, dengan alasan
a. Hanya cocok untuk masalah kecil
b. Memerlukan kemampuan menggambar yang baik,tetapi sangat bermanfaat jika digunakan untuk menggambarkan logika pemecahan masalah untuk pengajaran.
b. Memerlukan kemampuan menggambar yang baik,tetapi sangat bermanfaat jika digunakan untuk menggambarkan logika pemecahan masalah untuk pengajaran.
3. Pseudocode
Pseudo Code adalah cara penulisan algoritma yang hampir menyerupai Bahasa Pemrogramman. Selain itu biasanya Pseudocode menggnakan bahasa yang mudah dipahami secara Universal dan juga lebih ringkas dari pada Penulisan algoritma menggunakan Struktur Bahasa.
Jadi Pseudo Code digunakan untuk menggambarkan logika urutan-urutan dari programtanpa memandang bagaimana Bahasa Pemrogrammannya,
Jadi Pseudo Code digunakan untuk menggambarkan logika urutan-urutan dari programtanpa memandang bagaimana Bahasa Pemrogrammannya,
atau
Algoritma bertipe Pseudocode adalah tiruan atau imitasi dari kode bahasa pemograman. Pada dasarnya, pseudocode merupakan suatu bahasa yang memungkinkan programer untuk berfikir terhadap permasalahan yang harus dipecahkan tanpa harus memikirkan syntax dari bahasa pemograman yang tertentu. Jadi pseudocode digunakan untuk menganmbarkan logika urut-urutan dari perogram tanpa memandang bagaimana bahasa pemorogramannya.
Contoh :
http://staff.unipdu.ac.id/nufan/2013/09/24/pengantar-algoritma-dan-pemrograman/
http://se-cara.blogspot.co.id/2013/03/cara-penulisan-algoritma.html
http://belajaralprog.blogspot.co.id/2011/12/notasi-algoritma-algoritmik-atau.html
Algoritma menghitung_luas_segitigaSumber:https://rob13y.wordpress.com/2010/03/26/perbedaan-compiler-dengan-interpreter/
deklarasi:
luas,alas,tinggi : integer
deskripsi
read (alas)
read (tinggi)
luas ← alas * tinggi / 2
write (luas)
http://staff.unipdu.ac.id/nufan/2013/09/24/pengantar-algoritma-dan-pemrograman/
http://se-cara.blogspot.co.id/2013/03/cara-penulisan-algoritma.html
http://belajaralprog.blogspot.co.id/2011/12/notasi-algoritma-algoritmik-atau.html