Tuesday, November 15, 2011

Algoritma & Pemrograman 1C* :: Konsep Bahasa Pemrograman

         Sebelum mulai membahas mengenai konsep dasar pemrograman dan lainnya, terlebih dahulu akan dijelaskan seputar bahasa pemrograman dengan maksud untuk lebih mempermudah dalam pembahasan selanjutnya.

Definisi Bahasa Pemrograman
Bahasa Pemrograman yaitu prosedur atau tata cara penulisan program, dimana di dalamnya terdapat 2 faktor penting, yaitu sintaks*) dan semantik**).
*) Sintaks adalah aturan gramatikal atau komposisi suatu program yang mengatur tata cara penulisan huruf, angka, dan karakter lain. Contohnya pada pembuatan program Pascal, antara 2 statemen dipisahkan oleh titik koma (;) :
X :=  1 ; X := X + 1
**) Semantik : mendefinisikan arti dari program yang benar secara sintaks dari bahasa pemrograman tersebut. Contohnya pada pembuatan program C :
Int vector [10]
:: Arti semantiknya yaitu akan menyebabkan ruang sebanyak 10 elemen integer untuk diberikan kepada variable bernama vektor (0 – 9 untuk array dalam C).

Fungsi Bahasa Pemrograman
Bahasa pemrograman berfungsi sebagai alat komunikasi antara pemrogram (programmer) dengan komputer, dimana pemrogram menyuruh komputer untuk mengolah data sesuai dengan alur pikir yang diinginkan oleh pemrogram.

Klasifikasi Bahasa Pemrograman
Secara umum, bahasa pemrograman diklasifikasikan ke dalam 4 kelompok, antara lain :
1.             Object Oriented Language (Bahasa Pemrograman Berorientasi Objek)
Merupakan bahasa pemrograman yang membagi program menjadi beberapa objek yang nantinya dapat saling terhubung dan berinteraksi satu dengan yang lainnya.
         Contoh : Visual FoxPro, Visual C++, Delphi, Visual Basic, Java, Phyton, Ruby, Perl.
2.             High Level Language (Bahasa Pemrograman Tingkat Tinggi)
Merupakan bahasa pemrograman yang paling mudah dioperasikan karena instruksi-instruksinya sudah menggunakan bahasa yang mudah dimengerti oleh manusia, seperti : START, END, IF, WHILE, FOR, AND, OR, dan lain sebagainya. Akan tetapi, program yang dihasilkan dengan bahasa pemrograman ini lebih lambat tingkat aksesnya dibandingkan dengan program yang dihasilkan dengan bahasa pemrograman tingkat rendah maupun menengah. Bahasa Pemrograman ini disebut juga bahasa pemrograman terstruktur.
         Contoh : BASIC, COBOL, Pascal, Fortran, ADA.
3.             Middle Level Language (Bahasa Pemrograman Tingkat Menengah)
Merupakan bahasa pemrograman yang menggunakan instruksi campuran dalam pengoperasiannya, yaitu instruksi dalam bahasa yang dimengerti oleh manusia (berupa huruf-huruf ataupun kata) dan instruksi yang bersifat simbolik, seperti : {, }, ?, <<, >>, &&, ||, dan lain sebagainya. Jika dibandingkan dengan program yang dihasilkan dengan bahasa pemrograman tingkat tinggi, program yang dihasilkan dengan bahasa pemrograman ini lebih unggul dalam kecepatan aksesnya.
         Contoh : Bahasa C.
4.             Low Level Language (Bahasa Pemrograman Tingkat Rendah)
Merupakan bahasa pemrograman yang paling sulit dipelajari karena instruksi-instruksi yang digunakan jauh berbeda dengan bahasa manusia pada umumnya. Bahasa pemrograman ini memakai kode-kode singkat, yaitu kode mnemonic,  seperti : MOV, SUB, CMP, JMP, JGE, JL, LOOP, dan lain sebagainya. Untuk dapat mengoperasikannya saja dibutuhkan logika yang cukup rumit dan pemahaman betul. Walaupun demikian, program yang dihasilkan dengan bahasa pemrograman ini  memiliki kecepatan akses terbaik di antara yang lainnya.
         Contoh : Bahasa Assembly.

