Rabu, 02 April 2014

ARTIKEL ALGORITMA & PEMROGRAMAN


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