ARTIKEL
ALGORITMA & PEMROGRAMAN
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.
2. Algoritma dan Program
Pertimbangan kedua yang ritma 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.
3. 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.
4. 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.
-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.
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).
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.
-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 teknik-
teknik 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 dar
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.
-Penyajian Algoritma
Penyajian algoritma secara garis besar bisa dalam 2 bentuk
penyajian yaitu
tulisan dan gambar. Algoritma yang disajikan dengan tulisan
yaitu dengan
struktur bahasa tertentu (misalnya bahasa Indonesia atau
bahasa Inggris)
dan pseudocode. Pseudocode adalah kode yang mirip
dengan kode
pemrograman yang sebenarnya seperti Pascal, atau C, sehingga
lebih tepat
digunakan untuk menggambarkan algoritma yang akan
dikomunikasikan
kepada pemrogram. Sedangkan algoritma disajikan dengan
gambar,
misalnya dengan flowchart. Secara umum,
pseudocode mengekspresikan
ide-ide secara informal dalam proses penyusunan algoritma.
Salah satu cara
untuk menghasilkan kode pseudo adalah dengan meregangkan
aturan-aturan
bahasa formal yang dengannya versi akhir dari algoritma
akan
diekspresikan. Pendekatan ini umumnya digunakan ketika
bahasa
pemrograman yang akan digunakan telah diketahui sejak
awal.
Flowchart merupakan gambar atau bagan yang memperlihatkan
urutan dan
hubungan antar proses beserta pernyataannya. Gambaran ini
dinyatakan
dengan simbol. Dengan demikian setiap simbol menggambarkan
proses
tertentu. Sedangkan antara proses digambarkan dengan
garis penghubung.
Dengan menggunakan flowchart akan memudahkan kita untuk
melakukan
pengecekan bagian-bagian yang terlupakan dalam analisis
masalah. Di
samping itu flowchart juga berguna sebagai fasilitas
untuk berkomunikasi
antara pemrogram yang bekerja dalam tim suatu proyek.
Tidak ada komentar:
Posting Komentar