Kriteria Bahasa Pemrograman
Seorang pemrogram akan memilih bahasa pemrogramannya jika merasa bahwa bahasa pemrograman tersebut bagus dan mudah untuk digunakan. Berikut beberapa kriteria untuk penilaian terhadap suatu bahasa pemrograman :
1.             Ekspresifitas
Bahasa pemrograman yang baik harus jelas dalam menggambarkan algoritma yang dibuat.
2.             Definitas
Definitas yang dimaksud yaitu dapat didefinisikan dengan baik dimana bahasa pemrograman dapat didefinisikan dari adanya sintak dan semantik. Baik sintak maupun semantik ini haruslah konsisten dan tidak bermakna ganda.
3.             Mendukung Tipe dan Struktur Data
Bahasa pemrograman yang baik harus memiliki kemampuan dalam hal mendukung berbagai tipe data, seperti : integer, string, dan real serta mendukung juga berbagai struktur data, seperti : array, record, dan file.
4.             Modularitas
Bahasa pemrograman yang baik harus memiliki fasilitas sub program. Program yang besar dapat dikerjakan oleh beberapa pemrogram secara bersama-sama yang nantinya dengan mudah dapat digabungkan menjadi sebuah modul saja.
5.             Kemudahan, Kesederhanaan, dan Kesatuan (Clarity, Simplicity, and Unity)
Bahasa pemrograman harus dapat menolong pemrogram dalam membuat sebuah desain program jauh sebelum pemrogram melakukan koding. Kemudahan, kesederhanaan, dan kesatuan inilah yang menjadi suatu kombinasi tepat yang dapat membantu pemrogram dalam mengembangkan suatu algoritma sehingga algoritma yang dihasilkan mempunyai kompleksitas yang rendah.
6.             Ortogonalitas (Orthogonality)
Merujuk pada suatu atribut yang dapat dikombinasikan dengan beragam fitur bahasa pemrograman sehingga setiap kombinasinya mempunyai arti dan dapat digunakan. Contohnya, suatu bahasa pemrograman mendukung suatu ekspresi yang dapat menghasilkan suatu nilai, dan bahasa pemrograman tersebut juga mendukung statemen kondisi yang mengevaluasi suatu ekspresi untuk mendapatkan nilai true dan false. Dua fitur dari bahasa pemrograman tersebut, yaitu ekpresi dan statemen kondisi, adalah ortogonal jika sembarang ekspresi dapat digunakan dan dievaluasi di dalam statemen kondisi. Ketika fitur bahasa pemrograman adalah ortogonal, maka bahasa pemrograman tersebut akan mudah dipahami dan dipelajari dan program akan mudah ditulis karena hanya ada sedikit exception dan case yang harus diingat.
7.             Kewajaran untuk Sebuah Apikasi
Kewajaran yang dimaksud adalah dimana bahasa pemrograman harus mempunyai struktur data, operasi-operasi, dan struktur kontrol serta sintaks yang tepat dan cocok yang digunakan pada struktur program untuk merefleksikan struktur logika yang melandasi suatu algoritma.
8.             Efisiensi
Efisiensi di sini mengandung maksud bahwa bahasa pemrograman yang baik dapat mengatur banyaknya instruksi program dengan batasan waktu tempuh pemrosesan tertentu di samping dapat mengatur jumlah memori yang digunakan program yang dihasilkan.
9.             Bersifat Universal
Bahasa pemrograman yang baik harus memiliki jangkauan yang luas untuk berbagai aplikasi pemrograman sehingga dapat bersifat serbaguna.
10.         Mendukung Abstraksi
Abstraksi merupakan suatu hal yang substansial bagi pemrogram untuk membuat suatu solusi dari masalah yang dihadapi. Kemudian abstraksi tersebut dapat dengan mudah diimplementasikan menggunakan fitur-fitur yang ada dalam bahasa pemrograman.
11.         Kemudahan dalam Verifikasi Program
Verifikasi program cukup penting bagi sebuah program,  karena dengan proses verifikasi yang mudah maka suatu program akan dengan mudah dibangun dan dikembangkan. Kesederhanaan struktur sintaks dan semantik merupakan aspek utama yang mempengaruhi kesederhanaan verifikasi program.
12.         Lingkungan Pemrograman
Bahasa pemrograman yang mempunyai lingkungan pemrograman yang baik dan lengkap akan memudahkan pemrogram untuk mengimplementasikan abstraksi yang sudah disusunnya. Lingkungan pemrograman di sini dapat berarti editor yang digunakan, dokumentasi yang baik dari bahasa pemrograman, fasilitas debugging, user interface yang baik, ataupun tool lain yang dapat digunakan untuk memudahkan pekerjaan pemrogram.
13.         Portabilitas Program
Salah satu kriteria penting lainnya adalah kemudahan program untuk dipakai di luar computer yang digunakan untuk membuat dan mengembangkannya.
14.         Biaya
Biaya merupakan elemen penting dalam mengevaluasi suatu bahasa pemrograman. Berikut beberapa biaya yang dimaksud :
a.             Biaya Eksekusi Program
Program yang sering dieksekusi akan membutuhkan suatu kode executable yang efisien sehingga cepat untuk dieksekusi. Semakin cepat suatu program dieksekusi maka akan semakin murah biaya eksekusi program.
b.            Biaya Translasi/Kompilasi program
Pada proses pembelajaran, translasi/kompilasi program lebih sering dilakukan daripada eksekusi program yang dihasilkan sehingga kecepatan translasi lebih diutamakan daripada kecepatan eksekusi. Oleh karena itu, lebih dibutuhkan compiler yang efisien dibanding kode executable yang efesien.
c.             Biaya Pembuatan, Pengetesan, dan Penggunaan Program
Semakin baik dan lengkap lingkungan pemrograman pada bahasa pemrograman maka ketiga biaya ini akan menjadi rendah. Hal ini disebabkan tidak banyaknya waktu dan tenaga serta pikiran yang dicurahkan ke pembuatan program.
d.            Biaya Pemeliharaan Program
Pembiayaan ini mencakup pada pemeliharaan program, termasuk perbaikan error yang muncul ketika program digunakan, perubahan yang dibutuhkan pada program ketika hardware atau sistem operasi berubah, maupun penyesuaian kebutuhan dengan kebutuhan yang baru. Pemeliharaan merupakan salah satu biaya terbesar dari life cycle cost dan merupakan suatu hal yang membosankan bagi pemrogram.

