You are on page 1of 7

SEJARAH DAN PENGERTIAN ALGORITMA

ALGORITMA
Sebagai sebuah mesin yang dapat digunakan sebagai alat bantu dalam menyelesaikan
masalah, yang tentunya tidak dapat langsung diserahkan begitu saja ke komputer dalam
menyelesaikannya. Dalam hal ini, masalah yang akan diselesaikan oleh komputer terlebih
dahulu dilakukan perumusan langkah demi langkah penyelesain suatu masalah dalam
rangkaian instruksi yang selanjutnya komputer akan menjalankan instruksi-instruksi tersebut.
Sekumpulan instruksi yang merupakan penyelesaian masalah yang disebut program.
Agar supaya komputer dapat mengerjakan/melaksakan program tersebut, seharusnya ditulis
kedalam bahasa yang dapat dimengerti/dipahami oleh komputer. Karena komputer
merupakan sebuah mesin, program ditulis dalam bahasa yang khusus dibuat agar dapat
berkomunikasi dengan komputer. Bahasa yang digunakan dalam hal ini disebut bahasa
pemrograman. Beberapa bahasa pemprograman yang dikenal seperti BASIC, PASCAL,
FORTRAN, COBOL, C/C++/C#, PROLOG, LISP, Assembler dsb.
Orang mempelajari suatu bahasa pemrograman melalui aturan tata bahasanya. Bahasa
pemrograman yang berbeda menpunyai aturan tata bahasa yang berbeda pula. Sebua bahasa
yang sama dapat mempunyai beberapa versi (sesuai perkembangannya) dan setiap versi
dirancang untuk komputer atau lingkungan system operasi tertentu. Pemrogram sangat terikat
dengan aturan bahasa dan spesifikasi mesin yang akan menjalankannya. Dengan
berkembangnya teknik pemprograman terstruktur, orang tidak lagi memecahkan masalah
dengan langsung menuliskan programnya dalam bahasa pemrograman. Orang lain mulai
memikirkan suatu cara penyelesain masalah yang akan deprogram dengan menekankan
desain (rancangan yang mewakili pemecahan masalah tersebut).desain ini independent dari
bahasa pemrograman yang digunakan dan komputer yang mejalankan program. Desai
menyajikan cara berpikir si program dalam menyelesaikan masalah. Desain berisi urutan
langkah-langkah pencapaian solusi yang ditulis dalam notasi-notasi deskriptif. Urutan
lamgkah-langkah yang sistematis untuk menyelesaikan sebuah masalah dinamakan algoritma.

A. Sejarah algoritma
Sebelum membahas defenisi algoritma terlebih dahulu kita mengenal asal muasal kata
algoritma tersebut. Algoritma diambil dari nama ilmuwan ahli matematika dari uzbekistan
bernama Jafar mohammad Ibn Musa Al-khuwarizmi (algorizm) dalam kitabnya yang berjudul
al jabr w` al-muqabala yang artinya buku pemugaran dan pengurangan ( rules of restoration
and reduction) sekitar tahun 825. Kata algorizm menjadi populer karena populernya angka
arab digunakan dalam perhitungan masa kini. Lebih lanjut, kata algorithm berubah menjadi
algoritma setelah pemrograman komputer dimulai di indonesia.
B.Defenisi algoritma
Adapun defenisi algoritma yaitu sebagai berikut
1.Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara
sistematis. (Rinaldi Munir, 2006)
2.Algoritma diartikan sebagai prosedur langkah demi langkah untuk memecahkan masalah
atau penyelesaian tugas khususnya dengan menggunakan bantuan komputer (merriamwebster`s Collegiate Dictionary).
3.Algoritma sebagai urutan logis pengambilan keputusan untuk pemecahan masalah (Kamus
Besar Bahasa Indonesia)

