Ditinjau dari asal-usul katanya, kata Algoritma sendiri mempunyai sejarah yang aneh. Orang hanya
menemukan kata algorism yang berarti proses menghitung dengan angka arab. Seseorang dikatakan
algorist jika ia 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 Jafar 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 juga diperoleh 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.
Jadi, definisi dari algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang
disusun secara sistematis dan logis. Kata logis merupakan kata kunci dalam algoritma. Langkahlangkah dalam algoritma harus logis dan harus dapat ditentukan bernilai salah atau benar. Dalam
beberapa konteks, algoritma adalah spesifikasi urutan langkah untuk melakukan pekerjaan tertentu.
2. Apa saja pertimbangan dalam menyusun sebuah algoritma ?
Pertimbangan dalam pemilihan algoritma adalah, pertama, algoritma haruslah benar. Artinya algoritma
akan memberikan keluaran yang dikehendaki dari sejumlah masukan yang diberikan. Tidak peduli
sebagus apapun algoritma, kalau memberikan keluaran yang salah, pastilah algoritma tersebut
bukanlah algoritma yang baik.
Pertimbangan kedua yang harus diperhatikan adalah harus diketahui seberapa baik hasil yang dicapai
oleh algoritma tersebut. Hal ini penting terutama pada algoritma untuk menyelesaikan masalah yang
memerlukan aproksimasi hasil (hasil yang hanya berupa pendekatan). Algoritma yang baik harus
mampu memberikan hasil yang sedekat mungkin dengan nilai yang sebenarnya (hasil terbaik).
Pertimbangan ketiga adalah efisiensi algoritma. Efisiensi algoritma dapat ditinjau dari dua hal yaitu
efisiensi waktu dan penggunaan memori. Meskipun algoritma memberikan keluaran yang benar
(paling mendekati), tetapi jika harus menunggu berjam-jam untuk mendapatkan keluarannya,
algoritma tersebut biasanya tidak akan dipakai, setiap orang menginginkan keluaran yang cepat. Begitu
juga dengan memori, semakin besar memori yang terpakai maka semakin buruklah algoritma tersebut.
Dalam kenyataannya, setiap orang bisa membuat algoritma yang berbeda untuk menyelesaikan suatu
permasalahan, walaupun terjadi perbedaan dalam menyusun algoritma, tentunya diharapkan keluaran
yang sama. Jika terjadi demikian, carilah algoritma yang paling efisien dan cepat.
3. Apa beda algoritma dengan program ?
Program adalah kumpulan pernyataan (perintah untuk) komputer, sedangkan metode dan tahapan
sistematis dalam program adalah algoritma. Program ditulis dengan menggunakan bahasa
pemrograman. Jadi bisa disebut bahwa program adalah suatu implementasi dari bahasa pemrograman.
Pembuatan algoritma mempunyai banyak keuntungan di antaranya:
1. Pembuatan atau penulisan algoritma tidak tergantung pada bahasa pemrograman manapun, artinya
penulisan algoritma independen dari bahasa pemrograman dan komputer yang melaksanakannya.
2. Notasi algoritma dapat diterjemahkan ke dalam berbagai bahasa pemrograman.
3. Apapun bahasa pemrogramannya, output yang akan dikeluarkan sama karena algoritmanya sama.
4. Apa yang disebut dengan pseuducode ?
Beberapa hal yang perlu diperhatikan dalam membuat algoritma:
1. Teks algoritma berisi deskripsi langkah-langkah penyelesaian masalah. Deskripsi tersebut dapat
ditulis dalam notasi apapun asalkan mudah dimengerti dan dipahami.
Catatan Algoritma Pemrograman: Dr. Bambang Wahyudi, SKom., MMSI Hal. 1
2. Tidak ada notasi yang baku dalam penulisan teks algoritma seperti notasi bahasa pemrograman.
Notasi yang digunakan dalam menulis algoritma disebut notasi algoritmik.
3. Setiap orang dapat membuat aturan penulisan dan notasi algoritmik sendiri. Hal ini dikarenakan teks
algoritma tidak sama dengan teks program. Namun, supaya notasi algoritmik mudah ditranslasikan
ke dalam notasi bahasa pemrograman tertentu, maka sebaiknya notasi algoritmik tersebut
berkorespondensi dengan notasi bahasa pemrograman secara umum. Tulisan (notasi) algoritma
yang mendekati perintah bahasa pemrograman disebut dengan pseudocode.
4. Notasi algoritmik bukan notasi bahasa pemrograman, karena itu pseudocode dalam notasi algoritmik
tidak dapat dijalankan oleh komputer. Agar dapat dijalankan oleh komputer, pseudocode dalam
notasi algoritmik harus ditranslasikan atau diterjemahkan ke dalam notasi bahasa pemrograman
yang dipilih. Perlu diingat bahwa orang yang menulis program sangat terikat dalam aturan tata
bahasanya dan spesifikasi mesin yang menjalannya.
5. Algoritma sebenarnya digunakan untuk membantu mengkonversikan suatu permasalahan ke bahasa
pemrograman.
6. Algoritma merupakan hasil pemikiran konseptual, supaya dapat dilaksanakan oleh komputer,
algoritma harus ditranslasikan ke dalam notasi bahasa pemrograman. Ada beberapa hal yang harus
diperhatikan pada translasi tersebut, yaitu:
a. Pendeklarasian variabel
Untuk mengetahui dibutuhkannya pendeklarasian variabel dalam penggunaan bahasa
pemrograman apabila tidak semua bahasa pemrograman membutuhkannya.
b. Pemilihan tipe data
Apabila bahasa pemrograman yang akan digunakan membutuhkan pendeklarasian variabel maka
perlu hal ini dipertimbangkan pada saat pemilihan tipe data.
c. Pemakaian instruksi-instruksi
Beberapa instruksi mempunyai kegunaan yang sama tetapi masing-masing memiliki kelebihan
dan kekurangan yang berbeda.
d. Aturan sintaksis
Pada saat menuliskan program, programmer terikat dengan aturan sintaksis dalam bahasa
pemrograman yang akan digunakan.
e. Tampilan hasil
Pada saat membuat algoritma tidak dipikirkan tampilan hasil yang akan disajikan. Hal-hal teknis
ini diperhatikan ketika mengkonversikannya menjadi program.
f. Cara pengoperasian compiler atau interpreter.
Bahasa pemrograman yang digunakan termasuk dalam kelompok compiler atau interpreter.
5. Apa beda compiler dan interpreter ?
Seluruh bahasa pemrograman yang ditulis programmer (khususnya yang menggunakan bahasa
pemrograman tingkat tinggi) akan diterjemahkan terlebih dulu ke dalam bahasa mesin. Ada
penerjemahan yang akan memeriksa kebenaran dalam penulisan perintah, dan ada juga yang juga
memeriksa kebenaran logika program.
Compiler adalah penerjemah yang bekerja memeriksa program sekaligus seluruhnya (contoh
dalam bahasa pemrograman COBOL), dan interpreter adalah penerjemah yang bekerja memeriksa
program baris demi baris (contoh dalam bahasa pemrograman BASIC). Jadi, komputer akan bekerja
(mengeksekusi program) secara langsung jika seluruh perintah sudah dinyatakan benar (pada
compiler), sedangkan pada interpreter, komputer akan menjalankan program baris demi baris. Bisa
jadi komputer telah mengeluarkan output dari perintah baris pertama hingga baris keseratus, namun
menyatakan error ketika komputer menjalankan baris keseratus-satu.
6. Apa yang disebut dengan bahasa pemrograman tingkat tinggi dan bahasa pemrograman
tingkat rendah ?
Komputer adalah mesin, yang tentu hanya dapat mengerti bahasa mesin. Sedang manusia
(programmer) bisa mengerti bahasa mesin maupun bahasa manusia. Namun demikian, untuk
mempelajari hingga mengerti untuk selanjutnya menuliskan perintah dengan bahasa mesin, diperlukan
waktu yang lama dan keahlian yang lebih. Sedangkan persaingan dalam kehidupan, memerlukan
action yang cepat, tepat, dan akurat.
Karenanya, dari bahasa mesin atau selanjutnya dibuat bahasa asembli/ asembler (yang
dikategorikan sebagai bahasa tingkat rendah/ low level programming language) dibuatlah functions
hingga seorang programmer bisa menuliskan perintah dalam bahasa manusia (umumnya bahasa
Inggris). Tulisan program yang sudah menggunakan bahasa manusia dikategorikan sebagai bahasa
Catatan Algoritma Pemrograman: Dr. Bambang Wahyudi, SKom., MMSI Hal. 2
pemrograman tingkat tinggi/ high level programming language). Untuk menerjemahkan bahasa
manusia ke bahasa mesin (menerjemahkan functions), dibuat compiler atau interpreter.
Jadi, berdasarkan pada apakah notasi bahasa pemrograman lebih dekat ke mesin atau ke
bahasa manusia, maka bahasa pemrograman dikelompokkan atas dua macam:
1. Bahasa tingkat rendah. Bahasa jenis ini dirancang agar setiap instruksinya langsung dikerjakan oleh
komputer, tanpa harus melalui penerjemah (translator). Contohnya adalah bahasa mesin. CPU
mengambil instruksi dari memori, langsung mengerti dan langsung mengerjakan operasinya.
Bahasa tingkat rendah bersifat primitif, sangat sederhana, orientasinya lebih dekat ke mesin, dan
sulit dipahami manusia. Sedangkan bahasa rakitan (asembler) dimasukkan ke dalam kelompok ini
karena alasan notasi yang dipakai dalam bahasa ini lebih dekat ke mesin, meskipun untuk
melaksanakan instruksinya masih perlu penerjemahan ke dalam bahasa mesin.
2. Bahasa tingkat tinggi, yang membuat pemrograman lebih mudah dipahami, lebih manusiawi, dan
berorientasi ke bahasa manusia (bahasa Inggris). Hanya saja, program dalam bahasa tingkat tinggi
tidak dapat langsung dilaksanakan oleh komputer. Ia perlu diterjemahkan terlebih dahulu oleh
sebuah translator bahasa (yang disebut kompilator atau compiler) ke dalam bahasa mesin sebelum
akhirnya dieksekusi oleh CPU. Contoh bahasa tingkat tinggi adalah Pascal, PL/I, Ada, Cobol,
Basic, Fortran, C, C++, dan sebagainya.
7. Bagaimana cara menyajikan algoritma ?
Penyajian algoritma secara garis besar bisa dalam dua bentuk penyajian yaitu tulisan dan gambar.
Algoritma yang disajikan dengan tulisan yaitu dengan struktur bahasa tertentu (misalnya bahasa
Indonesia atau bahasa Inggris) dan pseudocode. Pseudocode adalah kode yang mirip dengan kode
pemrograman yang sebenarnya seperti Pascal, atau C, sehingga lebih tepat digunakan untuk
menggambarkan algoritma yang akan dikomunikasikan kepada pemrogram. Sedangkan algoritma
disajikan dengan gambar, misalnya dengan flowchart. Secara umum, pseudocode mengekspresikan
ide-ide secara informal dalam proses penyusunan algoritma. Salah satu cara untuk menghasilkan kode
pseudo adalah dengan meregangkan aturan-aturan bahasa formal yang dengannya versi akhir dari
algoritma akan diekspresikan. Pendekatan ini umumnya digunakan ketika bahasa pemrograman yang
akan digunakan telah diketahui sejak awal.
8. Apa beda flowchart sistem dan flowchart program ?
Flowchart merupakan gambar atau bagan yang memperlihatkan urutan dan hubungan antar proses
beserta pernyataannya. Gambaran ini dinyatakan dengan simbol. Dengan demikian setiap simbol
menggambarkan proses tertentu. Sedangkan antara proses digambarkan dengan garis penghubung.
Dengan menggunakan flowchart akan memudahkan kita untuk melakukan pengecekan bagian-bagian
yang terlupakan dalam analisis masalah. Di samping itu flowchart juga berguna sebagai fasilitas untuk
berkomunikasi antara pemrogram yang bekerja dalam tim suatu proyek.
Ada dua macam flowchart yang menggambarkan proses dengan komputer, yaitu:
1. Flowchart sistem yaitu bagan dengan simbol-simbol tertentu yang menggambarkan urutan prosedur
dan proses suatu file dalam suatu media menjadi file di dalam media lain, dalam suatu sistem
pengolahan data.
2. Flowchart program yaitu bagan dengan simbol-simbol tertentu yang menggambarkan urutan proses
dan hubungan antar proses secara mendetail di dalam suatu program.
9. Apa saja langkah-langkah pemecahan masalah dalam pembuatan program ?
Langkah-langkah yang dilakukan dalam menyelesaikan masalah dalam pemrograman dengan
komputer adalah:
1. Mendefinisikan Masalah. Berikut adalah hal-hal yang harus diketahui dalam analisis masalah agar
diketahui bagaimana permasalahan tersebut:
a. Kondisi awal, yaitu input yang tersedia.
b. Kondisi akhir, yaitu output yang diinginkan.
c. Data lain yang tersedia (yang perlu dijadikan pertimbangan).
d. Operator yang tersedia dalam bahasa pemrograman (adakah operator div, mod, abs, dan lainlain).
e. Syarat atau kendala yang harus dipenuhi (aturan dalam penyelesaian masalah).
Catatan Algoritma Pemrograman: Dr. Bambang Wahyudi, SKom., MMSI Hal. 3
Suatu instruksi dikerjakan jika suatu kondisi tertentu dipenuhi. Dengan adanya proses ini maka ada
kemungkinan beberapa jalur aksi yang berbeda berdasarkan kondisi yang ada.
Proses pengulangan (looping) atau iterasi
Suatu proses melakukan eksekusi suatu program secara berulang-ulang pada suatu blok instruksi
tertentu yang terkendali
13. Apa kekurangan menuliskan algoritma dengan bahasa natural (bahasa manusia) ?
Algoritma bisa disajikan dengan (1) penulisan dengan bahasa natural (bahasa manusia, seperti bahasa
Inggris, bahasa Indonesia, dan sebagainya), (2) dengan bahasa yang mendekati penulisan bahasa
pemrograman (pseudocode), dan (3) dengan flowchart.
Kelemahan penulisan yang menggunakan bahasa natural antara lain (1) hanya dimengerti oleh
orang yang memiliki pengetahuan bahasa tersebut, (2) bisa menghasilkan arti yang berbeda
(ambiguous), (3) kadang sulit merangkainya secara terstruktur (harus menjelaskan dengan panjang
lebar), apalagi jika harus dilakukan algoritma yang memiliki pengulangan proses (loop), atau yang
bersifat rekursif.
14. Apa kriteria algoritma yang baik menurut Donald E. Knuth ?
Banyak teori yang membahas tentang algoritma, salah satunya adalah Donald E. Knuth. Menurutnya,
algoritma yang baik adalah algoritma yang (1) bisa menerima input dari luar, bukan hanya ada di
dalam program, (2) memiliki sedikitnya sebuah hasil atau output, (3) memiliki kepastian (definiteness)
pada setiap instruksinya atau tidak memiliki arti yang bias (tidak bersifat ambigu), (4) memiliki batas
(finiteness) atau memiliki titik henti (stopping role), dan (5) bersifat efektif (effectiveness).
Contoh algortima yang tidak memiliki titik henti:
j1
for j = 1 to 10
ji+2
write j
next j
Contoh algoritma yang tidak efektif:
a a+0
b b*1
15. Contoh soal algoritma: tentukan sebuah bilangan ganjil atau genap
Tidak sulit kita menentukan sebuah bilangan adalah bilangan ganjil atau genap. Namun, bagaimana
kita memerintah komputer agar komputer bisa menghasilkan output ganjil atau genap dari sebuah
angka yang diberikan kepadanya, tidaklah mudah. Inipun masih tergantung pada operator apa saja
yang dimiliki bahasa pemrogramannya.
Secara bahasa natural, kita bisa menulis algoritmanya:
a. Masukkan sebuah angka
b. Bagi angka tersebut dengan dua
c. Bila hasilnya adalah bilangan bulat, maka cetak genap selain itu cetak ganjil
Namun, untuk memberi tahu komputer mana bilangan bulat dan mana bilangan pecahan
masih diperlukan algoritma lain lagi. Untuk beberapa bahasa pemrograman (yang memiliki operator
INT atau integer untuk menyatakan bilangan bulat), maka pseudocode-nya bisa ditulis:
input a
if a/2 = int(a/2)
write genap
else
write ganjil
endif
Untuk bahasa pemrograman yang memiliki operator MOD (modulo atau sisa hasil bagi), maka
pseudocode-nya bisa ditulis:
input a
if mod(a/2) = 0
write genap
else
Catatan Algoritma Pemrograman: Dr. Bambang Wahyudi, SKom., MMSI Hal. 6
write ganjil
endif