2.1.1 Pengertian Algoritma
A. Sejarah Algoritma
Kata algoritma berasal dari latinisasi nama seorang ahli matematika dari
Uzbekistan Al Khawarizmi (hidup sekitar abad ke-9), sebagaimana tercantum pada
terjemahan karyanya dalam bahasa latin dari abad ke-12 “ Algorithmi de numero
Indorum”. Pada awalnya
kata algoritma adalah istilah yang merujuk kepada
aturan-aturan arismetis untuk menyelesaikan persoalan dengan menggunakan
bilangan numerikarab (sebenarnya dari India, seperti tertulis pada judul
diatas). Pada abad ke-18 istilah ini berkembang menjadi algoritma, yang
mencangkup semua prosedur atau urutan langkah jelas yang diperlukan untuk
menyelesaikan suatu permasalahan.
Masalah timbul saat akan menuangkan bagaimana proses yang harus dilalui
dalam suatu/sebuah sistem (program) bagi komputer sehingga pada saat eksekusinya,
komputer dapat bekerja sesuai dengan yang diharapkan. Programmer computer akan lebih nyaman menuangkan prosedur
komputasinya atau urutan langkah proses dengan terlebih dahulu membuat gambaran (diagram alur) diatas kertas.
B. Definisi Algoritma
Algoritma adalah
urutan langkah logis tertentu untuk memecahkan suatu masalah. Yang ditekankan
adalah urutan langkah logis, yang berarti algoritma harus mengikuti suatu
urutan tertentu, tidak boleh melompat-lompat.
Alur pemikiran
dalam menyelesaikan suatu pekerjaan yang dituangkan secara tertulis. Yang
ditekankan pertama adalah alur pikiran, sehingga algoritma seseorang juga dapat
berbeda dari algoritma orang lain. Sedangkan penekanan kedua adalah tertulis,
yang artinya dapat berupa kalimat, gambar, dan tabel tertentu.
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.
·
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.
·
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 mirip dengan paradigma Divide and Conquer, sama-sama mencoba untuk membagi
permasalahan menjadi sub permasalahan yang lebih kecil, tapi secara intrinsik
ada perbedaan karate permasalahan yang dihadapi.
·
Metode
serakah. Sebuah algoritma
serakah mirip dengan sebuah pemrograman dinamik, bedanya jawaban dari sub
masalah tidak perlu diketahui dalam setiap tahap, dan meggunakan pilihan
“serakah” dari apa yang dilihat terbaik pada saat itu.
2.1.2 Syarat Algoritma
Kriteria algoritma menurut Donald E. Knuth:
1.
Input
(masukan) : algoritma
dapat memiliki nol atau lebih input-an dari
luar.
2.
Output
(keluaran) : algoritma harus
memiiki minimal satu buah output
keluaran.
3.
Definiteness (pasti) : algoritma harus memiliki instruksi-instruksi yang jelas
dan tidak memiliki dua arti.
4.
Finiteness
(ada batas) : algoritma harus
memiliki titik berhenti.
5.
Effectiveness (efektivitas) : algoritma harus
dilakukan dan efektif.
2.1.3 Contoh Algoritma
Berikut
ini adalah contoh dari algoritma
penarikan uang di Anjungan Tunai Mandiri (ATM) Bank Rakyat Indonesia (BRI)
dengan nominal kelipatan Rp50.000,00
1. Mulai.
2. Masukkan
kartu ATM kedalam slot yang tersedia.
3. Ketikkan
PIN ATM Anda.
4. Apa
PIN ATM anda sudah benar?
·
Jika ya, lanjut ke
langkah 6.
·
Jika tidak, lanjut ke
langkah 5.
5. Ketikkan
kembali PIN yang benar.
6. Pada
menu utama, pilih penarikkan tunai.
7. Ketikkan nominal uang yang
ingin Anda tarik.
8. Apa
nominal uang berkelipatan Rp.50.000,00?
·
Jika ya, lanjut ke
langkah 10.
·
Jika tidak, Lanjut ke
langkah 9.
9. Penarikan
tidak dapat dilakukan.
10. Transaksi
Anda sedang diproses.
11. Ambil
uang yang keluar dari ATM
12. Ambil
kartu ATM Anda
yang keluar dari slot kartu ATM.
13. Selesai.
2.2 Flowchart
2.2.1 Pengertian Flowchart
Dalam pembuatan suatu program kita diharuskan untuk
terlebih dahulu membuat suatu urutan langkah pemecahan dalam bentuk diagram
yang biasanya disebut flowchart/ diagram alir selain dari algoritma,
karena setiap program akan mempunyai langkah-langkah dalam prosesnya dari awal
sampai akhir. Antara algoritma dan flowchart harus sejalan maksudnya
mempunyai logika dan urutan langkah yang sama. Salah satu kebaikan flowchart
adalah karena dalam bentuk gambar jelas akan lebih mudah dimengerti daripada
uraian logika yang berbentuk teks sehingga tujuan dari flowchart itu
sendiri untuk mempermudah dalam memahami suatu proses secara sederhana,
terurai, rapi dan jelas terlebih lagi untuk proses yang panjang. Begitu juga
dengan program yang kita buat pun harus sesuai dengan logika yang ada dalam flowchart.
Karena flowchart
merupakan dasar pemikiran dari proses yang akan dijalankan oleh program.
Didalamnya akan terdapat beberapa simbol-simbol khusus
dan terhubung oleh suatu garis berarah untuk menunjukkan alur/ langkah-langkah
instruksi dari pemrogaman. Tiap simbol mempunyai tujuan dan maksud yang berbeda
dalam penggunaannya. Penggunaan
symbol yang tepat akan memudahkan pengguna dalam memahami logika pemrograman. Setiap flowchart biasanya diawali dan
diakhiri oleh terminal simbol. Jadi dapat disimpulkan bahwa flowchart
adalah diagram alir yang menggambarkan urutan perintah dan proses. Pemecahan
masalah dengan menggunakan simbol-simbol tertentu yang sudah standar.
2.2.2 Jenis-jenis Flowchart
Flowchart
terbagi menjadi lima jenis, yaitu:
1. Flowchart
Sistem (System Flowchart)
Merupakan
bagan yang menunjukkan alur kerja atau apa yang sedang dikerjakan didalam
sistem secara keseluruhan dan menjelaskan urutan dari prosedur-prosedur yang
ada di dalam sistem.
2. Flowchart
Dokumen (Document Flowchart)
Flowchart
Dokumen berguna untuk
menelusuri alur dari data yang ditulis melalui sistem. Flowchart dokumen juga sering
disebut Flowchart Paperwork.
3. Flowchart
Skematik (Schematic Flowchart)
Flowchart
Skematik merupakan bagan
yang mirip dengan Flowchart Sistem yang menggambarkan suatu sistem atau
prosedur. Perbedaannya bukan hanya menggunakan simbol-simbol flowchart
standar, tetapi juga menggunakan gambar - gambar komputer, peripheral,
atau peralatan lain yang digunakan dalam sistem.
4. Flowchart
Program (Program Flowchart)
Flowchart
Program merupakan bagan yang menjelaskan keterangan lebih rinci tentang
langkah-langkah dari proses program. Flowchart Program juga dihasilkan
dari Flowchart Sistem.
5. Flowchart Proses (Process Flowchart)
Flowchart
Proses merupakan bagan alir yang banyak digunakan di Teknik Industri. Flowchart
ini juga digunakan untuk memecah dan menganalisis langkah-langkah selanjutnya
dalam suatu prosedur atau sistem.