4.Algoritma adalah teknik penyusunan langkah demi langkah penyelesaian masalah dalam
bentuk kalimat singkat dengan jumlah kata terbatas, namun tersusun secara logis sistematis
(suarga, 2006).
5.Teknik penyusunan langkah-langkah penyelesaian masalah dalam bentuk kalimat dengan
jumlah terbatas tetapi tersusun secara logis dan sistematis.
6.Prosedur yang jelas untuk menyelesaikan suatu persoalan dengan menggunakan langkahlangkah tertentu dan terbatas jumlahnya.
Berdasarkan beberapa petikan defenisi, bahwa algoritma merupakan urutan langkah yang
logis dan mengikuti suatu urutan tertentu, tidak boleh melompat-lompat (Microsoft Press
Computer and internet Dictionaary 1997, 1998). Ini berarti, hasil dari urutan langkah-langkah
tersebut harus dapat ditentukan, benar atau salah. Langkah-langkah yang tidak benar dapat
memberi hasil yang salah. Dan, alur pemikiran dalam menyelesaikan suatu pekerjaan yang
dituangkan secara tertulis menyebatkan alogaritma seseorang dapat juga berbeda dari
alogaritma yang lain, yang tertuang dalam bentuk kalimat, gambar, atau table tertentu (Moh.
Sjukani, Algoritma dan struktur data dengan C, C++, dan JAVA).
Dalam bidang komputer, algoritma sangat diperlukan dalam menyelesaikan berbagai masalah
pemprograman, terutama dalam komputasi numeris. Tanpa algoritma yang dirancang baik,
maka proses pemprograman akan menjadi salah atau rusak, lambak dan tidak efisien.
Penulisan algoritma tidak tergantung dari spesifikasi bahasa pemprograman dan komputer
yang mengeksekusinya. Notasi alogaritma bukan notasi bahasa pemprograman tetapi dapat
diterjemahkan kedalam berbagai bahasa pemprograman.
Penulisan algoritma dapat dilakukan dengan cara berikut:
1.Menggunakan bahasa natural (bahasa indonesia, bahasa inggris atau bahasa yang di
mengerti oleh manusia), kendala yang sering muncul adalah pernyataan yang dibuat
menggunakan bahasa natural adalah sering menimbulkan kebingungan (ambiguous).
2.Menggunakan flowchard (diagram alir). Pengguna diagram ali dalam algoritma lebih baik
dibanding pain 1, karena alogaritma dalam bentuk flowchart baik secara visual tetapi bila
algoritmanya panjang maka flowchartnya juga menjadi repot.
3. menggunakan pseudo-code. Penulisan ini dekat pada bahasa pemprograman namun sulit
dimengerti oleh orang yang tidak mengerti pemrograman

C.Jenis jenis algoritma


