Algoritma adalah salah satu bidang ilmu yang pertama kali ditemukan oleh matematikawan asal Persia yang bernama “
Muhammad Ibn Musa Al-Khawarizm”
lahir sekitar tahun 730 M dan meninggal antara tahun 835-850 M.
Algoritma merupakan suatu metode atau langkah-langkah umum yang disusun
secara sistematis dan logis yang dugunakan untuk menyelesaikan masalah
atau kasus-kasus tertentu.
Dalam menuliskan algoritma, dapat digunakan bahasa natural atau
menggunakan notasi matematika, sehingga masih belum dapat dijalankan
pada komputer. Dalam kehidupan sehari-hari, kita sudah melakukan
penyusunan algoritma untuk menyelesaikan permasalahan atau tantangan
yang dihadapi. Sebagai contoh, pada saat diminta untuk membuat
telur dadar. Sebelum membuat algoritmanya, kita perlu
mendefinisikan masukan (input) dan luaran (output) terlebih
dahulu, dimana input berupa telur mentah, dan output berupa telur
dadar yang sudah matang.
Susunan algoritmanya sebagai berikut:
- Nyalakan api kompor
- Tuangkan minyak ke dalam wajan
- Pecahkan telur ayam ke dalam mangkok
- Tambahkan garam secukupnya
- Aduk campuran telur dan garam
- Tuang adonan telur ke dalam wajan
- Masak telur hingga matang
Algoritma akan lebih baik jika ditulis secara sistematis menggunakan beberapa skema.
Program/Pemrograman adalah formulasi sebuah algoritma
dalam bentuk bahasa pemrograman, sehingga siap untuk dijalankan pada
mesin komputer. Membuat program seperti memberitahukan apa yang
harus dilakukan kepada orang lain. Sebagai contoh, pada saat
kita memberitahukan algoritma membuat telur dadar kepada orang lain,
kita sudah melakukan pemrograman. Pemrograman membuat telur dadar
kepada orang lain akan lebih mudah karena orang tersebut sudah
mengetahui apa itu telur dadar. Pada langkah yang ke-3 diminta
untuk memecahkan telur, bagaimana cara orang tersebut memecahkan
telur tentunya sudah diketahui dan kita tidak perlu menjelaskan
terlalu detil. Lain halnya jika kita harus menyuruh komputer
untuk melakukan apa yang kita inginkan.
Komputer sebenarnya hanyalah sebuah mesin bodoh yang tidak
memiliki emosi dan kemampuan bersosialisasi. Oleh karena itu,
untuk membuatnya menjadi mudah, diperlukan penyusunan algoritma yang
benar.
- Algoritma harus berhenti setelah mengerjakan sejumlah langkah
terbatas. Sebagai contoh, dalam algoritma Euclidean, pada langkah 1,
jika n = 0, algoritma berhenti, jika n tidak = 0 maka nilai n selalu
berkurang sebagai akibat dari langkah 2 dan 3, dan pada akhirnya nilai n
= 0. Program yang tidak pernah berhenti mengindikasikan bahwa program
tersebut berisi algoritma yang salah.
- Setiap langkah harus di defenisikan dengan tepat dan tidak berarti
dua (ambiguous). Pembaca harus mengerti apa yang di maksud dengan “m”
dan “n” adalah bilangan bulat tak negatif (-). Contoh lainnya pernyataan
” bagilah p dengan beberapa sejumlah bilangan bulat positif” dapat
bermakna ganda. Berapakah yang di maksud dengan “berapa” ? Algoritma
menjadi jelas jika langkah tersebut di tulis “bagilah p dengan 10 buah
bilangan bulat positif”
- Algoritma memiliki nol atau lebih masukan (input). Masukan ialah
besaran yang diberikan kepada algoritma untuk di proses. Algoritma
Euclidean mempunyai dua buah masukan, yaitu m dan n.
- Algoritma mempunya nol atau lebih keluaran (output). Keluaran dapat
berupa pesan atau besaran yang memiliki hubungan dengan masukan.
Algoritma Euclidean mempunyai 1 keluaran, yaitu m pada langkah 1, yang
merupakan pembagi bersama terbesar dari kedua bilangan.
- Algoritma harus sangkil (effective). Setiap langkah harus sederhana
sehingga dapat di kerjakan dalam sejumlah waktu yang masuk akal.
Algoritma dapat dituliskan ke dalam berbagai bentuk, namun struktur
yang rapi dan mengikuti aturan tertentu akan membuat algoritma lebih
mudah untuk dibaca dan dipahami. Selanjutnya, algoritma yang telah
tersusun rapi akan diimplementasikan ke bahasa pemrograman. Algoritma
dapat dituliskan ke dalam berbagai bentuk, namun dan mengikuti aturan
tertentu akan membuat algoritma lebih mudah untuk dibaca dan dipahami.
Selanjutnya, algoritma yang telah tersusun rapi akan
Secara formal, flowchart didefinisikan sebagai skema
penggambaran dari algoritma atau proses. Dalam membuat
algoritma, diperlukan suatu mekanisme atau alat bantu untuk
menuangkan hasil pemikiran mengenai langkah-langkah penyelesaian
masalah yang sistematis dan terurut.
Pada dasarnya untuk bisa menyusun solusi diperlukan kemampuan
problem-solving yang baik. Oleh karena itu, sebagai sarana untuk
melatih kemampuan tersebut terdapat sebuah tool (alat) yang dapat
digunakan, yakni flowchart .
Dengan menggunakan flowchart, tahapan-tahapan penting dalam
algoritma dapat ditunjukkan dengan diagram di atas. Aliran proses
ditunjukkan dengan arah panah atau disebut dengan ’flowlines’.
Keuntungan menggunakan flowchart adalah penggunaan diagram untuk
menggambarkan tahapan proses, sehingga lebih mudah dilihat dan
dipahami. Namun demikian, flowchart juga memiliki kelemahan,
yakni jika digunakan untuk menggambarkan proses atau algoritma
untuk skala kasus yang besar, maka akan dibutuhkan banyak kertas.
Simbol-Simbol Flowchart