A.            KONSEP DASAR PEMROGRAMAN
Sebelum membahas lebih jauh dalam konteks konsep dasar pemrograman ini, terlebih dahulu perlu disampaikan definisi program dan pemrograman karena dalam pembahasan ke depan akan lebih sering menjumpai kedua kata tersebut.  Berikut definisi program dan pemrograman :
:: Program
Adalah serangkaian intruksi yang digunakan untuk mengatur komputer agar melakukan suatu tugas tertentu. Tanpa adanya program, sebenarnya komputer tidak dapat berbuat apa-apa karena pada dasarnya komputer hanyalah media atau alat yang digunakan untuk melakukan perhitungan-perhitungan dan serangkaian tugas yang dibebankan kepadanya.
:: Pemrograman
Adalah suatu rangkaian perintah ke komputer untuk melakukan/mengerjakan sesuatu, dimana instruksi tersebut menggunakan bahasa yang mudah dimengerti oleh komputer yang lebih dikenal dengan bahasa pemrograman.

Tipe Pemrograman
Secara umum, terdapat 7 macam tipe pemrograman, antara lain :
1.             Pemrograman Prosedural (Procedural Programming)
            Merupakan tipe pemrograman yang dalam pembuatan programnya melewati  serangkaian langkah-langkah yang tepat*1), terperinci*2), dan terbatas*3).
         *1)    : Langkah yang tepat artinya serangkaian langkah tersebut selalu benar untuk menyelesaikan masalah yang diberikan.
           *2)    : Langkah yang terperinci artinya setiap langkah diberikan secara detail dan dapat dieksekusi oleh komputer, instruksi seperti “angkat sedikit ke kiri” merupakan contoh instruksi yang tidak tepat karena “sedikit” tidak menyatakan sesuatu yang tepat/pasti.
*3)   : Langkah yang diberikan harus terbatas, artinya suatu saat langkah harus berhenti, jika langkah tidak pernah berhenti (misalnya: “ambil air, masukkan ke bak mandi, ulangi ambil air, dan seterusnya”) maka serangkaian langkah itu tidak disebut sebagai algoritma (jika: “ambil air, masukkan ke bak mandi, ulangi ambil air sampai bak mandi penuh”, maka bisa disebut algoritma, namun langkah ambil air, masukkan ke bak mandi, harus diperinci).
Contoh bahasa pemrograman yang termasuk di dalamnya : COBOL, BASIC, Pascal, C
2.             Pemrograman Terstruktur (Structured Programming)
            Adalah tipe pemrograman yang mendukung pembuatan program sebagai kumpulan prosedur. Prosedur-prosedur ini dapat saling memanggil dan dipanggil dari manapun dalam program dan dapat mengunakan parameter yang berbeda-beda untuk setiap pemanggilan. Tipe pemrograman ini merupakan tipe pemrograman yang mendukung abstraksi data, pengkodean terstruktur dan kontrol program terstruktur.
       Contoh bahasa pemrograman yang termasuk di dalamnya : Pascal, COBOL, RPG, C, ADA.
