Bagaimana agar kita mahir dalam membuat program



Belajar Memrogram dan Pemrograman

Belajar memrogram tidak sama dengan belajar bahasa pemrograman. Belajar memrogram berarti mempelajari metodologi pemecahan masalah, kemudian menuliskan algoritma pemecahan masalah dalam notasi tertentu . Sedangkan belajar bahasa pemrograman berarti belajar memakai suatu bahasa komputer, aturan tata bahasanya, instruksi-instruksinya, tata cara pengoperasian compiler-nya, dan memanfaatkan instruksi-instruksi tersebut untuk membuat program yang ditulis hanya dalam bahasa itu saja.

Di dalam pemrograman, kita lebih menekankan pada pemecahan masalah, sementara menulis kode program adalah aktivitas terakhir. Mula-mula kita pikirkan rancangan pemecahan masalah tanpa bergantung pada bahasa pemrograman yang digunakan atau computer yang menjalankan program  itu nanti. Rancangan tersebut berisi urutan langkah-langkah pencapaian solusi yang biasanya ditulis dalam notasi-notasi deskriptif ( notasi ini nanti kita namakan notasi algoritmik ). Karena belajar memprogram yang baik bukanlah belajar membuat program “yang penting hasilnya benar” , tetapi perlu dipikirkan membuat program dengan menggunakan skema yang benar. Hal ini akan membuat proram yang kita buat dapat bersih dari kesalahan yang timbul pada waktu eksekusi.

Bila rancangan pemecahan masalah sudah dibuat dengan skema yang benar, maka rancangan tersebut siap dikodekan kedalam bahasa pemrograman agar program bisa dieksekusi oleh komputer. Di sinilah perlunya kita belajar bahasa pemrograman. Ada banyak bahasa pemrograman yang tersdia saat ini, tetapi desain pemecahan masalah harus dapat diterjemahlan ke dalam bahasa apapun.
Hingga saat ini terdapat puluhan bahasa pemrograman. Kita dapat menyebutkan diantaranya bahasa rakitan (assembly), Fortran, Cobol, Ada, PL/I, Algol, Pascal, C, C++, Basic, Prolog, LISP, PRG, bahasa-bahasa simulasi seperti CSMP, Simscript, GPSS, dan masih banyak lagi. Belakangan juga muncul bahasa pemrograman baru seperti Java dan C#.

Berdasaarkan tujuan aplikasinya, bahasa pemrograman dapat digolongkan menjadi dua kelompok :
1.       Bahasa pemrograman bertujuan khusus ( specific purpose programming language ). Yang termasuk kelompok ini adalah Cobol (untuk terapan bisnis dan administrasi ), Fortran (aplikasi komputasi ilmiah), bahasa assembly (aplikasi pemrograman mesin), Prolog (aplikasi kecerdasan buatan), bahasa-bahasa simulasi (Simscript), dan sebagainya.
2.       Bahasa pemrograman bertujuan umum (general purpose programming language) yang dapat digunakan untuk berbagai aplikasi. Yang termasuk kelompok ini adalah bahasa Pascal, Basic, C, dan C++.

Tentu saja pembagian ini tidak benar-benar kaku. Bahasa-bahasa bertujuan khusus tidak berarti tidak bisa digunakan untuk aplikasi lain. Cobol misalnya, dapat juga digunakan untuk terapan ilmiah, tetapi tentu kemampuannya sangat terbatas. Yang jelas, bahasa-bahasa pemrograman yang berbeda dikembangkan untuk bermacam-macam kegunaan yang berbeda pula.

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 setiap instruksi 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 disebut primitif, sangat sederhana, dan relative 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 penerjemahan (oleh assembler) ke dalam bahasa mesin. Bahasa tingkat rendah merupakan bahasa pemrograman generasi pertama yan pernah ditulis orang.