Contoh flowchart membuat telur dadar :
Pseudocode
Skema lain yang dapat digunakan untuk menyusun algoritma
adalah pseudocode. Pseudocode adalah bentuk informal untuk
mendeskripsikan algoritma yang mengikuti struktur bahasa pemrograman
tertentu.
Tujuan dari penggunaan pseudocodeadalah supaya :
- lebih mudah dibaca oleh manusia
- lebih mudah untuk dipahami
- lebih mudah dalam menuangkan ide/hasil pemikiran
Pseudocode sering digunakan dalam buku-buku tentang ilmu
komputer ataupun publikasi ilmiah untuk menjelaskan urutan proses
atau metode tertentu. Seorang programer yang ingin yang ingin
menerapkan algoritma tertentu, terutama yang kompleks atau algoritma
baru, biasanya akan memulainya dengan membuat deskripsi dalam bentuk
pseudocode. Setelah pseudocode tersebut jadi, maka langkah
selanjutnya hanya tinggal menterjemahkannya ke bahasa pemrograman
tertentu. Pseudocode ini biasnya disusun dalam bentuk yang
terstruktur dengan pendekatan sekuensial (berurutan) dari atas ke bawah.
Algoritma yang menjelaskan tentang proses membuat telur dadar,
sebenarnya sudah menerapkan penggunaan pseudocode. Sesungguhnya
tidak ada suatu standar untuk menyusun algoritma menggunakan
pseudocode. Oleh karena pseudocode lebih cocok digunakan untuk
menyusun algoritma dengan kasus yang besar dan kompleks, maka
sangat dianjurkan kepada programer pemula untuk mulai menggunakan
pseudocode dalam menyelesaikan masalah. Berikut adalah contoh
pseudocodeyang dibandingkan dengan bahasa pemrograman C++
Bahasa pemrograman adalah bahasa buatan yang digunakan untuk
mengendalikan perilaku dari sebuah mesin, biasanya berupa mesin
komputer[2], sehingga dapat digunakan untuk memberitahu komputer
tentang apa yang harus dilakukan[3].
Struktur bahasa ini memiliki kemiripan dengan bahasa natural
manusia, karena juga tersusun dari elemen-elemen dasar seperti:
kata benda dan kata kerja serta mengikuti aturan untuk menyusunnya
menjadi kalimat.
Klasifikasi Menurut Generasi :
- First Generation Language (1GL)
Bahasa pemrograman ini berupa kode-kode mesin yang hanya bisa dipahami oleh mikroprosesor.
- Second Generation Language (2GL)
Bahasa pada generasi ini adalah assembly language, dimana bahasa
ini masih menggunakan kode-kode yang disebut dengan mnemonic.
Bahasa assembly disebut sebagai generasi kedua karena bahasa ini
bukan bahasa asli mikroprosesor, meskipun begitu programer tetap
harus mengetahui keunikan dari masing-masing mikroprosesor
(register dan jenis instruksi).
- Generasi ketiga
Bahasa pemrograman generasi ketiga sengaja didesain supaya
mudah dipahami oleh manusia. Pada generasi ini mulai dikenalkan
istilah variabel, tipe data, ekspresi aljabar dan sudah mendukung
pemrograman terstruktur. Contoh bahasa: FORTRAN, COBOL, ALGOL,
BASIC, C, C++, Pascal, Java.
- Generasi keempat
Pada generasi ini, bahasa pemrograman didesain untuk
mengurangi effort dan mempercepat proses pembuatan program. Pada
3GL, pembuatan program membutuhkan waktu yang lama dan
mudah sekali didapati error. Pada 4GL, telah menggunakan metodologi dimana sebuah perintah
dapat menghasilkan beberapa instruksi 3GL yang kompleks dengan sedikit error.
Contoh bahasa:
- Pemrograman umum : DataFlex, WinDev, PowerBuilder
- Basis data : SQL, Progress 4GL
- Manipulasi data, analisis dan pelaporan : ABAP, Matlab, PL/SQL.
- Generasi kelima
Bahasa pemrograman generasi kelima disebut sebagai
constraint-programming atau declarative-programming . Program tidak
dituliskan dalam bentuk algoritma melainkan dituliskan batasan
atau fakta dari sebuah lingkup masalah, sehingga program akan
menghasilkan luaran dalam bentuk solusi[5].
Bahasa pemrograman ini digunakan untuk membangun sistem
kecerdasan buatan dan belum digunakan secara meluas di dunia
industri. Contoh bahasa: Prolog, LISP, Mercury.
- Langkah – Langkah Pemecahan Masalah
Pemecahan masalah menukarkan isi gelas :
- Ambil gelas lagi, anggap saja namanya Gelas “C”
- Tuangkan isi gelas “A” ke gelas “C”
- Tuangkan isi gelas “B” ke gelas “A”
- Terakhir, tuangkan isi gelas “C” ke gelas “A”
Pemecahan masalah Jars Game :
- Ambil air dengan guci yang berukuran 5L
- Isikan air tersebut kedalam guci yang berukuran 7L
- Ambil air lagi menggunakan guci yang berukuran 5L
- Isikan kembali air tersebut kedalam guci yang berukuran 7L
- Buang semua isi guci yang berukuran 7L
- Tuangkan sisa air yang ada di dalam guci berukuran 5L kedalam guci yang berukuran 7L
- Ambil air lagi menggunakan guci yang berukuran 5L
- Isikan lagi air tersebut kedalam guci yang berukuran 7L
- Buang semua air yang ada di guci 7L
- Tuangkan sisa air dari guci berukuran 5L kedalam guci berukuran 7L
- Ambil lagi air menggunakan guci berukuran 5L
- Terakhir, tuangkan air dari guci 5L ke dalam guci 7L.
Pemecahan masalah Game Menyebrangkan Orang
- Seberangkan orang no 1 dan 2
- Orang no 1 kembali lagi
- Seberangkan orang no 4 dan 5
- Orang no 2 kembali lagi
- Seberangkan orang no 1 dan 3
- Orang no 1 kembali lagi
- Terakhir, seberangkan orang no 1 dan 3
Pemecahan masalah Canibal Game :
- Naikkan 2 orang kanibal kedalam kapal
- Seberangkan 2 orang kanibal tersebut
- 1 orang kanibal kembali lagi menjemput kanibal yang lain
- Seberangkan lagi 2 kanibal tersebut
- 1 kanibal kembali lagi
- Naikkan 2 orang misionari kedalam kapal
- Seberangkan misionari tersebut
- 1 misionari kembali lagi dengan 1 kanibal
- Naikkan 1 misonari lagi kedalam kapal
- Seberangkan 2 misonari tersebut
- Turunkan kedua misionari tersebut
- Naikkan 1 kanibal yang ada di seberang kedalam kapal
- Seberangkan kanibal tersebut untuk menjemput temannya
- Naikkan 1 kanibal kedalam kapal
- Seberangkan kanibal tersebut
- Turunkan 1 kanibal, satunya kembali lagi untuk menjemput temannya
- Naikkan kanibal terakhir kedalam kapal
- Seberangkan kanibal-kanibal tersebut
- Terakhir, turunkan dua-duanya.
Pemecahan masalah Wolf Game :
- Naikkan kambing ke dalam kapal
- Seberangkan kapal
- Turunkan kambing tersebut
- Petani kembali lagi
- Naikkan kubis kedalam kapal
- Sebrangkan kapal
- Turunkan kubis
- Naikkan kambing
- Petani kembali lagi dengan kambing
- Turunkan kambing
- Naikkan anjing ke dalam kapal
- Sebrangkan kapal
- Turunkan anjing tersebut
- Petani kembali lagi
- Naikkan kambing ke dalam kapal
- Seberangkan kapal
- Terakhir, Tutunkan kambing dari kapal