3.             Pemrograman Modular (Modular Programming)
                 Dalam tipe pemrograman ini, program dipecah-pecah ke dalam modul-modul, dimana setiap modul menunjukkan fungsi dan tugas tunggal. Dengan membagi program ke dalam modul-modul, maka program akan menjadi sederhana sehingga dapat lebih mudah disusun dan dipahami.
4.             Pemrograman Fungsional (Functional Programming)
          Disebut tipe pemrograman fungsional karena memang pada program yang dibuat/dihasilkan seluruh kodenya hanya berupa fungsi-fungsi saja. Tipe pemrograman ini merupakan salah satu tipe pemrograman yang memberlakukan proses komputasi sebagai evaluasi fungsi-fungsi matematika.
         Contoh bahasa pemrograman yang termasuk di dalamnya : Lisp, Scheme, ML, Haskell.
5.             Pemrograman Berorientasi Objek (Object-Oriented Programming)
              Merupakan tipe pemrograman yang mampu memanfaatkan objek-objek*) yang tersedia menjadi program.
          *)  : Objek yaitu elemen yang memiliki fungsi, metode, atau karakteristik    tertentu yang dapat dibedakan dalam dunia nyata.
         Contoh bahasa pemrograman yang termasuk di dalamnya : Java, C++, SmallTalks.
6.             Pemrograman Visual (Visual Programming)
            Merupakan tipe pemrograman yang menggunakan ekspresi visual, seperti : grafik, gambar, atau ikon dalam proses pemrograman dan mengacu pada aktivitas yang memungkinkan pengguna untuk membuat program dalam dua (atau lebih) dimensi untuk menggambarkan program, data, struktur, atau tingkah laku dinamis sistem yang kompleks.
7.             Pemrograman Even-Driven (Even-Driven Programming)
                Merupakan tipe pemrograman yang menggunakan konsep “jika sebuah aksi/perintah dilakukan terhadap sebuah objek, apa yang akan terjadi/dilakukan oleh objek tersebut selanjutnya”. Tipe pemrograman ini sangat fleksibel dalam pembuatan koding program karena sudah menggunakan konsep OOP dimana pemrograman dapat dimulai dari objek yang diinginkan tanpa harus berurutan.
       Contoh bahasa pemrograman yang termasuk di dalamnya : Visual Basic, Visual C++, Delphi.

Sifat Penulisan Program
Secara umum, terdapat 2 sifat dalam penulisan sebuah program, yaitu :
1.             Program Oriented
                 Penulisan program yang struktur programnya selalu berubah, apabila kondisi data yang diproses di dalam program tersebut bertambah volume datanya. Selain itu penulisan program ini bersifat statis dan tidak fleksibel.
2.             Data Oriented
              Penulisan program yang struktur programnya tidak selalu berubah, walaupun volume data yang diproses di dalam program tersebut dalam jumlah besar. Selain itu pula penulisan program ini bersifat dinamis dan mempunyai tingkat fleksibilitas yang tinggi.

B.            DATA
Definisi Data
Data yaitu bahan mentah yang akan diolah menjadi informasi sehingga dapat digunakan oleh user (pemakai).

Tipe-Tipe Data
Secara umum, terdapat 4 tipe data, yaitu :
1.             Tipe Data Dasar
            Merupakan tipe data primitive yang tidak terstruktur yang didefinisikan oleh bahasa pemrograman.
                  Tipe data dasar ini dibagi menjadi 5 macam, antara lain :
a.             Tipe Data Numerik
                Yaitu tipe data yang ada pada setiap bahasa pemrograman yang berfungsi untuk menyimpan data berupa angka-angka.
            Tipe data numerik dibagi lagi menjadi 4, yaitu :
