Algoritma
Saat ini, salah satu bidang yang banyak diminati dikalangan anak muda adalah bidang IPTEK lebih spesifiknya lagi adalah bidang pemrograman. Selain diminati prospek kerja untuk bidang ini sangat besar dan luas, karena kita tahu sendiri segala aktifitas manusia akan selalu berhubungan dengan komputer dan semacamnya.
Untuk mengetahui bagaimana sebenarnya pemrograman,bagaimana cara membuat program, hal pertama yang wajib kita ketahui adalah ALGORITMA
R E F R E N S I
Munir,Rinaldi.2016.Algoritma dan Pemrograman dalam Bahasa Pascal, C, C++.Bandung : Informatika Bandung
Sahyar.2016.Algoritma dan Pemrograman Menggunakan
MATLAB (Matrix Laboratory) Edisi Pertama.Jakarta : Kencana
Kristanto, Andri.2013.Algoritma & Pemrograman dengan C++ Edisi 3.Yogyakarta : Graha
Ilmu
https://andikafisma.files.wordpress.com
Untuk mengetahui bagaimana sebenarnya pemrograman,bagaimana cara membuat program, hal pertama yang wajib kita ketahui adalah ALGORITMA
Algoritma adalah urutan langkah-langkah untuk
menyelesaikan suatu persoalan.
Terdapat beberapa definisi lain tentang algoritma, tetapi pada prinsipnya
senada dengan pengertian yang diungkapkan diatas yang diungkapkan beberapa
literatur.
Algoritma adalah deretan langkah-langkahkomputasi
yang mentrasformasikan data masukan menjadi luaran [COR90].
Algoritma adalah deretan instruksi yang jelas untuk
memecahkan persoalan yaitu untuk memperoleh luaran yang diinginkan dari suatu
masukan dalam jumlah waktu yang terbatas [LEV03].
A. Sejarah
algoritma
Algoritma adalah jantung ilmu komputer atau informatika. Banyak cabang dari
ilmu koputer yang diacu dalam terminologi algoritma, misalnya algoritma
perutean (routing), pesan di dalam jaringan komputer algoritma Brensenham untuk menggambar garis
lurus (bidang grafika komputer), algoritma Knuth-Morris-Pratt untuk mencari
suatu pola di dalam teks (pattern
matching), dan sebagainya.
Ditinjau dari asal
usul kata, kata “algoritma” sendiri mempunyai sejarah yang cukup unik. Kata ini
tidak muncul di dalam kamus Webster sampai akhir tahun 1957, malah kata yang
ditemuka adalah algorism yang artinya
“proses menghitung dengan angka arab”[KNU73].
Para ahli bahasa
berusaha menemukan asal kata dari algorism ini namun hasilnya kurang memuaskan
, sampai akhirnya para ahli sejarah matematika menemukan asal muala kata
tersebut. Kata algorism berasal dari nama penulis buku arab yang
terkenal, yaitu Abu Ja’far Muhammad ibu Musa al –Khuwarizmi, yang 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 kita juga memperoleh akar kata aljabar.
Perubahan dari
kata 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 sudah biasa, maka lambat
laun kata algorithm, berangsur-angsur
dipakai sebagai metode perhitungan (komputasi) secara umum. Sehingga kehilangan
makna aslinya [PAR95]. Dalam bahasa Indonesia, kata algorithm deserap menjadi algoritma.
Pada tahun 1950,
kata algoritma pertama kali disandangkan dengan “algoritma Euclidean”(Euclid’s algorithm). Euclid, seorang
matematikawan Yunani yang lahir pada tahun 350 M. Dalam bukunya berjudul
Element menuliskan langkah-langkah untuk menemukan pebagi bersama terbesar (common greatest divisor atau gcd). Dari
dua bilangan bulat, m dan n [KNU73]. Tentu saja Euclid tidak menyebut metode
gcd-nya itu dengan algoritma, baru di abad moderenlah orang menyebut metodenya
itu sebagai “algoritma Euclidean”. Pemagi besama terbesar dari dua buah
bilangan bulat tak-negatif adalah
bilangan bulat positif terbesar yang habis membagi kedua bilangan tersebut.
B. Beda
Algoritma dan Program
Program adalah kumpulan pernyataan komputer, sedangkan algoritma merupakan metode dan tahapan sistematis dalam program. Program ditulis dengan
menggunakan bahasa pemrograman. Jadi bisa disebut bahwa program adalah suatu
implementasi dari bahasa pemrograman. Beberapa pakar memberi formula bahwa :
Program = Algoritma + Bahasa (Struktur
Data)
Struktur data dan algoritma berhubungan sangat erat
pada sebuah program. Algoritma yang baik tanpa pemilihan struktur data yang
tepat akan membuat program menjadi kurang baik, demikian juga sebaliknya.
Pembuatan algoritma mempunyai banyak keuntungan di
antaranya :
·
Pembuatan
atau penulisan algoritma tidak tergantung pada bahasa pemrograman manapun,
artinya penulisan algoritma independen dari bahasa pemrograman dan
komputer yang melaksanakannya.
·
Notasi algoritma
dapat diterjemahkan ke dalam berbagai bahasa pemrograman.
·
Apapun
bahasa pemrogramannya, output yang akan dikeluarkan sama karena
algoritmanya sama.
Beberapa hal yang perlu diperhatikan dalam membuat
algoritma :
·
Teks
algoritma berisi deskripsi langkah-langkah penyelesaian masalah. Deskripsi
tersebut dapat ditulis dalam notasi apapun asalkan mudah dimengerti dan
dipahami.
·
Tidak ada
notasi yang baku dalam penulisan teks algoritma seperti notasi bahasa
pemrograman. Notasi yang digunakan dalam menulis algoritma disebut notasi
algoritmik.
·
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.
·
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.
·
Algoritma
sebenarnya digunakan untuk membantu kita dalam mengkonversikan suatu
permasalahan ke dalam bahasa pemrograman.
·
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 kita terikat dengan
aturan sintaksis dalam bahasa pemrograman yang akan digunakan.
e. Tampilan hasil
Pada saat membuat algoritma kita tidak memikirkan
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.
C. Mekanisme Pelaksanaan
Algoritma oleh Pemroses
Kata “algoritma” dan “program” seringkali dipertukarkan dalam
penggunaannya. Misalnya ada orang yang berkata seperti ini: “program pengurutan
data menggunakan algoritma selection sort”. Atau pertanyaan seperti ini:
“bagaimana algoritma dan program menggambarkan grafik tersebut?”. Algoritma adalah langkah-langkah
penyelesaikan masalah, sedangkan program adalah realisasi algoritma dalam
bahasa pemrograman. Program ditulis dalam salah satu bahasa pemrograman dan
kegiatan membuat program disebut pemrograman (programming). Orang
yang menulis program disebut pemrogram (programmer). Tiap-tiap
langkah di dalam program disebut pernyataan atau instruksi. Jadi,
program tersusun atas sederetan instruksi. Bila suatu instruksi dilaksanakan,
maka operasi-operasi yang bersesuaian dengan instruksi tersebut dikerjakan
komputer.
Secara garis besar komputer tersusun atas empat komponen utama yaitu,
piranti masukan, piranti keluaran, unit pemroses utama, dan memori. Unit
pemroses utama (Central Processing Unit – CPU) adalah “otak” komputer,
yang berfungsi mengerjakan operasi-operasi dasar seperti operasi perbandingan,
operasi perhitungan, operasi membaca, dan operasi menulis. Memori adalah
komponen yang berfungsi menyimpan atau mengingatingat.
Yang disimpan di dalam memori adalah program (berisi operasi-operasi
yang akan dikerjakan oleh CPU) dan data atau informasi (sesuatu yang diolah
oleh operasi-operasi). Piranti masukan dan keluaran (I/O devices) adalah
alat yang memasukkan data atau program ke dalam memori, dan alat yang digunakan
komputer untuk mengkomunikasikan hasil-hasil aktivitasnya. Contoh piranti
masukan antara lain, papan kunci (keyboard), pemindai (scanner),
dan cakram (disk). Contoh piranti keluaran adalah, layar peraga (monitor),
pencetak (printer), dan cakram.
Mekanisme
kerja keempat komponen di atas , mula-mula program dimasukkan ke dalam memori komputer. Ketika program
dilaksanakan (execute), setiap instruksi yang telah tersimpan di dalam
memori dikirim ke CPU. CPU mengerjakan operasioperasi yang bersesuaian dengan
instruksi tersebut. Bila suatu operasi memerlukan data, data dibaca dari
piranti masukan, disimpan di dalam memori lalu dikirim ke CPU untuk operasi
yang memerlukannya tadi. Bila proses menghasilkan keluaran atau informasi,
keluaran disimpan ke dalam memori, lalu memori menuliskan keluaran tadi ke
piranti keluaran (misalnya dengan menampilkannya di layar monitor).
D. Menilai Sebuah Algoritma
Ketika manusia berusaha memecahkan masalah, metode
atau teknik yang digunakan untuk memecahkan masalah itu ada kemungkinan bisa
banyak (tidak hanya satu). Dan kita memilih mana yang terbaik di antara
teknikteknik itu. Hal ini sama juga dengan algoritma, yang memungkinkan suatu
permasalahan dipecahkan dengan metode dan logika yang berlainan. Yang menjadi
pertanyaan adalah bagaimana mengukur mana algoritma yang terbaik? Beberapa
persyaratan untuk menjadi algoritma yang baik adalah:
·
Tingkat kepercayaannya tinggi (realibility). Hasil yang diperoleh dari proses harus berakurasi
tinggi dan benar.
·
Pemrosesan yang efisien (cost rendah). Proses harus diselesaikan secepat mungkin dan
frekuensi kalkulasi yang sependek mungkin.
·
Sifatnya general. Bukan sesuatu yang hanya untuk menyelesaikan satu kasus saja, tapi juga
untuk kasus lain yang lebih general.
·
Bisa dikembangkan (expandable). Haruslah sesuatu yang dapat kita kembangkan lebih
jauh berdasarkan perubahan requirement yang ada.
·
Mudah dimengerti. Siapapun yang melihat, dia akan bisa memahami algoritma Anda. Susah
dimengertinya suatu program akan membuat susah di-maintenance (kelola).
·
Portabilitas yang tinggi (portability). Bisa dengan mudah diimplementasikan di berbagai platform
komputer.
·
Precise (tepat, betul, teliti). Setiap instruksi harus ditulis dengan seksama dan
tidak ada keragu-raguan, dengan demikian setiap instruksi harus dinyatakan
secara eksplisit dan tidak ada bagian yang dihilangkan karena pemroses dianggap
sudah mengerti. Setiap langkah harus jelas dan pasti.
Contoh : Tambahkan 1 atau 2 pada x.
Instruksi di atas terdapat keraguan.
·
Jumlah langkah atau instruksi berhingga dan
tertentu. Artinya,
untuk kasus yang sama banyaknya, langkah harus tetap dan tertentu meskipun
datanya berbeda.
·
Efektif. Tidak boleh ada instruksi yang tidak mungkin dikerjakan oleh pemroses
yang akan menjalankannya.
Contoh : Hitung akar 2 dengan presisi
sempurna.
Instruksi di atas tidak efektif, agar efektif
instruksi tersebut diubah.
Misal : Hitung akar 2 sampai lima digit di belakang
koma.
·
Harus terminate. Jalannya algoritma harus ada kriteria berhenti.
Pertanyaannya adalah apakah bila jumlah instruksinya berhingga maka pasti terminate?
·
Output yang dihasilkan tepat. Jika langkah-langkah algoritmanya logis dan
diikuti dengan seksama maka dihasilkan output yang diinginkan.
E. Karekteristik Algoritma
Algoritma
berisi urtan langkah-langkah untuk meneyelesaikan persoalan yang diberikan.
Pada dasarnya sebuah algoritma menerima beberapa masukan (input), memprosesnya
dalam urutan langkah-langkah tadi, dan menghasilkan luaran (output).
Menurut Donald E.Knuth di
dalam Art of Computer Programming
[KNU73], sebuah algoritma harus mempunyak lima ciri penting:
1. Algoritma
harus bergenti setelah mengerjakan sejumlah langkah terbatas.Sebagai contoh,
pada algoritma mempertukarkan isi gelas A ke B dan B ke A,algoritma berhenti
setelah larutan dituangkan dari gelas C ke gelas B.
2. Setiap
langkah harus didefinisakn dengan tepat dan tidak boleh berarti-dua (ambiguous). Contoh, pertanyaan “bagilah
p dengan sejumlah beberapa buah bilangan bulat positif” dapat bermakna ganda
3. Algortima
memiliki o atau lebih masukan (input).Masukan
ialah parameter nilai yang diberikan kepada algoritma untuk diproses.
4. Algoritma
memunyai nol atau lebih luaran (output).Luaran
dapat berupa pesan atau besaran yang memiliki bubungan dengan masukan
5. Algoritma
harus sangkil (effective).Setiap
langkah harus sederhana sehingga dapat dikerjakan dalam sejumlah waktu yang
masuk akal
R E F R E N S I
Munir,Rinaldi.2016.Algoritma dan Pemrograman dalam Bahasa Pascal, C, C++.Bandung : Informatika Bandung
https://andikafisma.files.wordpress.com
Komentar
Posting Komentar