Terdapat beragam klasifikasi algoritma dan setiap klasifikasi mempunyai alasan tersendiri.
Salah satu cara untuk melakukan klasifikasi jenis-jenis algoritma adalah dengan
memperhatikan paradigma dan metode yang digunakan untuk mendesain algoritma tersebut.
Beberapa paradigma yang digunakan dalam menyusun suatu algoritma akan dipaparkan
dibagian ini. Masing-masing paradigma dapat digunakan dalam banyak algoritma yang
berbeda.
1.Divide and Conquer, paradigma untuk membagi suatu permasalahan besar menjadi
permasalahan-permasalahan yang lebih kecil. Pembagian masalah ini dilakukan terus
menerus sampai ditemukan bagian masalah kecil yang mudah untuk dipecahkan. Singkatnya
menyelesaikan keseluruhan masalah dengan membagi masalah besar dan kemudian
memecahkan permasalahan-permasalahan kecil yang terbentuk.
2.Dynamic programming, paradigma pemrograman dinamik akan sesuai jika digunakan pada
suatu masalah yang mengandung sub-struktur yang optimal (, dan mengandung beberapa

bagian permasalahan yang tumpang tindih . Paradigma ini sekilas terlihat mirip dengan
paradigma Divide and Conquer, sama-sama mencoba untuk membagi permasalahan menjadi
sub permasalahan yang lebih kecil, tapi secara intrinsik ada perbedaan dari karakter
permasalahan yang dihadapi.
3.Metode serakah. Sebuah algoritma serakah mirip dengan sebuah Pemrograman dinamik,
bedanya jawaban dari submasalah tidak perlu diketahui dalam setiap tahap; dan
menggunakan pilihan "serakah" apa yang dilihat terbaik pada saat itu.
D.Syarat/ciri Algoritma
Syarat sebuah algoritma yang baik menurut Donald E. Knuth sebagai berikut:
1.Finiteness
Algoritma harus berakhir setelah melakukan sejumlah langkah proses.
2.Definiteness
Setiap langkah algoritma harus didefenisikan dengan tepat dan tidak menimbulkan makna
ganda. Sehingga, langkah yang tepat menuliskan algoritma adalah dengan menggunakan
languange (bahasa pemprograman computer).
3.Input
Setiap algoritma memerlukan data sebagai data untuk masukan untuk diolah.
4.Output
Setiap algoritma memberikan satu atau beberapa hasil luaran.
5.Effectiveness
Langkah-langkah algoritma dikerjakan dalam waktu yang wajar sebisa mungkin harus dapat
dilaksanakan dan efektif.
E.Jenis Proses Algoritma
Jenis proses Algoritma sebagai berikut:
1.Sequace Process merupakan Instruksi dikerjakan secara sekuensial (berurutan).
2.Selection Process merupakan Instruksi dikerjakan jika memenuhi kriteria tertentu.
3.Interation Process merupakan Instruksi dikerjakan selama memenuhi suatu kondisi tertentu.
4.Concurret Process merupakan beberapa instruksi dikerjakan secara bersama.
F.Algoritma sebagai subbidang ilmu komputer
Ilmu komputer (computer science) adalah ilmu pengetahuan yang berisi tentang teori,
metodologi, desain dan implementasi, yang berhubungan dengan komputasi, komputer dan
algoritmanya dalam perspektif perangkat lunak (sofware) maupun perangkat keras
(hardware). Ilmu komputer sangat berkaitan erat dengan algoritma, hampir semua bidang dari
ilmu komputer (computer science) tidak terlepas dari algoritma. Bahkan pada saat ini, studi
tentang algoritma telah menjadi subbidang khusus dalam ilmu komputer. Studi atau ilmu
yang mempelajari tentang algoritma sering disebut dengan istilah algorithmics.
Pembahasan
A.PENULISAN DAN STRUKTUR DASAR ALGORITMA
Perlu diketahui bahwa algoritma bukan bahasa pemrograman, sehingga setiap orang dapat
membuat notasi algoritmik (notasi-notasi deskriptif) yang berbeda. Notasi algoritmik, bukan
notasi baku bila dibandingkan dengan bahasa pemprograman, yang dibuat merupakan notasi
yang mudah dibaca dan dimengerti untuk menghindari terjadinya kekeliruan.
1.Penulisan menggunakan Flow chart
Bagan alir merupakan diagram yang tersusun dari symbol-simbol atau bagan-bagan yang
berbada, sesuai dengan jenis dan perintahnya, yang mempunyai aliran untuk menggambarkan
langkah-langkah penyelesaian suatu masalah (memperlihatkan urutan dan hubungan antara

proses beserta instruksinya). Bagan alir merupakan suatu cara penulisan algoritma yang
bertujuan memudahkan dalam penulisan/perencangan program.
Berikut symbol-simbol bagan alir yang digunakan dalam penulisan algoritma

Perlu dipahami bahwa, tidak ada kaida yang baku dalam penggunaan bagan alir diatas karena
merupakan gambaran hasi analisis suatu masalah. Bagan alir dapat bervariasi antara satu
pemprogram dengan pemprogram lainnya. Secara garis besar, bagan alir terdiri dari 3 bagian
utama yaitu, input, proses, dan, output.
Hal-hal yang perlu diperhatikan dalam pembuatan bagan alir adalah:
1.Hindari pengulangan proses yang tidak perlu dan logika yang berbelit-belit sehingga
jalannya proses menjadi singkat.
2.Jalannya proses digambarkan dari atas ke bawah dan berikan tanda panah untuk
memperjelas.
3.Sebuah flowchart diawali dari satu tiik START (mulai) dan akhiri dengan END (selesai)
2.Penulisan menggunakan Pseudo-code
Ilmuwan komputer menyukai menuliskan algoritma agar lebih praktis yaitu notasi pseudo
code. Pseudo code (pseudo berarti semu atau tidak sebenarnya) merupakan notasi yang mirip
dengan notasi bahasa pemprograman. Pseudo code merupakan campuran antara bahasa alami
(natural) dengan bahasa pemprograman. Kemudahan menggunakan pseudo code adalah
kemudahan menkonversikan (mentralisasi) ke nota bahasa pemprograman karena terdapat
korespondin (hubungan yang saling terkait) antara setiap pseudo code dengan notasi bahasa
pemprograman.
Pedoman yang perlukan diketahui bagaimana menyusun pseudo code yang digunakan adalah
1.Notasi dipakai untuk memberikan nilai ke suatu variabel.
2.Setiap pernyataan atau suatu perintah yang dapat berdiri sendiri akan ditulis dalam sebuah
baris tersendiri.
3.Setiap variable (nama yang digunakan untuk menyimpan data yang dapat diubah-ubah)
akan ditulis dengan awalan huruf.
4.tipe data majemuk atau disebut tipe data rekaman (tipe data yang dapat mengandung
beberapa data dengan nama yang berbeda-beda ).
5.Indentasi (penjorokan ke kanan) digunakan untuk menuliskan pernyataan yang berada
dalam suatu struktur blok.
6.Symbol // digunakan untuk menyatakan komentar (keterangan yang ditujukan untuk
pembaca algoritma, tidak ditujukan untuk proses oleh komputer).
7.Notasi masukkan ( ) dan tampilkan ( ) secara berurutan mewakili perintah untuk
memperoleh masukan dan menyajikan keluaran.
8.Nilai logika yang dapat dipakai untuk membandingkan pernyataan dan logika yang akan

memberikan suatu hasil apakah bernilai benar atau salah.


9.Bentuk menyatakan model penulisan untuk menangani struktur selesai.
3.Tahapan algoritma
Proses pemecahan masalah dengan algoritma tertentu hingga menjadi program dapat dibagi
dalam tahapan berikut:
A.Mendefinisikan masalah : masalah yang ingin dicapai harus jelas lingkupnya.
B.Membuat model (bentuk) matematis yang dapat digunakan untuk memecahkan masalah.
C.Merancang algoritma: apa masukannya, bagaimana rincian prosesnya dan apa keluarannya.
D.Menuliskan program: ubah algoritma menjadi program (source code) sesuai dengan bahasa
pemprograman tertentu.
E.Mengubah source code menjadi executable code melalui proses compiling
F.Memeriksa hasil compiling, jika salah maka kembali ke tahap empat.
G.Menjalankan program (run) untuk diuji kebenarannya dengan menggunakan berbagai data.
H.Memperbaiki keselahan
I.Mendokumentasikan program bila sudah benar.
B.STRUKTUR ALGORITMA
Pada dasarnya terdapat tiga buah struktur yang digunakan dalam menyusun suatu algoritma,
yaitu runtunan (sequace), pemilihan (selection ) dan pengulangan.
1.Struktur runtunan (sequace)
Sebuah runtutan terdiri dari satu atau lebih instruksi dimana setiap instruksi dikerjakan secara
berurutan sesuai dengan urutan penulisannya (sebuah instruksi dilaksanakan setelah instruksi
sebelumnya selesai dikerjakan).
2.Struktur pemilihan
Struktur pemilihan (seleksi) menyatakan pemilihan langkah yang didasarkan oleh suatu
kondisi (pengambilan keputusan).
3.Struktur pengulangan
Instruksi yang dapat mengulangi pelaksanaan sederetan instruksi-intruksi sesuai dengan
persyaratan yang ditetapkan. Suatu kelebihan komputer adalah kemampuannya untuk
mengerjakan pekerjaan yang sama berulang tampa lelah.
Prosedur yang berisi langkah-langkah penyelesaian masalah disebut algoritma.
Algoritma adalah urutan langkah-langkah untuk memecahkan suatu masalah.
Terdapat beberapa definisi lain dari algoritma - tetapi pada prinsipnya adalah sama, dengan
definisi yang diungkapkan di atas - yang kita kutip dari berbagai literatur, antara lain:
Algoritma adalah deretan langkah-langkah komputasi yang mentransformasikan data
masukan menjadi keluaran.
Algoritma adalah deretan instruksi yang jelas untuk memecahkan masalah, yaitu
memperoleh keluaran yang diinginkan dari suatu masukan dalam jumlah waktu yang terbatas.
Algoritma adalah prosedur komputasi yang terdefinisi dengan baik yang menggunakan
beberapa nilai sebagai masukan dan menghasilkan beberapa nilai yang disebut keluaran. Jadi,
algoritma adalah deretan langkah komputasi yang mentransformasikan masukan menjadi
keluaran.