1)            Integer : merupakan bilangan bulat positif dan negatif.
2)            Real : merupakan bilangan desimal atau mantissa.
3)          Subrange : merupakan subtipe dari tipe data integer dan terdiri dari urutan nilai-nilai integer dalam range yang terbatas.
4)     Fixed-Point Real : merupakan bilangan yang direpresentasikan dengan urutan digit yang mempunyai panjang tetap dengan titik desimal diposisikan di tempat yang diberikan antara 2 digit.
b.            Tipe Data Boolean
Yaitu tipe data yang berfungsi untuk mempresentasikan nilai true atau false (biasa digunakan dalam penyeleksian kondisi).
c.             Tipe Data Character
Yaitu tipe data berupa sebuah karakter yang ditulis di antara tanda petik tunggal atau ganda (‘ atau “) tergantung dari bahasa pemrograman yang digunakan.
d.            Tipe Data String
Yaitu tipe data yang berupa urutan-urutan dari karakter yang terletak di antara tanda petik tunggal atau ganda (‘ atau “) tergantung dari bahasa pemrograman yang digunakan.
e.             Tipe Data Internationalization
Yaitu tipe data yang disebut juga dengan I18N.
2.             Tipe Data Terstruktur
                  Merupakan tipe data campuran dari berbagai tipe data dasar.
          Contoh : Array, Record, String, List, dan File.
3.             Tipe Data Non Standar/Enumerasi (User Defined)
                 Merupakan tipe data yang memiliki elemen-elemen tertentu dari nilai konstanta integer sesuai dengan urutannya. Pada tipe data ini elemen masukan diwakili oleh suatu nama variabel yang ditulis di dalam kurung.
Contoh : Indeks_Hari = (Nol, Minggu, Senin, Selasa, Rabu, Kamis, Jumat, Sabtu)
4.             Tipe Data Petunjuk (Pointer)
              Adalah tipe data yang digunakan untuk menyimpan alamat memori sebuah variabel, bukan menyimpan nilai datanya.

C.            MODEL KOMPUTASI
Ada 3 model dasar komputasional, yaitu fungsional, logika, dan imperatif. Sebagai tambahan terhadap satuan nilai-nilai dan operasi yang berhubungan, masing-masing model komputasional mempunyai satu set operasi yang digunakan untuk menggambarkan komputasi. Berikut penjelasan mengenai ketiga model dasar komputasional tersebut :
1.             Model Fungsional
               Model komputasional ini terdiri dari satu set nilai-nilai, fungsi-fungsi dan operasi aplikasi fungsi dan komposisi fungsi. Fungsi dapat mengambil fungsi lain sebagai argumentasi dan mengembalikan fungsi sebagai hasil (higher-order function). Suatu program adalah koleksi definisi fungsi-fungsi dan suatu komputasi adalah aplikasi fungsi.
2.             Model Logika
               Model komputasional ini terdiri dari satu set nilai-nilai, definisi hubungan dan kesimpulan logis. Program terdiri dari definisi hubungan dan suatu komputasi adalah suatu bukti (suatu urutan kesimpulan).
3.             Model Imperatif
              Model komputasional ini terdiri dari satu set nilai-nilai yang mencakup suatu keadaan dan operasi tugas untuk memodifikasi pernyataan. Pernyataan adalah set pasangan nilai-nama dari konstanta dan variabel. Program terdiri dari urutan tugas dan suatu komputasi terdiri dari urutan pernyataan.

D.            PRINSIP DESAIN BAHASA PEMROGRAMAN
Suatu bahasa pemrograman harus dirancang untuk memudahkan pemrogram dalam membaca dan menulisnya di samping efisiensinya pada saat digunakan di perangkat keras yang tersedia.
Berikut prinsip-prinsip yang memudahkan pemrogram dalam membaca dan menulis suatu bahasa pemrograman :
1.             Prinsip Kesederhanaan
           Yaitu dimana bahasa pemrograman yang digunakan harus didasarkan atas kesederhanaan, dalam hal ini tidak terlalu ribet dalam pengoperasiannya.
2.             Prinsip Ortogonal
                  Yaitu dimana fungsi mandiri harus dikendalikan oleh mekanisme mandiri.
3.             Prinsip Keteraturan
              Yaitu dimana sebuah set objek yang disebut reguler berkenaan dengan beberapa kondisi jika, dan hanya jika, kondisi-kondisi tersebut dapat digunakan untuk masing-masing unsur set. Prinsip ini memerlukan konsep dasar bahasa yang harus diterapkan secara konsisten dan bersifat universal.
4.             Prinsip Ekstensibilitas
               Yaitu dimana object baru dari tiap kelas sintaktis dibangun (digambarkan) dari dasar dengan suatu cara yang sistematis. Seperti halnya prinsip keteraturan, prinsip ini juga memerlukan konsep dasar bahasa yang harus diterapkan secara konsisten dan bersifat universal.

1 comment: