MODUL I
PENGANTAR ALGORITMA
1.1 Pendahuluan
Komputer (hardware) dibuat sebagai alat bantu untuk
menyelesaikan masalah. Permasalahan apa pun dapat diselesaikan
oleh komputer asalkan langkah-langkah penyelesaianya disediakan
oleh manusia (brainware). Dengan kata lain, manusia menulis program
(software) yang berisi urutan langkah-langkah penyelesaian masalah,
lalu program tersebut dimasukkan ke dalam komputer. Dalam hal ini,
komputer hanya bertindak menjalankan perintah-perintah yang tertulis
di dalam program tersebut. Sebenarnya manusia sendiri mampu
melaksanakan perintah-perintah tersebut, tetapi komputer mempunyai
kelebihan dibandingkan manusia. Komputer adalah benda mati, jadi ia
tidak mengenal lelah dan bosan. Komputer mampu mengerjakan
perintah yang banyak sekalipun, selain itu ia juga mampu
mengerjakan suatu perintah yang sama berulang kali, 100 kali, sejuta
kali, atau berapa kalipun yang manusia perintahkan. Manusia suka
pelupa, sedangkan komputer tidak. Komputer memiliki memori yang
besar sehingga ia mampu menyimpan data dan informasi dalam
volume yang banyak.
1.2 Sejarah Algoritma
Ditinjau dari asal kata, kata algoritma sendiri mempunyai
sejarah yang aneh. Kata ini tidak muncul di dalam kamus Webster
sampai akhir tahun 1957. Orang hanya menemukan kata algorism
yang berarti menghitung dengan angka Arab [KNU73], Anda dikatakan
algorist jika adan menggunakan angka Arab. Para ahli bahasa
berusaha menemukan asal kata algorism ini namun hasilnya kurang
memuaskan. Akhirnya para ahli sejarah matematika menemukan asal
mula kata tersebut. Kata algorism berasal dari nama penulis buku
Arab yang terkenal, yaitu Abu Ja’far Muhammad Ibnu Musa Al-
Khuwarizmi (al-Khuwarizmi dibaca orang Barat algorism). Alkhuwarizmi
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” (algebra). Perubahan dari kata algorism menjadi
algorithm muncul karena kata algorithm berangsur-angsur dipakai
sebagai metode perhitungan (komputasi) secara umum, sehingga
kehilangan makna aslinya [PAR95]. Dalam bahasa Indonesia
algorithm diserap menjadi algoritma.
1.3 Algoritma Merupakan Jantung Informatika
Algoritma adalah jantung ilmu komputer atau informatika.
Banyak cabang ilmu komputer yang diacu dalam terminologi algoritma.
Dalam kehidupan sehari-hari pun banyak terdapat proses yang
digambarkan dalam suatu algoritma. Cara-cara membuat kue atau
masakan, misalnya dinyatakan dalam suatu resep. Resep masakan
adalah suatu algoritma, misalnya resp membuat Otak-otak Ikan
Bandeng (dikutip dari Tabloid Nova 25 Agustus 1996) seperti dapat
anda baca di bawah ini :
#Resep Otak-otak Ikan Bandeng
Bahan :
• 2 ekor ikan bandeng ukuran kecil
• 2 buah kentang kukus
• 2 butir telur
• 2 tangkal daun bawang, dirajang halus
• 75 cc santan kental
• 3 butir kemiri sangrai
• 1 sendok teh ketumbar halus
• 2 siung bawang putih
• 3 butir bawang merah
• 2 cabe merah tanpa biji
• garam dan merica secukupnya
• minyak goreng secukupnya
Cara membuat :
1. Haluskan kemiri, ketumbar, bawang putih, bawang
merah, cabe merah, garam dan merica. Sisihkan.
2. Ambil ikan bandeng yang telah dibersihkan,
pukul-pukul dengan anak lumpang hingga daging
ikan hancur di dalam.
3. Tekuk ekor ikan ke arah atas hingga terdengar
bunyi “klik” sebagai tanda tulang telah patah.
4. tarik tulang ke arah atas melalui bagian kepala.
Keluarkan pula isi dagingnya. Sisihkan tulang
halus yang masih tersisa.
5. Giling daging ikan bersama bumbu halus. Tuangkan
santan. Campur dengan kentang kukus. Aduk rata.
6. Isikan adonan ikan ke dalam kulit bandeng. Kukus
selama 20 menit.
7. Goreng hingga matang.
1.4 Mekanisme Pelaksanaan Program oleh Komputer
Secara garis besar komponen tersusun atas empat komponen
utama : 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 mengingat-ingat. Yang disimpan di dalam memori
adalah program (berisi operasi-operasi yang akan dikerjakan oleh
CPU) dan data atau informasi (sesuatu yang diolah oleh operasioperasi).
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 ketik
(keyboard), pemindai (scanner), tetikus (mouse), joystick, dan cakram
(disk). Contoh piranti keluaran adalah layar peraga (monitor), pencetak
(printer), perajah (plotter), dan cakram.
1.5 Belajar Memprogram dan Belajar Bahasa Pemrograman
Belajar memprogram tidak sama dengan belajar bahasa
pemrograman [LIE96]. Belajar memprogram adalah belajar tentang
metodologi pemecahan masalah, kemudian menuangkan algoritma
pemecahan masalah dalam suatu notasi tertentu. Sedangkan belajar
bahasa pemrograman berarti belajar memakai suatu bahasa, aturan
tata bahasanya, instruksi-instruksinya, tata cara pengoperasian
compiler-nya, dan memanfaatkan instruksi-instruksi tersebut membuat
program yang ditulis hanya dalam bahasa itu saja [LIE96].
Berdasarkan ”kedekatan” bahasa pemrograman apakah lebih
condong ke bahasa mesin atau ke bahasa manusia, maka bahasa
pemrograman juga dapat dikelompokkan atas dua macam :
1. Bahasa Tingkat Rendah. Bahasa jenis ini dirancang agar
instruksinya langsung dikerjakan oleh komputer, tanpa harus
melalui penerjemah (translator). Contohnya adalah bahasa mesin
(machine language). Bahasa mesin adalah sekumpulan kode biner
(0 dan 1). Setiap perintah dalam bahasa mesin langsung
“dimengerti” oleh mesin dan langsung dikerjakan. Bahasa tingkat
rendah bersifat primitif, sangat sederhana dan relatif sulit dipahami
manusia. Bahasa assembly dimasukkan ke dalam kelompok ini
karena notasi yang dipakai dalam bahasa ini merupakan bentuk
“manusiawi” dari bahasa mesin, dan untuk melaksanakan
instruksinya masih diperlukan penerjemah (oleh assembler) ke
dalam bahasa mesin. Bahasa tingkat rendah merupakan bahasa
pemrograman generasi pertama yang pernah ditulis orang.
2. Bahasa tingkat tinggi. Bahasa jenis ini membuat program menjadi
lebih mudah dipahami, lebih “manusiawi”, dan lebih dekat dengan
bahasa manusia (bahasa Inggris terutama). Kelemahannya,
program 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. Tahapan
pemrograman dan pelaksanaan program oleh komputer
digambarkan dibawah ini. Contoh bahasa tingkat tinggi adalah
Pascal, PL/I, Ada, Cobol, Basic, Fotran, C, C++, dan sebagainya.
1.6 Notasi Algoritmik
Yang perlu dicatat adalah bahwa notasi algoritmik bukan notasi
bahasa pemrograman, sehingga siapapun dapat membuat notasi
algoritmik yang berbeda. Hal yang penting mengenai notasi tersebut
adalah ia mudah dibaca dan dimengerti. Selain itu, meskipun notasi
algoritmik bukan notasi baku sebagaimana pada notasi bahasa
pemrograman, manun ketaatasasan terhadap notasi perlu perlu
diperhatikan untuk menghindari kekeliruan.
Di bawah ini saya kemukakan beberapa notasi yang digunakan
untuk menulis algoritma. Masalah yang dijadikan contoh adalah
menghitung pembagi bersama tersebar dengan algoritma Euclidean.
1. Notasi I menyatakan langkah-langkah algoritma dengan untaian
kalimat deskriptif :
PROGRAM Euclidean
1. Diberikan dua bilangan bulat tak-negatif n dan
n (n > n). Algoritma Euclidean mencari pembagi
bersama terbesar, god, dari kedua bilangan
tersebut, yaitu bilangan bulat positif terbesar
yang habis membagi m dan n.
ALGORITMA
Jika n = 1 maka
m adalah jawabannya;
stop.
tetapi jika n ≠ 0.
lanjutkan ke langkah 2.
Bagilah n dengan n dan misalkan r adalah
sisanya.
Ganti nilai n dengan nilai n adalah nilai n
dengan nilai r, lalu ulang kembali ke langkah
1.
Dengan notasi bergaya kalimat ini, deskripsi setiap langkah
dijelaskan dengan bahasa yang gamblang. Proses diawali dengan
kata kerja seperti “baca”, “hitung”, “bagi”, “ganti”, dan sebagainya,
sedangkan pernyataan kondisional dinyatakan dengan “jika …
maka …”
Secara umum, notasi ini relatif sukar diterjemahkan langsung ke
dalam bahasa pemrograman.
2. Notasi II : menggunakan diagram alir (flow chart)
Keterangan :
1. MOD adalah operator pembagian bilangan bulat yang
menghasilkan sisa hasil pembagian. Contohnya, 9 MOD 2 = 1
karena 9 dibagi 2 = 4 dan memberikan sisa 1.
2. Di dalam diagram alir di atas ditambahkan instruksi pembacaan
nilai n dan n.
Diagram alir populer pada awal era pemrograman dengan
komputer (terutama dengan bahasa Basic, Fortran, dan Cobol).
Sampai saat ini diagram alir masih banyak digunakan orang
untuk menjelaskan proses. Namun, diagram alir lebih
menggambarkan aliran instruksi di dalam program secara visual
ketimbang memperlihatkan struktur program. Kotak empat
persegi panjang menyatakan proses, sedangkan pernyataan
kondisional dinyatakan bentuk intan (diamond). Notasi algoritmik
dengan diagram alir cocok untuk masalah yang kecil, namun
tidak cocok untuk masalah yang besar karena membutuhkan
berlembar halaman kertas. Selain itu, pengkonversian notasi
algoritma ke notasi bahasa pemrograman juga cenderung relatif
sukar.
3. Notasi III : menggunakan pseudo-code.
Pseudocode (pseudo artinya semu atau tidak sebenarnya) adalah
notasi yang menyerupai notasi bahasa pemrograman tingkat tinggi,
khususnya Bahasa Pascal dan C. Hasil pengamatan
memperlihatkan bahwa pemrograman umumnya mempunyai notasi
yang hampir mirip untuk beberapa instruksi, seperti notasi if-thenelse,
while-do, repeat-until, read, write, dan sebagainya.
Berdasarkan pengamatan tersebut, maka beberapa penulis buku
algoritma, termasuk penulis buku ini, mendefiniskan notasi
algoritma yang disebut pseudocode itu. Tidak seperti bahasa
pemrograman yang direpotkan dengan tanda titik koma
(semicolon), indeks, format keluaran, kata-kata khusus, dan
sebagainya, sembarang versi pseudocode dapat diterima asalkan
perintahnya tidak membingungkan pembaca. Keuntungan
menggunakan notasi pseudocode dengan notasi bahasa
pemrograman. Korespondesi ini dapat diwujudkan dengan tabel
translasi dari notasi algoritma ke notasi bahasa pemrograman apa
pun.
1.7 Pemrograman Prosedural
Algoritma berisi urutan langkah-langkah penyelesaian
masalah. Ini berarti algoritma adalah menggunakan proses yang
prosedural. Definisi prosedur menurut Kamus Besar Bahasa Indonesia
(KBBI) :
Prosedur : 1. tahap-tahap kegiatan untuk menyelesaikan
suatu aktivitas
2. metode langkah demi langkah secara eksak
dalam memecahkan masalah (KBBI – 1988).
Pada pemrograman prosedural, program dibedakan antara
bagian data dengan bagian instruksi. Bagian instruksi terdiri atas
runtunan (sequence) instruksi yang dilaksanakan satu per satu secara
berurutan oleh sebuah pemroses. Alur pelaksanaan instruksi dapat
berubah karena adanya pencabangan/kondisional. Data yang
disimpan di dalam memori dimanipulasi oleh instruksi secara
berurutan. Kita katakan bahwa tahapan pelaksanaan program
mengikuti pola berurutan atau prosedural. Paradigma pemrograman
seperti ini dinamakan pemrograman prosedural.
Bahasa-bahasa tingkat tinggi seperti cobal, basic, pascal,
fortran, dan C mendukung kegiatan pemrograman prosedural, karena
itu mereka dinamakan juga bahasa prosedural.
Selain paradigma pemrograman prosedural, adalagi paradigma
yang lain yaitu pemrograman berorientasi objek (Object Oriented
Programming atau OOP). Paradigma pemrograman yang disebutkan
terakhir ini merupakan trend baru dan sangat populer akhir-akhir ini.
Pada paradigma OOP, data dan instruksi dibungkus (encapsulation)
menjadi satu. Kesatuan ini disebut kelas (class) dan instansiasi kelas
pada saat run-time disebut objek (object). Data di dalam objek hanya
dapat diakses oleh instruksi yang ada di dalam objek itu saja.
Paradigma pemrograman yang lain adalah pemrograman
fungsional, pemrograman deklaratif dan pemrograman konkuren.
Buku ini hanya menyajikan paradigma pemrograman prosedural saja.
Paradigma pemrograman yang lain di luar cakupan buku.
Minggu, 07 November 2010
Langganan:
Posting Komentar (Atom)

Tidak ada komentar:
Posting Komentar