Algoritma adalah deskripsi dari suatu pola tingkah laku yang dinyatakan secara primitif yaitu
aksi-aksi yang didefenisikan sebelumnya dan diberi nama, dan diasumsikan sebelumnya
bahwa aksi-aksi tersebut dapat kerjakan sehingga dapat menyebabkan kejadian.
Algoritma merupkan urutan perintah atau langkah-langkah logis penyelesaian masalah yang
disusun
secara
sistematis
dan
logis.
Syarat
Algoritma
Beberapa
syarat
yang
harus
dimiliki
oleh
algoritma
yaitu
:
1. General, artinya algoritma yang dibuat harus bersifat umum, tidak bersifat kasuistis.
2.
Finiteness,
algoritma
harus
mempunyai
akhir.
3. Efisien, Algoritma yang dibuat harus efisien, karena dalam satu permasalahn yang ada
dapat ditemukan kemungkinan solusi, harus dipilih yang paling efisien.
Sejarah Algoritma
Algoritma berasal dari nama penulis buku, yakni Abu Ja`far Muhammad Ibnu Musa AlKhwarizmi yang berasal dari Uzbekistan. Orang Barat menyebut Al-Khwarizmi dengan
Algorism.
Pada saat itu, Al-Khwarizmi menulis buku dengan judul Al Jabar wal-Muqabala yang artinya
`Buku Pemugaran dan Pengurangan` (The book of Restoration and Reduction). Dari judul
buku tersebut, kita juga memperoleh kata aljabar atau biasa dikenal dengan algebra.
Abu Abdullah Ibnu Musa al-Khawarizmi (770M-840M) lahir di Khawarizm (Kheva), kota
yang berada di selatan Sungai Oxus (sekarang disebut Uzbekistan) pada 770 M. Al
Khawarizmi merupakan salah satu ilmuan terkenal di zamannya. Ada beberapa cabang ilmu
matematika yang berhasil ditemukannya, antara lain yang dikenal sebagai astronom dan
geografer.
Awalnya, algoritma merupakan istilah yang merujuk kepada aturan-aturan aritmetis yang
berguna untuk menyelesaikan persoalan dengan menggunakan bilangan numeric Arab.
Pada tahun 1950, kata algoritma pertama kali digunakan pada "algoritma Euclidean"
(Euclid`s algorithm). Euclid, seorang matematikawan Yunani (lahir pada tahun 350 M),
dalam bukunya yang berjudul Element menuliskan langkah-langkah untuk menemukan
pembagi bersama terbesar (common greatest divisor atau gcd), dari dua buah bilangan bulat,
m dan n [KNU73] (tentu saja Eulid tidak menyebut metodenya itu sebagai algoritma, baru di
abad modernlah orang-orang menyebut metodenya itu sebagai "algoritma Euclidean").
Pembagi bersama terbesar dari dua buah bilangan bulat tak negatif adalah bilangan bulat
positif terbesar yang habis membagi kedua bilangan tersebut.
Misalnya, m= 80 dan n =12. Semua faktor pembagi 80 adalah
1,2,4,5,8,10,16,20,40,80
dan semua faktor pembagi 12 adalah
1,2,3,4,6,12,
maka gcd(80,12) = 4.
Langkah-langkah mencari gcd(80,12) dengan algoritma Euclidean sebagai berikut:

80 dibagi 12 hasilnya =6, sisa 8 (atau:80 =6.12+8)


12 dibagi 8 hasilnya = 1, sisa = 4 (atau:12 =1.8+4)
8 dibagi 4 hasilnya = 2, sisa =0 (atau:8 =4.2+0)
karena pembagian yang terakhir menghasilkan 0, maka sisa pembagian terakhir sebelum 0,
yaitu
4, menjadi gcd(80,12). Jadi, gcd(80,12) = gcd(12,8) = gcd(8,4) = gcd(4,0)=4.

Contoh Algoritma.
Salah satu dari algoritma sederhana adalah menemukan bilangan terbesar dalam sebuah
deretan angka (tak berurut). Solusinya membutuhkan pemeriksaan setiap angka dalam deret,
tapi hanya sekali. Dari hal ini munculah algoritma sederhana, yang bisa dinyatakan dalam
kalimat bahasa deskripsi tingkat-tinggi, sebagai:
Deskripsi tingkat-tinggi:
1. Jika tidak ada angka dalam deret makan tidak ada bilangan terbesar.
2. Asumsikan item pertama dalam deret adalah yang terbesar.
3. Untuk setiap sisa angka dalam deret, jika angka tersebut besar dari angka terbesar
sekarang, anggap angka tersebut menjadi yang terbesar dalam deret.
4. Bila tidak ada lagi angka yang tersisa pada deret untuk diperiksa, anggap angka
terbesar sekarang menjadi angka yang terbesar dalam deret.
Deskripsi (Quasi-)formal: Ditulis dalam kalimat yang lebih dekat dengan bahasa tingkattinggi dari program komputer, berikut ini adalah kode formal dari algoritma dalam
pseudokode atau kode pijin:

You might also like