2.       Bahasa tingkat tinggi.
Bahasa jenis ini membuat program menjadi lebih mudah dipahami, lebih “manusiawi”, dan lebih dekat ke bahasa manusia (bahasa Inggris terutama). Kelemhannya, program dalam bahasa tingkat tinggi tidak dapat langsung dilaksanakan oleh komputer. Ia perlu diterjemahkan terlebih dahuluoleh sebuah translator bahasa (yang disebut kompilator atau compiler) ke dalam bahasa mesin sebelum akhirnya dieksekusi oleh CPU. Tahapan pemrograman dan pelaksanaan program oleh komputer di gambarkan pada gambar di bawah ini.
Contoh bahasa tingkat tinggi adalah Pascal, PL/I, Ada, Cobol, Basic, Fortran, C, C++, dan sebagainya.



Sebenarnya batasan penggolongan bahasa pemrograman itu tidak selalu jelas. Pengertian tentang apa yang dimaksud dengan bahasa tingkat tinggi seringkali berbeda pada beberapa penulis. Ada penulis yang mendefinisikan bahasa tingkat tinggi dari sudut pandang kemudahan pemakaiannya serta orientasinya yang lebih dekat ke bahasa manusia. Les Goldschlager menuliskan spectrum bahasa mulai dari bahasa tingkat tinggi (Pascal, Ada, PL/I, Cobol), bahasa tingkat menengah (Bahasa assembly, Basic, Fortran), sampai bahasa tingkat rendah (bahasa mesin). Kita tidak mendebatkan perbedaan cara pengelompokkan bahasa pemrograman itu di sini, Karena buku ini tidak membahas spesifikasi bahasa pemrograman tetapi, sekali lagi, belajar memprogram..!!!

Notasi Algoritmik

Di dalam bab sebelumnya sudah kita nyatakan bahwa notasi algoritmik dibuat independen dari spesifikasi bahasa pemrograman dan perangkat keras komputer yang mengeksekusinya. Notasi algoritmik ini dapat diterjemahkan ke dalam berbagai bahasa pemrograman. Analoginya seperti resep membuat kue. Sebuah resep dapat ditulis dalam bahasa apapun, bahasa Inggris, Perancis, Indonesia, Jepang, dan sebagainya. Apa pun bahasa resep, kue yang dihasilkan tetap sama, sebab algoritmanya sama (dengan catatan semua aturan dalam resep diikuti). Mengapa bisa demikian  ? Karena setiap juru masak (yang merupakan pemroses) mampu melakukan operasi dasar yang sama, seperti mengocok telur, menimbang berat gula, dan sebagainya. Jadi, resep membuat kue tidak terikat pada bahasa dan juru masak yang mengerjakan.

Demikian pula halnya komputer. Meskipun setiap komputer berbeda teknologinya,tetapi secara umum semua komputer dapat melakukan operasi-operasi dasar dalam pemrograman seperti ooperasi pembacaan data, operasi perbandingan, operasi aritmetika, dan sebagainya. Perkembangan teknologi komputer tidak mengubah operasi- operasi dasar itu, yang berubah hanyalah kecepatan, biaya, atau tingkat ketelitian. Pada sisi lain, setiap program dalam bahasa tingkat tinggi selalu diterjemahkan kedalam bahasa mesin sebelum akhirnya dikerjakan oleh CPU. Setiap instruksi dalam bahasa mesin menyajikan operasi dasar  yang sesuai, dan menghasilkan efek netto yang sama pada setiap komputer.

Yang perlu dicatat adalah bahwa notasi algoritmik bukan bahasa pemrograman, sehingga siapa pun 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, namun ketaatan terhadap notasi perlu diperhatikan untuk menghindari kekeliruan.

Di bawah ini kita kemukakan beberapa notasi yang digunakan untuk menulis algoritma. Masalah yang dijadikan contoh ilustrasi adalah menghitung pembagi bersama terbesar dengan algoritma Euclidean.

