Saturday, July 28, 2018
Penyajian Algoritma yang Baik
Penyajian
Algoritma yang Baik
Menurut Donald Ervin
Knuth (1973), yang
dikenal dengan Bapak "Analisis
Algoritma", algoritma yang baik dan
benar harus memiliki kriteria-kriteria berikut ini:
·
Input
·
Output
·
Finite
·
Definite
·
Efisien
1. Input
Algoritma memiliki nol
input atau lebih dari pengguna. Jadi setiap
algoritma harus menerima input. Untuk nol
input maksudnya
adalah algoritma tidak
mendapatkan masukan langsung
dari pengguna, tapi data
inputan telah
dideklarasi didalam algoritma terlebih dahulu.
Contoh algoritma menghitung 100 bilangan genap
yang pertama tidak memerlukan input dari pengguna karena sudah diketahui bahwa
banyaknya bilangan genap adalah 100. Berbeda jika algoritm tersebut digunakan
untuk menghitung n bilangan genap pertama, dengan nilai n dari pengguna.
Berarti ada masukan dari pengguna yaitu n.
2. Output
Algoritma minimal harus
memiliki 1 output. Tujuan dari algoritma adalah memberikan penyelesaian dari
suatu permasalahan dengan langkah-langkah tertentu. Penyelesaian itulah output
dari algoritma yang dimaksud. Output dapat berupa apa saja, teks, file, video,
suara, dan lain-lain atau suatu nilai yang disimpan untuk digunakan algoritma
lain atau disimpan di basis data.
3. Finite (Terbatas)
Algoritma yang baik
haruslah mempunyai langkah-langkah terbatas, yang berakhir pada suatu titik di
mana algoritma itu akan berhenti dan menghasilkan suatu output. Algoritma tidak boleh berjalan terus–menerus tanpa titik henti, jika diterapkan pada komputer akan mengakibatkan hang atau not responding.
Algoritma yang berjalan
terus menerus (infinite), memberikan
indikasi bahwa ada kesalahan yang dibuat oleh programmer dalam
mengembangkan algoritma.
4. Definite
(Pasti)
Langkah logis pada definisi algoritma terdahulu
tercermin dari langkah-langkah yang pasti, tidak ambigu atau bermakna ganda.
Suatu program harus mempunyai arah dan tujuan yang jelas, kapan mulai dan kapan berakhir.
Ketika menyusun langkah-langkah dalam algoritma perlu
dihindari kata-kata seperti secukupnya, beberapa, sesuatu, sebentar, lama, atau
kata lain yang tidak terukur dengan pasti.
Pemberian nomor pada
algoritma dapat membantu pengguna mengikuti setiap langkah dengan pasti hingga
mencapai akhir dari algoritma, yaitu solusi dari permasalahan.
5. Efisien
Program menghasilkan
output yang benar, itu wajib. Tapi bagaimana
jika output yang benar itu dilakukan dengan waktu yang lama padahal ada algoritma
lain yang lebih cepat? Hal ini menunjukkan bahwa setiap algoritma, khususnya ketika diterapkan pada pemrograman, mempunyai waktu eksekusi
(running time).
Algoritma disebut
efisien jika solusi yang
didapat tidak memerlukan memori yang
banyak, proses yang berbelit-belit dan tidak perlu. Jika algoritma terlalu
banyak melakukan hal-hal yang tidak perlu akan menyebabkan waktu eksekusi
menjadi lebih lama.
Pseudocode
Pseudocode yaitu penyajian algoritma dalam bentuk bahasa
yang “mirip” dengan bahasa pemrograman. Sesuai
dengan namanya pseudocode dapat diartikan sebagai kode bayangan,
yaitu bahasa yang mendekati kode pemrograman yang sesungguhnya. Bedanya dalam bahasa pemrograman aturan penulisan kode harus
benar-benar sesuai, jika terdapat
kesalahan sedikit saja maka akan menyebabkan error, atau program tidak bisa
dijalankan. Sedangkan dalam pseudocode
aturan penulisannya lebih bebas, dan tidak terikat yang paling penting adalah mudah dipahami
oleh orang yang akan menggunakan algoritma atau orang yang akan mengimplementasikan algoritma tersebut
ke dalam bahasa
pemrograman.
Pseudocode yang baik adalah pseudocode yang
dapat dipahami dan diterjemahkan oleh programmer ke bahasa pemrograman yang
ada. Walaupun ada juga yang menuliskannya berdasarkan kecenderungan
perancang algoritma dalam menggunakan bahasa pemrograman.
Misalnya orang
yang sering menggunakan Bahasa Pemrograman Fortran akan menuliskan pseudocode
dengan gaya Bahasa Fortran, orang yang sering menggunakan Pascal akan
menuliskan psudocode dengan gaya bahasa Pascal, demikian juga bagi yang sering
menggunakan Basic ataupun Turbo C, tentu akan mempunyai style (gaya) yang berbeda-beda. Jadi pseudocode
bisa dikatakan juga sebagai algortima yang sudah sedikit digabungkan dengan
bahasa pemrograman yang akan digunakan.
Di antara sekian gaya pseudocode, barangkali
yang paling mudah dipahami adalah gaya bahasa Pascal karena bahasanya sangat natural (alami) sebagaimana bahasa
Inggris sehari-hari dan dengan mudah dapat diterapkan pada bahasa pemrograman
yang lain seperti Fortran, turbo C, Basic dan bahasa pemrograman yang lain.
Kata-kata kuncinya sangat singkat, praktis dan jelas.
Pada algoritma diatas digunakan beberapa istilah yang mirip dengan Bahasa Pascal,
sebagai berikut.
Konstanta, untuk mendeklarasikan konstanta
Variabel, untuk mendeklarasikan variabel
READ, perintah untuk membaca masukkan dari pengguna
WRITE, perintah untuk menuliskan nilai suatu
variabel atau suatu string
END, akhir dari algoritma.
Pemberian
nilai ini V = Phi * r * r * t juga disebut dengan Assignment (penugasan). Di beberapa bahasa Pemrograman assignment
ini dituliskan dengan beberapa gaya yang berbeda, di Pascal dituliskan V := Phi * r * r * t sedangkan di Turbo C cukup V
= Phi * r * r * t.
Demikian juga dengan perintah WRITE, di
beberapa pseudocode digunakan
perintah PRINT, DISPLAY atau OUTPUT. Jadi tidak ada aturan yang
mengikat mengenai penyajian algoritma dengan pseudocode, tetapi agar konsisten gunakan format penulisan sama.
Flowchart
Flowchart adalah penyajian algoritma menggunakan diagram. Tujuannya yaitu untuk
memberikan gambaran secara visual
bagaimana data diproses, sehingga
akan lebih memperjelas bagaimana algoritma di implementasikan
pada program komputer.
Ada
berbagai macam bentuk (simbol) yang berbeda dalam flowchart, di mana
masing-masing simbol mewakili proses langkah tertentu. Awal dan akhir diwakili
simbol Oval, Input dan Output
diwakili simbol Jajar genjang dan Proses diwakili
oleh Persegi panjang.
Keempat simbol tersebut
merupakan simbol dasar dalam penyajian algoritma menggunakan flowchart.
Struktur Percabangan
Struktur percabangan
adalah suatu struktur algoritma atau pemrograman komputer yang melibatkan suatu
kondisi atau persyaratan untuk melakukan operasi-operasi khusus, tergantung
kondisi yang syaratkan.
Struktur Percabangan Sederhana
Struktur
Percabangan sederhana adalah struktur algoritma yang hanya melibatkan satu
kondisi, jika kondisi terpenuhi atau bernilai true (benar) maka pernyataan-pernyataan akan dijalankan jika
kondisi bernilai false (salah)
pernyataan-pernyataan akan dilewati tidak dijalankan. Bentuk umumnya sebagai
berikut :
Jika
<kondisi> maka
<pernyataan>
Atau
Jika
<kondisi> maka
<pernyataan 1>
<pernyataan 2>
Dst
Contoh 1 :
Jika Bil
< 5 maka TampilkanDilayar
Contoh 2 :
Sebuah Algoritma dirancang dengan ketentuan diberikan bonus kepada karyawan yang berhasil
mencapai target penjualan lebih dari 100 juta. Bonus yang diberikan kepada karyawan yaitu
sebesar 1% dari omset penjualan yang dia capai.
Dari keterangan itu algoritma memerlukan
inputan nama karyawan, besar penjualan, gaji pokok, bonus, dan total gaji yang
diterimakan.
Dari permasalahan di atas dapat
dibentuk algoritma sebagai berikut.
Dalam pseudocode bentuknya sebagai
berikut :
IF
(kondisi) THEN
Pernyataan1
Pernyataan2
Dst
Contoh 2Untuk Flowchart bentuknya sebagai berikut
Contoh :
Pustaka :
Maryono Dwi, Pambudhi Dhidhi, Pemrograman Dasar Untuk SMK/MAK Kelas X Semester
1, Kementerian Pendidikan dan Kebudayaan Republik Indonesia, Jakarta, 2014