1.1.
Apakah Itu Algoritma
Oleh : Fahrorozi
Ditinjau
dari asal-usul katanya, kata Algoritma sendiri mempunyai sejarah yang aneh.
Orang hanya menemukan kata algorism yang berarti proses menghitung dengan angka
arab. Anda dikatakan algorist jika Anda menghitung menggunakan angka arab.
Para ahli bahasa berusaha menemukan asal kata ini namun hasilnya kurang
memuaskan. Akhirnya para ahli sejarah matematika menemukan asal kata tersebut
yang berasal dari nama penulis buku arab yang terkenal yaitu Abu Ja’far
Muhammad Ibnu Musa Al-Khuwarizmi. Al-Khuwarizmi dibaca orang barat menjadi
Algorism. Al-Khuwarizmi 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 kata dari 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
biasa, maka lambat laun kata algorithm berangsur-angsur dipakai sebagai metode
perhitungan (komputasi) secara umum, sehingga kehilangan makna kata aslinya.
Dalam bahasa Indonesia, kata algorithm diserap menjadi algoritma.
1.1.1. Definisi Algoritma
“Algoritma
adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara
sistematis dan logis”. Kata logis merupakan kata kunci dalam algoritma.
Langkah-langkah dalam algoritma harus logis dan harus dapat ditentukan bernilai
salah atau benar.
Dalam
beberapa konteks, algoritma adalah spesifikasi urutan langkah untuk melakukan
pekerjaan tertentu. Pertimbangan dalam pemilihan algoritma adalah, pertama,
algoritma haruslah benar. Artinya algoritma akan memberikan keluaran yang
dikehendaki dari sejumlah masukan yang diberikan. Tidak
peduli
sebagus apapun algoritma, kalau memberikan keluaran yang salah, pastilah
algoritma tersebut bukanlah algoritma yang baik.
Pertimbangan
kedua yang harus diperhatikan adalah kita harus mengetahui seberapa baik hasil
yang dicapai oleh algoritma tersebut. Hal ini penting terutama pada algoritma
untuk menyelesaikan masalah yang memerlukan aproksimasi hasil (hasil yang hanya
berupa pendekatan). Algoritma yang baik harus mampu memberikan hasil yang
sedekat mungkin dengan nilai yang sebenarnya.
Ketiga adalah efisiensi algoritma. Efisiensi
algoritma dapat ditinjau dari 2 hal yaitu efisiensi waktu dan memori. Meskipun
algoritma memberikan keluaran yang benar (paling mendekati), tetapi jika kita
harus menunggu berjam-jam untuk mendapatkan keluarannya, algoritma tersebut
biasanya tidak akan dipakai, setiap orang menginginkan keluaran yang cepat.
Begitu juga dengan memori, semakin besar memori yang terpakai maka semakin
buruklah algoritma tersebut.
Dalam kenyataannya, setiap orang bisa membuat
algoritma yang berbeda untuk menyelesaikan suatu permasalahan, walaupun terjadi
perbedaan dalam menyusun algoritma, tentunya
kita mengharapkan keluaran yang sama. Jika terjadi demikian, carilah
algoritma yang paling efisien dan cepat.
1.1.2. Beda Algoritma dan Program
Program adalah kumpulan pernyataan komputer,
sedangkan metode dan tahapan sistematis dalam program adalah algoritma. 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)
Bagaimanapun juga 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:
1. Pembuatan atau penulisan algoritma tidak
tergantung pada bahasa pemrograman manapun, artinya penulisan algoritma
independen dari bahasa pemrograman dan komputer yang melaksanakannya.
2. Notasi algoritma dapat diterjemahkan ke dalam
berbagai bahasa pemrograman.
3. Apapun bahasa pemrogramannya, output yang
akan dikeluarkan sama karena algoritmanya sama.
Beberapa
hal yang perlu diperhatikan dalam membuat algoritma:
1. Teks algoritma berisi deskripsi
langkah-langkah penyelesaian masalah.
Deskripsi
tersebut dapat ditulis dalam notasi apapun asalkan mudah dimengerti dan
dipahami.
2. Tidak ada notasi yang baku dalam penulisan
teks algoritma seperti notasi bahasa pemrograman. Notasi yang digunakan dalam
menulis algoritma disebut notasi algoritmik.
3. 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.
4. 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.
5. Algoritma sebenarnya digunakan untuk membantu kita dalam mengkonversikan
suatu permasalahan ke dalam bahasa pemrograman.
6. 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.
1.1.3. Algoritma Merupakan Jantung
Ilmu Informatika
Algoritma adalah jantung ilmu komputer atau
informatika. Banyak cabang ilmu komputer yang mengarah ke dalam terminologi
algoritma. Namun, jangan beranggapan algoritma selalu identik dengan ilmu
komputer saja.
Dalam
kehidupan sehari-hari pun banyak terdapat proses yang dinyatakan dalam suatu
algoritma. Cara-cara membuat kue atau masakan yang dinyatakan dalam suatu resep
juga dapat disebut sebagai algoritma.
Pada
setiap resep selalu ada urutan langkah-langkah membuat masakan. Bila
langkah-langkahnya tidak logis, tidak dapat dihasilkan masakan yang diinginkan.
Ibu-ibu yang mencoba suatu resep masakan akan membaca satu per satu
langkah-langkah pembuatannya lalu ia mengerjakan proses sesuai yang ia baca.
Secara umum, pihak (benda) yang mengerjakan proses disebut pemroses
(processor).
Pemroses
tersebut dapat berupa manusia, komputer, robot atau alat-alat elektronik
lainnya. Pemroses melakukan suatu proses dengan melaksanakan atau
“mengeksekusi” algoritma yang menjabarkan proses tersebut.
Algoritma adalah deskripsi dari suatu pola
tingkah laku yang dinyatakan secara primitif yaitu aksi-aksi yang didefenisikan
sebelumnya dan diberi nama, dan diasumsikan sebelumnya bahwa aksi-aksi tersebut
dapat kerjakan sehingga dapat menyebabkan kejadian.
Melaksanakan
algoritma berarti mengerjakan langkah-langkah di dalam algoritma tersebut.
Pemroses mengerjakan proses sesuai dengan algoritma yang diberikan kepadanya.
Juru masak membuat kue berdasarkan resep
yang diberikan kepadanya, pianis memainkan lagu berdasarkan papan not balok.
Karena itu suatu algoritma harus dinyatakan dalam bentuk yang dapat dimengerti
oleh pemroses. Jadi suatu pemroses harus:
1.
Mengerti setiap langkah dalam algoritma.
2.
Mengerjakan operasi yang bersesuaian dengan langkah tersebut.
1.1.4. Mekanisme Pelaksanaan
Algoritma oleh Pemroses
Komputer
hanyalah salah satu pemroses. Agar dapat dilaksanakan oleh komputer, algoritma
harus ditulis dalam notasi bahasa pemrograman sehingga dinamakan program. Jadi
program adalah perwujudan atau implementasi teknis algoritma yang ditulis dalam
bahasa pemrograman tertentu sehingga dapat dilaksanakan oleh komputer.
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?”. Jika Anda sudah memahami
pengertian algoritma yang sudah disebutkan sebelum ini, Anda dapat membedakan
arti kata algoritma dan program. 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 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 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.
Gambar 1.1
Gambar
1.1 Komponen-Komponen Utama Komputer Mekanisme kerja keempat komponen di atas
dapat dijelaskan sebagai berikut.
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 operasi- operasi 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).
1.1.5.
Belajar Memprogram dan Belajar Bahasa Pemrograman
Belajar
memprogram tidak sama dengan belajar bahasa pemrograman. Belajar memprogram
adalah belajar tentang metodologi pemecahan masalah, kemudian
menuangkannya dalam suatu notasi
tertentu yang mudah dibaca dan dipahami. Sedangkan belajar bahasa pemrograman
berarti belajar memakai suatu bahasa aturan-aturan tata bahasanya,
pernyataan-pernyataannya, tata cara pengoperasian compiler-nya, dan memanfaatkan
pernyataan-pernyataan tersebut untuk membuat program yang ditulis hanya dalam
bahasa itu saja. Sampai saat ini terdapat puluhan bahasa pemrogram, antara lain
bahasa rakitan (assembly), Fortran,
Cobol, Ada, PL/I, Algol, Pascal, C, C++, Basic, Prolog, LISP, PRG,
bahasa-bahasa simulasi seperti CSMP,
Simscript, GPSS, Dinamo.
Berdasarkan
terapannya, bahasa pemrograman dapat digolongkan atas dua kelompok besar:
1.
Bahasa
pemrograman bertujuan khusus.
Yang
termasuk kelompok ini adalah Cobol (untuk terapan bisnis dan administrasi).
Fortran (terapan komputasi ilmiah), bahasa rakitan (terapan pemrograman
mesin), Prolog (terapan kecerdasan
buatan), bahasa-bahasa simulasi, dan sebagainya.
2.
Bahasa
perograman bertujuan umum, yang dapat digunakan untuk berbagai aplikasi.
Yang
termasuk kelompok ini adalah bahasa Pascal, Basic dan C. Tentu saja pembagian
ini tidak kaku. Bahasa-bahasa bertujuan khusus tidak berarti tidak bisa
digunakan untuk aplikasi lain. Cobol misalnya, dapat juga digunakan untuk terapan
ilmiah, hanya saja kemampuannya terbatas.
Yang
jelas, bahasa-bahasa pemrograman yang berbeda dikembangkan untuk bermacam-macam
terapan yang berbeda pula.
Berdasarkan pada apakah notasi bahasa
pemrograman lebih “dekat” ke mesin atau ke bahasa manusia, maka bahasa
pemrograman dikelompokkan atas dua macam:
1. Bahasa
tingkat rendah. Bahasa jenis ini dirancang agar setiap instruksinya
langsung dikerjakan oleh komputer, tanpa harus melalui penerjemah (translator).
Contohnya
adalah bahasa mesin.
CPU mengambil
instruksi dari memori, langsung mengerti
dan langsung mengerjakan operasinya. Bahasa tingkat rendah bersifat primitif,
sangat sederhana, orientasinya lebih dekat ke mesin, dan
sulit
dipahami manusia. Sedangkan bahasa rakitan dimasukkan ke dalam kelompok ini
karena alasan notasi yang dipakai dalam bahasa ini lebih dekat ke mesin,
meskipun untuk melaksanakan instruksinya masih perlu penerjemahan ke dalam
bahasa mesin.
2. Bahasa
tingkat tinggi, yang membuat pemrograman lebih mudah dipahami, lebih “manusiawi”,
dan berorientasi ke bahasa manusia (bahasa Inggris). Hanya saja, program dalam
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.
Contoh
bahasa tingkat tinggi adalah Pascal,
PL/I, Ada, Cobol, Basic, Fortran, C, C++, dan sebagainya.
Bahasa
pemrograman bisa juga dikelompokkan berdasarkan pada tujuan dan fungsinya.
Di
antaranya adalah:
Secara
sistematis berikut diberikan kiat-kiat untuk belajar memprogram dan belajar
bahasa pemrograman serta produk yang dapat dihasilkan:
a. Belajar Memprogram
•
Belajar
memprogram: belajar bahasa pemrograman.
•
Belajar
memprogram: belajar tentang strategi pemecahan masalah, metodologi dan
sistematika pemecahan masalah kemudian menuliskannya dalam notasi yang
disepakati bersama.
•
Belajar
memprogram: bersifat pemahaman persoalan, analisis dan sintesis.
•
Belajar
memprogram, titik berat: designer program.
b. Belajar Bahasa Pemrograman
•
Belajar bahasa pemrograman: belajar memakai suatu bahasa pemrograman,
aturan sintaks, tatacara untuk memanfaatkan pernyataan yang spesifik untuk
setiap bahasa.
• Belajar bahasa pemrograman, titik berat:
coder.
c.
Produk yang Dihasilkan Pemrogram
•
Program dengan rancangan yang baik (metodologis, sistematis).
• Dapat dieksekusi oleh mesin.
• Berfungsi dengan benar.
• Sanggup melayani segala kemungkinan masukan.
• Disertai dokumentasi.
• Belajar memprogram, titik berat: designer
program.
Tidak ada komentar:
Posting Komentar