1.       Notasi I : Menyatakan langkah-langkah algoritma dengan untaian kalimat deskriptif
Program Euclidean
Diberikan dua buah bilangan bulat tak-negatif m dan n (m >= n).
Algoritma Euclidean mencari pembagi bersama terbesar, gcd, dari kedua bilangan tersebut, yaitu bilangan bulat positif terbesar yang habis membagi m dan n.
Algoritma :
1.       Jika n = 0  maka
m adalah jawabannya;
stop.
tetapi jika n bukan 0,
lanjutkan ke langkah 2.
2.       Bagilah m dengan n dan misalkan r adalah sisanya.
3.       Ganti nilai m dangan n dan n dengan nilai r, lalu ulang kembali ke langkah 1.

Dengan notasi bergaya kalimat ini, deskripsi setiap langkah dijelaskan dengan bahasa yang gambling. Proses diawali dengan kata kerja seperti ‘baca’, ‘hitung’, ‘bagi’, ‘ganti’, dan sebagainya, sedangkan pernyataan kondisional dinyatakan dengan ‘jika….maka….’. Notasi ini baik buat orang awam, tetapi terdpat kesukaran menerjemahkannya langsung kedalam notasi bahasa pemrograman.
 
2.Notasi II : Menggunakan bagan-alir (flowchart)
Pada masa awal perkembangan komputer, ilmuwan menspesifikasikan algoritma sebagai bagan-alir (flowchart), yang mengekspresikan algoritma sebagai sekumpulan bentuk-bentuk geometri (seperti persegi panjang, lingkaran, jajaran genjang, dan sebagainya) yang berisi langkah-langkah komputasi. Kotak empat persegi panjang menyatakan proses , sedangkan pernyataan kondisional dinyatakan dengan bentuk intan (diamond). Bagan-alir popular pada awal era pemrograman dengan komputer (terutama dengan bahasa Basic, Fortran, dan Cobol). Bagan-alir tidak digunakan lagi saat ini karena ia cenderung tidak praktis dikonversi ke bahasa pemrograman, namun beberapa algoritma sederhana masih sering digambarkan sebagai bagan-alir. Bagan-alir menggambarkan aliran instruksi di dalam program secara visual. Notasi algoritmik dengan diagram-alir cocok untuk masalah yang  kecil, namun tidak cocok untuk masalah yang besar karena membutuhkan berlembar halaman kertas. Selain itu, pengonversian notasi algoritma ke notasi bahasa pemrograman juga cenderung relatif  lebih sukar.

3.       Notasi III : Menggunakan pseudo-code
Para ilmuwan komputer lebih menyukai menuliskan algoritma dalam notasi yang lebih praktis, yaitu notasi pseudo-code. Pseudo-code (pseudo artinya semu atau tidak sebenarnya) adalah notasi yang mirip dengan notasi bahasa pemrograman tingkat tinggi, khususnya (paling sering) bahasa Pascal dan C. Lebih tepatnya lagi pseudo-code adalah campuran antara bahasa alami dengan bahasa pemrograman. Namun, tidak sepperti bahasa penrograman yang direpotkan dengan tanda titik koma (semicolon), indeks, format keluaran, aturan khusus, dan sebagainya, maka sembarang versi pseudo-code dapat diterima asalkan perintahnya tidak membingungkan pembaca. Jadi, tidaklah mengherankan jika banyak ilmuwan komputer tidak menyepakati pseudo-code tertentu, bahkan mereka cenderung membuat “dialek” pseudo-code dengan style mereka sendiri. Keuntungan menggunakan notasi pseudo-code adalah kemudahan mengonversinya lebih tepat disebut mentranslasi-ke notasi bahasaa pemrograman, karena terdapat korespondensi antara setiap pseudo-code dengan notasi bahasa pemrograman. Korespondensi ini dapat diwujudkan dengan table translasi dari notasi algoritmik ke notasi bahasa pemrograman apa pun.

No comments:

Post a Comment