KONSEP DASAR BAHASA PEMROGRAMAN  

Posted by taufik hidayat in

KONSEP DASAR BAHASA PEMROGRAMAN

Konsep Bahasa Pemrograman
Ada 3 hal yang berhubungan dengan konsep bahasa pemrogramanan: sintaks, semantiks dan pragmatis. Dalam mengajarkan 3 konsep ini menggunakan analogi bahasa yang biasa kita pakai sehari-hari.

Sintaks
Sintaks merupakan kumpulan aturan yang mendefinisikan suatu bentuk bahasa. Sintaks mendefinisikan bagaimana suatu kalimat dibentuk sebagai barisan/urutan dari pemilihan suatu kata dasar. Kata bukan merupakan sesuatu yang mendasar. Kata dikonstruksikan dengan karakter­karakter alfabet. Dengan menggunakan aturan ini maka suatu kalimat dapat dikatakan legal atau tidak legal. Sebagai contoh, dalam keyword bahasa C (seperti while, do, if, dan else), identifier, angka, operator, dan seterusnya, merupakan kata dalam suatu bahasa. Sintaks dalam bahasa C mengatur cara mengkombinasikan kata-kata tersebut ke dalam suatu statemen dengan bentuk yang benar sehingga dapat disusun suatu program yang dapat berjalan dengan benar. Sintaks tidak mengerti apapun tentang isi atau arti dari suatu kalimat, aturan semantik yang bisa mengartikannya.
Sintaks dari bahsa pemrograman didefinisikan dengan dua kumpulan aturan, yaitu aturan lexical dan aturan syntactic. Aturan leksikal menspesifikasikan kumpulan karakter yang terdapat dalam alfabet dari bahasa dan cara supaya karakter-karakter tersebut dikombinasikan ke dalam kata-kata yang valid dan dapat diterima. Sebagai contoh adalah bahasa Pascal yang tidak memperhatikan huruf besar dan huruf kecil, sedangkan bahasa C dan Ada memperhatikan dan membedakan hal tersebut.
Sintaks berfungsi menyediakan bentuk-bentuk notasi untuk komunikasi antar programmer dan pemroses bahasa pemrograman sehingga dapat mempermudah pembuatan suatu program.
Suatu bahasa pemrograman juga dibangun berdasarkan elemen­elemen syntactic, yang dapat membentuk suatu statemen-statemen dalam bahasa pemrograman. Elemen-elemen tersebut antara lain:
a.   Himpunan karakter
Himpunan karakter yang sering dijumpai dan digunakan adalah himpunan karakter ASCII, yang berisi dasar karakter-karakter angka dan huruf. Karakter ASCII secara umum dapat langsung digunakan pada kebanyakan perangkat I/O. namun adEr bahasa pemrograman yang tidak menggunakan himpunan karakter ASCII, contohnya bahasa APL. APL menggunakan karakter yang tidak dapat digunakan secara langsung pada kebanyakan pernagkat I/O, tidak seperti bahasa C yang menggunakan himpunan karakter ASCII.

b.   Identifier
Sintaks dasar dari identifier yang sering digunakan adalah string dari huruf dan angka yang dimulai dengan huruf. Namun, banyak juga variasi dari bahasa pemrograman yang menggunakan suatu identifier dengan tanda "." Atau "-". Hal ini akan berpengaruh pada kemudahan dalam pembacaan program.
c.   Simbol untuk operator
Kebanyakan bahasa pemrograman menggunakan karakter "+" dan "-" untuk merepresentasikan dua buah operasi dasar aritmetika, dan menggunakan kombinasi serta memanfaatkan karakter-karakter spesial untuk suatu operator, atau menggunakan string untuk operator seperti pada FORTRAN dengan .EQ. untuk membandingkan kesamaan dan ** untuk perpangkatan.
d.   Keyword dan reserved word
Keyword merupakan merupakan suatu identifier yang digunakan sebagai bagian tetap dari sintaks suatu statemen, misalnya IF untuk memulai suatu statemen kondisi atau DO untuk memulai suatu perulangan dalam bahasa FORTRAN. Keyword merupakan reserved word jika tidak digunakan sebagai identifier yang dipilih oleh programmer. Misalnya dalam bahasa FORTRAN, identifier IF dan DO dapat dipilih sebagai nama variabel oleh programmer sehingga suatu statemen yang dimulai dengan IF belum tentu merupakan statemen kondisi.
e.   Noise word
Merupakan kata pilihan yang disisipkan dalam statemen untuk meningkatkan readibility. Sebagai contoh adalah statemen GO TO label. GO merupakan keyword yang harus ada, sedangkan TO merupakan optional yang akan meningkatkan readibility.
f.   Komentar
Penambahan komentar dalam suatu program merupakan hal penting dari dokumentasi suatu program. Bahasa pemrograman mengijinkan komentar dalam beberapa bentuk.
·        Baris komentar yang terpisah di dalam program seperti pada FORTRAN.
·        Penggunaan karakter khusus yang tidak memedulikan baris seperti /* dan */ di bahasa C.
·        Dimulai dari sembarang tempat disuatu baris dengan diawali suatu
karakter khusus, seperti "-" di Ada, "II" di C++ atau "!" di FORTRAN.
g.  Blank
Aturan penggunaan spasi pada bahasa pemrograman sangat beragam. Sebagai contoh adalah bahasa C. Biasanya spasi diabaikan, kecuali jika ada simbol "=+" yang merupakan operator tunggal. Bila dipisahkan dengan spasi maka akan terjadi kesalahan sintaks.
h.  Delimiter dan tanda kurung
Delimiter merupakan elemen syntactic yang digunakan untuk menandai suatu awalan atau akhiran dari suatu syntactic unit seperti statemen atau ekspresi. Tanda kurung biasanya berpasangan dengan delimiter, misalnya kurung kurawal atau pasangan kata begin ... end. Delimiter berguna untuk meningkatkan readability suatu program dan juga dapat menghilangkan ambiguitas suatu statemen karena dapat digunakan secara eksplisit untuk memisahkan statemen-statemen yang mirip.
i.   Ekspresi
Merupakan suatu fungsi yang mengakses data dalam suatu program dan mengembalikan suatu nilai. Ekspresi merupakan dasar dari blok syntactic dari statemen yang dibangun.
TATA BAHASA (GRAMMAR)
Tata bahasa dalam bahasa pemrograman merupakan suatu kumpulan aturan (disebut production) yang menentukan urutan-urutan karakter (lexical token). Suatu tata bahasa secara alamiah menerangkan struktur hirarki dan banyak membentuk bahasa pemrograman.Misalnya perintah if-then-else:
If ekspresi then perintah else perintah
Dalam hal ini, suatu perintah adalah gabungan dari kata kunci if, ekspresi, kata kunci then, perintah, kata kunci else dan perintah lainnya. Bila digunakan nama variabel expr untuk menyatakan suatu ekspresi dan variabel stmt untuk menyatakan suatu perintah, maka struktur aturan ini dapat dinyatakan sebagai
stmt 4 if expr then stmt else stmt
dimana tanda panah di atas dibaca sebagai "dapat berbentuk sesuatu". Aturan seperti ini disebut juga suatu produksi (production).
Tata Bahasa G didefinisikan sebagai pasangan 4 tuple yaitu V, T, P dan S, yang dituriskan: G   (V,T,P,S), dimana:
ΓΌ  : Himpunan simbol-simbol terminal
T : Himpunan simbol-simbol non-terminal
P       Himpunan produksi
S    : Simbol awal

Unsur Pembentuk Tata Bahasa
a.       Terminal merupakan simbol dasar dari suatu rangkaian yang terbentuk. Kata 'token' merupakan persamaan dari 'terminal' jika kita berbicara dalam bahasa pemrograman. Kata kunci if, then, else adalah terminal.
b.       Non-Terminal adalah variabel sintaktik yang menyatakan kumpulan dari rangkaian. variabel stmt clan expr adalah non-terminal. Non-terminal mendefinisikan kumpulan dari rangkaian yang membantu bahasa yg dibentuk oleh tata bahasanya. Non-terminal juga mamberikan struktur hirarki pada suatu bahasa yang sangat bermanfaat dalam proses analisis sintak dan translasi.
c.       Dalam suatu tata bahasa, satu non-terminal berfungsi sebagai simbol awal, dan kumpulan rangkaian yang dinyatakannya merupakan bahasa yang didefinisikan oleh tata bahasa itu.
d.       Produksi-produksi dalam satu tata bahasa menentukan perilaku dimana terminal dan non-terminal dapat digabungkan untuk membentuk rangkaian. setiap produksi terdiri dari non-terminal, diikuti oleh tanda panah (simbol 4 atau simbol ::=), lalu diikuti oleh rangkaian dari suatu non-terminal dan terminal.
Dalam tata bahasa, anggota alfabet dinamakan simbol terminal atau token, kalimat adalah deretan hingga simbol-simbol terminal, sedangkan bahasa adalah himpunan kalimat-kalimat.

Ketentuan notasi
a. Simbol-simbol berikut adalah terminal:
· Huruf kecil awal alfabet seperti a,b dan c
· Simbol operator seperti +,           dan sebagainya.
· Simbol tanda baca seperti tanda kurung, koma dan sebagainya.
· Digit 0,1,2,      9
· Rangkaian tercetak tebal seperti if, then, else
b. Simbol-simbol berikut adalah non-terminal:
· Huruf besar awal alfabet seperti A, B, dan C.
· Huruf 5, jika muncul biasanya dianggap sebagai simbol awal
Nama dengan huruf kecil seperti expr atau stmt.
c.    Huruf besar akhir alfabet seperti X, Y, Z merepresentasikan simbol tata bahasa (mungkin terminal atau non-terminal)
d.    Huruf kecil akhir suatu alfabet seperti u,v,...z merupakan rangkaian dari suatu terminal.
e.    Huruf kecil Yunani seperti a, I3, y sebagai contoh merupakan rangkaian dari simbol tata bahasa. Maka suatu produksi seperti A - a, menyatakan ada satu non-terminal A disebelah kiri tanda panah dan rangkaian dari simbol tata bahasa a disebelah kanan tanda panah (sebelah kanan produksi)
f.     Jika A -> a1, A -> az, ..., A -) ak adalah semua produksi dengan A disebelah kiri (A-produksi), dapat ditulis A                                                   of I a2 I ak al , a2
ak sebagai alternatif untuk A.
g.    Jika tidak disebutkan, sisi kiri dari produksi yang pertama adalah simbol awal.
Bentuk umum produksi dari tata bahasa bebas konteks (Context-Free Grammar) adalah:
a        13, a c T, 13 c (VIT)
Contoh 2.1.
Berikut ini adalah tata bahasa "barisan dari angka-angka yang dipisahkan oleh tanda plus atau minus".
list 4 list + digit
list 4 list - digit
list -> digit
digit 4011121314'5'6171819
Bagian kanan dari produksi dengan unsur non-terminal list di bagian kiri dapat dikelompokkan menjadi satu produksi yang setara yaitu:
list      list + digit I list - digit I digit
Token dari tata bahasa adalah simbol +- 0 1 2 3 4 5 6 7 8 9, sedangkan unsur non-terminal adalah nama-nama yang digaris miring seperti list dan digit, dimana list adalah unsur terminal awal karena merupakan produksi yang pertama.
Suatu produksi dikatakan produksi untuk unsur non-terminal bila unsur non-terminal timbul di bagian kiri dari produksi, sedangkan barisan token adalah barisan dari nol atau Iebih token. Unsur yang mengandung nol token ditulis sebagai E, dan disebut dengan manna barisan kosong.
Suatu bahasa diperoleh dari barisan-barisan yang dimulai dari simbol awal dan mengganti unsur non-terminal dengan bagian kanan dari produksi non-terminal. Barisan token yang dapat diperoleh dari simbol awal membentuk apa yang disebut bahasa yang didefinisikan oleh tata bahasa yang bersangkutan.
Contoh 2.2.
Go adalah tata bahasa untuk "fragment of English"
Kategori gramatikal : S, NP, VP, D, N, V.
Kata-kata : a, the, cat, mouse, ball, boy, girl, ran, bounced, caught
Tata Bahasa :
S       4 NP VP
NP      N
NP4 D N VP 4 V VP 4 V NP
ΓΌ    - ran I bounced I caught
D   4 a I the
N    4 cat I mouse I ball I boy I girl
Kategori yang paling atas adalah S yang membentuk sebuah kalimat.
Dalam tata bahasa bebas konteks, kategori gramatikal disebut variabel atau non terminal, kata-kata disebut token atau terminal, tata bahasa yang menurunkan tata bahasa lain disebut dengan produksi dan kategori yang paling atas disebut simbol awal.
Derivasi
Derivasi adalah cara untuk melihat bagaimana suatu tata bahasa mendefinisikan suatu bahasa. 
PENGURAIAN (PARSING)
Tatabahasa dapat digunakan baik untuk penurunan (generation) atau penguraian (parsing) sebuah kalimat. Baik penurunan (generation) maupun penguraian (parsing) membutuhkan urutan dan aturan penulisan sebuah aplikasi yang dimulai dari simbol awal tatabahasa dan diakhiri dengan kalimat.
Penguraian adalah suatu proses untuk menentukan apakah suatu rangkaian dari token yang dihasilkan analisis leksikal termasuk dalam suatu tata bahasa tertentu. Ada dua metode penguraian yaitu penguraian puncak­ke-bawah (top-down) dan dasar-ke-atas (bottom-up).
Penguraian Puncak-ke-bawah (Top-Down)
Penguraian puncak-ke-bawah dapat dipandang sebagai suatu usaha untuk mencari derivasi paling kiri (leftmost) dari suatu rangkaian masukan. Bila diberikan kalimat x sebagai input, maka penguraian akan dimulai dari simbol awal S sampai kalimat x nyata (atau tidak nyata jika kalimat x memang tidak bisa diturunkan dari 5) dari pembacaan semua leaf dari pohon pengurai jika dibaca dari kiri ke kanan.
Semua produksi pada contoh 2.1. adalah produksi-produksi yang diperlukan untuk dapat mendefinisikan bahasa yang diinginkan. Sebagai contoh suatu ekspresi 9-5+2 merupakan salah satu anggota dari bahasa tersebut atau suatu fist juga. Hal ini ditunjukkan sebagai berikut:
a.    9 adalah list karena 9 adalah suatu angka dari produksi fist       digit
b.    9-5 adalah list karena 9 dan 5 adalah fist yang dihubungkan dengan tanda minus (-).
c.    9-5+2 adalah list karena 9-5+2 adaah list yang dihubungkan dengan tanda plus (+).
Penguraian Dasar-ke-Atas (Bottom-Up)
Bila diberikan kalimat x sebagai input, maka penguraian dimulai dari kalimat x yang nyata dari pembacaan semua leaf pohon pengurai dari kiri ke kanan sampai tiba disimbol awal S (atau tidak sampai di S jika kalimat x memang tidak bisa diturunkan dari S.
TATA BAHASA BERARTI GANDA (AMBIGUOUS)
Suatu tata bahasa yang menghasilkan lebih dari satu pohon urai disebut ambiguous. Dengan perkataan lain, tata bahasa yang ambiguous adalah tata bahasa yang menghasilkan lebih dari satu deriyasi leftmost maupun rightmost untuk kalimat yang sama. Untuk pengurai jenis tertentu, sebaiknya tata bahasa itu dibuat tidak ambiguous, sebab kalau tidak kita tidak dapat menentukan secara unik pohon urai untuk memilih suatu kalimat.
melibatkan angka dan tanda plus dan minus dapat dituliskan sebagai:
String -) string + string I string - string 10111 -1

SEMANTIK
Seperti yang kita ketahui bahwa SEMANTIK merupakan kata yang mempunyai banyak makna,,baik dalam suatu bahasa maupun dalam kode pemograman.
Kata semantik berasal dari bahasa yunani;semantikos, artinya memberikan tanda,penting, dari kata sema, tanda adalah cabang linguistik yang mempelajari makna yang terkandung pada suatu, bahasa, kode, atau jenis representasi lain. Semantik biasanya di kontraskan dengan dua aspek lain dari ekspresi makna: sintaksis, pembentukan simbol kompleks dari simbol yang lebih sederhana, serta pragmatik penggunaan praktis simbol oleh agen atau komunitas pada suatu kondisi atau konteks tertentu.
Semantik, mendefinisikan arti dari program yang benar secara sintaks dari bahasa pemograman tersebut.
Contoh : Pada pembuatan program C
            &nb sp;         int vector [10]
            &nb sp;        arti semantiknya akan menyebabkan ruang sebanyak 10 alokasi.
sedangkan,terdapat tahap lain yang dapat mendefinisikan semantik secara analisa...
            Pada tahap analisis semantik, dilakukan pengecekan pada struktur akhir yang telah diperoleh dan diperiksa kesesuaiannya dengan komponen program yang ada. Semantik juga berkaitan dengan pusat dari tahapan translasi. Dimana struktur sintaksis yang di proses dan struktur eksekusi sudah mulai bentuk. Kemudian menghasilkan suatu obyek yang dapat di eksekusi dan dapat di translasi, sedangkan bentuk obyek yang di eksekusi ini merupakan bentuk internal dari final program eksekusi yang di manipulasi oleh tahap optimisasi oleh translator sebelum akhirnya kode eksekusi banar-benar di hasilkan.
 Fungsi dari analisa semantik adalah untuk menentukan makna dari serangkaian instruksi yang terdapat dalam program sumber.

Hal ini membuat penganalisis semantik harus mampu menentukan aksi apa yang akan dilakukan oleh operator-operator tersebut. Termasuk memeriksa kesesuaian tipe dengan statement-statement yang ada. Misalkan bila terdapat suatu operasi, di periksa tipe operand.
Contohnya bila ekspresi yang mengikuti instruksi IF berarti tipe nya boolean, akan di periksa tipe identifier dan tipe ekspresi. Bila ada operasi antara dua operand, maka tipe operand pertama harus bisa di operasikan dengan operand kedua.
Analisa semantik sering juga digabungkan pada pembangkitan kode antara yang menghasilkan Output intermediate code, yang nantinya akan digunakan pada proses kompilasi berikutnya.

 KODE ANTARA
       Kode antara/Intermediate code merupakan hasil dari tahapan analisis, yang dibuat oleh kompilator pada saat mentranslasikan program dari bahasa tingkat tinggi. Kegunaan dari kode antara sebagai berikut:
        untuk memperkecil usaha dalam membangun kompilator dari sejumlah bahasa ke sejumlah mesin. Dengan adanya kode antara yang lebihmachine independent maka kode antara yang dihasilkan dapat digunakan lagi pada mesin lainnya.
        Proses optimasi masih lebih mudah. Beberapa strategi optimisasi lebih mudah dilakukan pada kode antara daripada pada program sumber atau pada kode assembly dan kode mesin.
        Bisa melihat program internal yang mudah dimengerti. Kode antara ini akan lebih mudah dipahami dari pada kode assembly atau kode mesin.

Terdapat dua macam kode antara, yaitu Notasi Postfix dan N-Tuple
1) Notasi Postfix
Sehari-hari kita biasa menggunakan operasi dalam notasi infix (letak operator di tengah). Pada notasi Postfix operator diletakkan paling akhir maka disebut juga dengan notasi Sufix atau Reverse Polish.
Sintaks notasi Postfix :            &nb sp;                
            &nb sp;                         &nb sp;                       

Misalkan ekspresi :
            &nb sp;                         &nb sp;                         &nb sp; (a + b)*(c + d)

kalau kita nyatakan dalam postfix :
            &nb sp;                         &nb sp;                         &nb sp; ab + cd + *

Kita dapat mengubah instruksi kontrol program yang ada ke dalam notasi Postfix. Misal :
            &nb sp;                         &nb sp;          IFTHENELSE
diubah ke dalam Postfix
BZBR 

            &nb sp;                         &nb sp;                               label1           label2
Keterangan :
BZ            branch if zero (zero =  salah)          {bercabang/meloncat jika kondisi yang dites salah}
BR            branch             &nb sp;                         &nb sp;                          {bercabang/meloncat tanpa ada kondisi yang dites}

Arti dari notasi Postfix di atas adalah sebagai berikut.

“Jika kondisi ekspresi salah, maka instruksi akan meloncat ke Label1dan menjalankan statement2. Bila kondisi ekspresi benar, maka statement1 akan dijalankan lalu meloncat ke Label2. Label1 dan Label1 dan Label2 sendiri menunjukan posisi tujuan loncatan, untuk Label1 posisinya tepat sebelum statement2, dan Label2 setelah statement2”

2) NOTASI N-TUPLE

            &nb sp;   Bila pada Postfix setiap baris instruksi hanya terdiri dari satu tupel, pada notasi N-tuple setiap baris terdiri dari beberapa tupel. Format umum dari Notasi N-Tuple ada sebagai berikut:
            &nb sp;                         &nb sp; operator......(N-1) operand

selanjutnya akan dibahas notasi 3 tupel dan 4 tupel.
ADAPUN ILMU SEMANTIK OPERASIONAL
Inti denotasional Ilmu Semantik adalah terjemahan dari program konvensional ke dalam persamaan fungsional.
Tujuan Denotasional Semantik dari suatu bahasa adalah Menugaskan suatu nilai kepada setiap ekspresi dalam bahasa.
Ilmu semantik dapat dinyatakan dalam lambda calculus sebagai fungsi matematical, Eval, dari ekspresi ke nilai.
Pragmatik
Pragmatik berhubungan dengan kemudahan implementasi dan efisiensi. Dalam analoginya dengan bahasa, kita bisa saja memberitahukan ke seseorang “Jangan merokok” apabila ada peraturan yang melarang seseorang merokok di dalam sebuah ruangan. Kalimat singkat seperti itu sebenarnya sudah cukup efisien. Tapi, dalam kesempatan lain kita bisa saja memakai kalimat “Mohon Anda jangan merokok di sini karena menurut peraturan pemerintah daerah nomor XXX tahun XXX dinyatakan bahwa merokok di tempat umum akan mengakibatkan pelanggaran peraturan, selain itu dari sisi kesehatan… blah blah blah”.
Dalam hubungannya dengan bahasa pemrograman, seorang programmer harus bisa memastikan efisiensi dalam melakukan peng-coding-an. Dalam bahasa C, programmer diberikan kekuasaan untuk mengalokasikan memori. Sebagai akibatnya, apabila programmer lalai dalam mengontorl variabel-variabel yang dihasilkan dari hasil assignment pointer, maka akan terjadi kebocoran memori. Ini diakibatkan apabila seorang programmer mengcreate sebuah variabel pointer, dan kemudian menghapusnya, informasi tersebut masih ada dalam memori, hanya saja sudah tidak bisa diakses lagi.

  
Pemrograman dan Bahasa Pemrograman
PENDAHULUAN
Tulisan ini membahas secara singkat pemrograman dan bahasa pemrograman, rambu-rambu dalam belajar atau mengajar bahasa pemrograman, serta masalah pemilihan bahasa pemrograman pertama bagi pemula.
Kalau kita membayangkan abad informasi, yang muncul adalah kosakata seperti komputer, network, komunikasi dan informasi itu sendiri. Memang abad informasi dan komputer tidak dapat dipisahkan. Perkembangan ilmu dan teknik komputer mempercepat perkembangan informasi, atau sebaliknya permintaan akan informasi yang terus bertambah baik dari segi kuantitas maupun kualitas, mendorong percepatan perkembangan ilmu dan teknik komputer dan ilmu-ilmu lainnya.
Dengan semangat efesiensi, keberadaan komputer di kantor menjadi sangat penting. Di awal perkembangan komputer, program aplikasi sangat sedikit, primitif dan “sulit”, sehingga setiap kantor memerlukan programer. Bagi Anda yang dapat menggunakan WordStar ataupun LaTeX, maka dapat dikatakan bahwa Anda pun seorang programer, karena Anda harus mengetikan perintah-perintah khusus untuk menghasilkan walau sebuah surat sederhana. Kini dengan munculnya aplikasi-aplikasi mutakhir dan tehnologi plug-in, pengguna tidak perlu lagi susah-susah menjadi programer. Apalagi dengan munculnya tehnologi visual-programming, maka seorang programer pun tidak perlu mengetikkan seluruh kode dari sebuah program yang dibuatnya.
Namun demikian, bagaimana pun juga, keberadaan programer masih sangat diperlukan untuk usaha otomatisasi berbagai bidang kehidupan. Permintaan yang mendesak dari dunia bisnis, seringkali membuat dunia pendidikan kewalahan dalam mensuplai programer yang sanggup menghadapi perkembangan tehnologi komputer yang sangat cepat ini.
PEMROGRAMAN DAN BAHASA PEMROGRAMAN Pemrograman dapat diklasifikasikan sebagai berikut [Rechenberg]:
1.      Berorientasi prosedur (procedural oriented)
2.      Berorientasi fungsi (functional oriented)
3.      Berorientasi logik (logic oriented)
4.      Berorientasi obyek (object oriented)
Masing-masing memiliki kelebihan tersendiri. Kadangkala dalam membangun suatu aplikasi dibutuhkan gabungan metode pemrograman tersebut. Misalnya dalam C++ dan Java (bahasa pemrograman berorientasi obyek), kita masih dapat menemukan tehnik-tehnik pemrograman berorientasi prosedur dalam setiap method/function member dalam obyek-obyeknya.
Suatu bahasa pemrograman pada asalnya hanya dapat digunakan dalam satu metode. Pascal mulanya untuk procedural-oriented, Lisp untuk functional-oriented, Smaltalk untuk object-oriented dan lain-lain. Seiring dengan perkembangan tehnologi informasi dan komputer, puluhan bahkan ratusan bahasa pemrograman baru lahir. Masing-masing memiliki keunikan dan kelebihan spesifik. Ada yang khusus untuk jenis komputer tertentu, ada pula yang khusus untuk paradigma pemrograman tertentu.
BELAJAR PEMROGRAMAN
Lalu bagaimana seorang programer mulai belajar memprogram? Dalam menjawab pertanyaan ini kita sering terjebak dalam masalah pemilihan bahasa pemrograman pertama bagi pemula. Bahasa pemrograman apakah yang paling tepat diajarkan kepada seorang pemula, sehingga kelak ia dapat survive di antara sekian ratus bahasa pemrograman. Sampai saat ini pun perdebatan masih terus berlanjut untuk memilih bahasa pemrograman pertama yang paling tepat. Tidak dapat diragukan lagi bahwa bahasa pemrograman hampir sebanyak bahasa manusia, atau mungkin lebih banyak lagi.
Pemilihan bahasa pemrograman pertama merupakan masalah pelik. Sebab bahasa pemrograman pertama akan mempengaruhi cara berfikir programer di masa yang akan datang. Programer dengan bahasa pertamanya Pascal akan lebih mudah berpindah ke bahasa pemrograman yang memiliki paradigma sama, yaitu berorientasi prosedur seperti C, Modula, Oberon. Tetapi programer tersebut kesulitan untuk berpindah ke bahasa pemrograman dengan paradigma yang lain seperti CLOS dan Scheme, yaitu bahasa pemrograman keluarga Lisp. Selain daripada itu, setelah menentukan paradigmanya, masalah berikutnya yang muncul adalah memilih bahasa pemrograman yang paling dominan dalam paradigma tersebut. Misalnya, untuk paradigma berorientasi fungsi manakah yang paling tepat diajarkan kepada pemula, apakah CLOS atau Scheme atau EmacsLisp. Masalah kedua ini berkaitan dengan, kemudahan dalam belajar, dialek dalam keluarga bahasa pemrograman tersebut, atau bahkan kecenderungan pasar.
Pada umumnya, lembaga pendidikan memilih paradigma pemrograman berorientasi prosedur sebagai paradigma pertama siswa mereka. Bahasa yang digunakan umumnya Pascal atau C. Hal ini dikarenakan paradigma tersebut lebih sering dipakai di dalam kehidupan sehari-hari. Setelah itu, disesuaikan dengan situasi dan kondisi diajarkan paradigma lain. Tetapi ada pula lembaga pendidikan yang memilih bahasa ML, bahasa dengan paradigma berorientasi fungsi, seperti MIT. Alasan MIT,


karena sebagian mahasiswa sebelumnya telah memiliki ketrampilan dan pengetahuan dalam paradigma pemrograman berorientasi prosedur, demi alasan keadilan dipilihlah bahasa dan pemrograman yang asing untuk sebagian besar mahasiswa. Dengan demikian sebagian besar mahasiswa memulai belajar pemrograman dari awal yang sama.
Yang perlu kita perhatikan adalah mengajar/belajar pemrograman tidaklah sama dengan belajar bahasa pemrograman. Agar kita tidak salah langkah dalam mengajar/belajar pemrograman, Derek Andrew [Woodman, pp.25 5-276] memberikan rambu-rambu sebagai berikut:
·           Kita tidak belajar atau mengajar bahasa pemrograman, tetapi belajar atau mengajar bagaimana cara memprogram
·           Kita tidak belajar atau mengajar bahasa pemrograman, tetapi belajar atau mengajar bagaimana memecahkan masalah
·           Kita tidak belajar atau mengajar bahasa pemrograman, tetapi belajar atau mengajar bagaimana mendesain sistem
·           Kita tidak belajar atau mengajar bahasa pemrograman, tetapi belajar atau mengajar prinsip-prinsip bahasa pemrograman
·           Kita tidak belajar atau mengajar bahasa pemrograman, tetapi belajar atau mengajar teori semantik
·           Kita tidak belajar atau mengajar bahasa pemrograman, tetapi belajar atau mengajar teori pemrograman
Bagi seorang pengajar point terpenting adalah point pertama: perlunya mengajari ahli komputer kita bagaimana cara memprogram. Asalkan suatu bahasa pemrograman itu cukup memadai bagi kita untuk belajar atau mengajar pemrograman, apapun bahasa pemrograman yang kita gunakan tidak menjadi masalah.

PEMROGAMAN BERORIENTASI OBEJK

Pemrograman berorientasi objek (Inggris: object-oriented programming disingkat OOP) merupakan paradigma pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek. Bandingkan dengan logika pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya,
Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam teknik piranti lunak skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat.
== Konsep dasar dari Pemrograman Berorientasi Objek Pemrograman orientasi-objek menekankan konsep berikut:
§  Kelas — kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Sebagai contoh 'class of dog' adalah suatu unit yang terdiri atas definisi-definisi data dan fungsi-fungsi yang menunjuk pada berbagai macam perilaku/turunan dari anjing. Sebuah class adalah dasar dari modularitas dan struktur dalam pemrograman berorientasi object. Sebuah class secara tipikal sebaiknya dapat dikenali oleh seorang non-programmer sekalipun terkait dengan domain permasalahan yang ada, dan kode yang terdapat dalam sebuah class sebaiknya (relatif) bersifat mandiri dan independen (sebagaimana kode tersebut digunakan jika tidak menggunakan OOP). Dengan modularitas, struktur dari sebuah program akan terkait dengan aspek-aspek dalam masalah yang akan diselesaikan melalui program tersebut. Cara seperti ini akan menyederhanakan pemetaan dari masalah ke sebuah program ataupun sebaliknya.
§  Objek - membungkus data dan fungsi bersama menjadi suatu unit dalam sebuah program komputer; objek merupakan dasar dari modularitas dan struktur dalam sebuah program komputer berorientasi objek.
§  Abstraksi - Kemampuan sebuah program untuk melewati aspek informasi yang diproses olehnya, yaitu kemampuan untuk memfokus pada inti. Setiap objek dalam sistem melayani sebagai model dari "pelaku" abstrak yang dapat melakukan kerja, laporan dan perubahan keadaannya, dan berkomunikasi dengan objek lainnya dalam sistem, tanpa mengungkapkan bagaimana kelebihan ini diterapkan. Proses, fungsi atau metode dapat juga dibuat abstrak, dan beberapa teknik digunakan untuk mengembangkan sebuah pengabstrakan.
§  Enkapsulasi - Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi izin untuk mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut.
§  Polimorfisme melalui pengiriman pesan. Tidak bergantung kepada pemanggilan subrutin, bahasa orientasi objek dapat mengirim pesan; metode tertentu yang berhubungan dengan sebuah pengiriman pesan tergantung kepada objek tertentu di mana pesa tersebut dikirim. Contohnya, bila sebuah burung menerima pesan "gerak cepat", dia akan menggerakan sayapnya dan terbang. Bila seekor singa menerima pesan yang sama, dia akan menggerakkan kakinya dan berlari. Keduanya menjawab sebuah pesan yang sama, namun yang sesuai dengan kemampuan hewan tersebut. Ini disebut polimorfisme karena sebuah variabel tungal dalam program dapat memegang berbagai jenis objek yang berbeda selagi program berjalan, dan teks program yang sama dapat memanggil beberapa metode yang berbeda di saat yang berbeda dalam pemanggilan yang sama. Hal ini berlawanan dengan bahasa fungsional yang mencapai polimorfisme melalui penggunaan fungsi kelas-pertama.
§  Dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur) tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sebagai contoh anggap kita memiliki sebuah departemen yang memiliki manager, sekretaris, petugas administrasi data dan lainnya. Misal manager tersebut ingin memperoleh data dari bag administrasi maka manager tersebut tidak harus mengambilnya langsung tetapi dapat menyuruh petugas bag administrasi untuk mengambilnya. Pada kasus tersebut seorang manager tidak harus mengetahui bagaimana cara mengambil data tersebut tetapi manager bisa mendapatkan data tersebut melalui objek petugas adminiistrasi. Jadi untuk menyelesaikan suatu masalah dengan kolaborasi antar objek-objek yang ada karena setiap objek memiliki deskripsi tugasnya sendiri.


Bahasa pemrograman
Bahasa pemrograman yang mendukung OOP antara lain:


1.    Visual Foxpro
2.    Java
3.    C++
6.    SIMULA
7.    Smalltalk
8.    Ruby
9.    Python
10. PHP
11. C#
12. Delphi
13. Eiffel
14. Perl


TEORI KOMPUTASI

Teori komputasi adalah cabang ilmu komputer dan matematika yang membahas apakah dan bagaimanakah suatu masalah dapat dipecahkan padamodel komputasi, menggunakan algoritma. Bidang ini dibagi menjadi dua cabang: teori komputabilitas dan teori kompleksitas, namun kedua cabang berurusan dengan model formal komputasi.
Untuk melakukan studi komputasi dengan ketat, ilmuwan komputer bekerja dengan abstraksi matematika dari komputer yang dinamakan model komputasi. Ada beberapa model yang digunakan, namun yang paling umum dipelajari adalah mesin Turing. Sebuah mesin Turing dapat dipikirkan sebagai komputer pribadi meja dengan kapasitas memory yang tak terhingga, namun hanya dapat diakses dalam bagian-bagian terpisah dan diskret. Ilmuwan komputer mempelajari mesin Turing karena mudah dirumuskan, dianalisis dan digunakan untuk pembuktian, dan karena mesin ini mewakili model komputasi yang dianggap sebagai model paling masuk akal yang paling ampuh yang dimungkinkan. Kapasitas memori tidak terbatas mungkin terlihat sebagai sifat yang tidak mungkin terwujudkan, namun setiap permasalahan yang “terputuskan” (decidable) yang dipecahkan oleh mesin Turing selalu hanya akan memerlukan jumlah memori terhingga. Jadi pada dasarnya setiap masalah yang dapat dipecahkan (diputuskan) oleh meisn Turing dapat dipecahkan oleh komputer yang memiliki jumlah memori terbatas.
Pembagian Model komputasi ada 3 yaitu :
1. Mesin Mealy
Dalam teori komputasi sebagai konsep dasar sebuah komputer, mesin Mealyadalah otomasi fasa berhingga (finite state automaton atau finite state tranducer) yang menghasilkan keluaran berdasarkan fasa saat itu dan bagian masukan/input. Dalam hal ini, diagram fasa (state diagram) dari mesin Mealy memiliki sinyal masukan dan sinyal keluaran untuk tiap transisi. Prinsip ini berbeda dengan mesin Moore yang hanya menghasilkan keluaran/output pada tiap fasa.
Nama Mealy diambil dari “G. H. Mealy” seorang perintis mesin-fasa (state-machine) yang menulis karangan “A Method for Synthesizing Sequential Circuits” pada tahun 1955.

2. Mesin Moore
Dalam teori komputasi sebagai prinsip dasar komputer, mesin Moore adalah otomasi fasa berhingga (finite state automaton) di mana keluarannya ditentukan hanya oleh fasa saat itu (dan tidak terpengaruh oleh bagian masukan/input). Diagram fasa (state diagram) dari mesin Moore memiliki sinyal keluaran untuk masing-masing fasa. Hal ini berbeda dengan mesin Mealy yang mempunyai keluaran untuk tiap transisi.
Nama Moore diambil dari “Edward F. Moore” seorang ilmuwan komputer dan perintis mesin-fasa (state-machine) yang menulis karangan “Gedanken-experiments on Sequential Machines”.

3. Petri Net
Petri net adalah salah satu model untuk merepresentasikan sistem terdistribusi diskret. Sebagai sebuah model, Petri net merupakan grafik 2 arah yang terdiri dari place, transition, dan tanda panah yang menghubungkan keduanya. Di samping itu, untuk merepresentasikan keadaan sistem, tokendiletakkan pada place tertentu. Ketika sebuah transition terpantik, token akan bertransisi sesuai tanda panah.
Petri net pertama kali diajukkan oleh Carl Adam Petri pada tahun 1962.

TIPE data

Tipe data yang dikenal dalam bahasa pascal antara lain :

·      Tipe data sederhana / Jenis data yang standar (Dasar)
1.      Integer
2.      Real
3.      Karakter
4.      Boolean

·         Tipe data non standar (user defined)
1.    Enumerated
2.    Sub-range

·         Tipe data berstuktur
1.        Array
2.        Record
3.        Set
4.        File

·         Jenis data Pointer


INTEGER
Jenis data ini merupakan nilai bilangan bulat, yang  terdiri atas integer positif, integer negatif dan nol. Pada TURBO PASCAL jenis data ini di bagi atas beberapa bagian.  (lihat tabel 1)

Tabel 1. Jenis data integer
Tipe
Ukuran memori
(dalam byte)
Jangkauan nilai
BYTE
1
0..255
SHORTINT
1
-128..127
INTEGER
2
-32768..32767
WORD
2
0..65535
LONGINT
4
-2147483648..2147483647

Operator Integer terdiri atas :  + , - , * , DIV dan MOD

Var
                 Jumlah : byte;
Begin
               Jumlah := 200;
                WriteLn(‘Nilai JUMLAH = ‘,Jumlah);
End.
Hasilnya bila dijalankan :

          Nilai JUMLAH = 200


REAL


Penulisan untuk jenis data ini selalu menggunakan titik desimal. Nilai konstanta numerik real berkisar dari 1E-38 sampai dengan 1E+38 dengan mantissa yang signifikan sampai dengan 11 digit. E menunjukkan nilai 10 pangkat. Nilai konstanta numerik real menempati memori sebesar 6 byte.

Contoh :
123.45
12345.  ® salah, titik desimal tidak boleh dibelakang
12E5
12E+5
-12.34
.1234  ® salah, titik desimal tidak boleh dimuka

 Pada TURBO PASCAL, jenis data ini dibedakan ( lihat tabel 2.)
Tabel 2. Jenis data Real

Tipe
Ukuran memori
(dalam byte)
Jangkauan nilai
Digit signifikan
SINGLE
4
1.5x10E-45 .. 3.4x10E38
7-8
DOUBLE
8
5.0x10E-324 .. 1.7x10E308
15-16
EXTENDED
10
1.9x10E-4951 .. 1.1x10E4932
19-20
COMP
8
-2E+63+1 .. 2E+63-1
19-20

Operator untuk jenis data ini terdiri atas : + , - , * dan /

KARAKTER


Yang dimaksud dengan jenis data ini adalah karakter tunggal atau sebuah karakter yang ditulis diantara tanda petik tunggal, seperti misalnya ‘A’, ’a’, ’!’, ’5’ dsb.

Dasarnya adalah ASCII CHARACTER SET.

Misalnya : 032 pada tabel ASCII CHARACTER SET menunjukkan karakter.

                   Blank.
          033                        !
          048                         0
076                         L
          dst

STRING


Nilai data string merupakan urut-urutan dari karakter yang terletak di antara tanda petik tunggal. Nilai data string akan menenpati memori sebesar banyaknya karakter stringnya ditambah dengan 1 byte. Bila panjang dari suatu string di dalam deklarasi variabel tidak disebutkan, maka dianggap panjangnya adalah 255 karakter.
Contoh :
Var
          Kampus : string[10];
Begin
          Kampus := ‘Gunadarma’;
Write(Kampus);
End.

BOOLEAN


Jenis data ini mempunyai nilai TRUE atau FALSE.

Operator untuk jenis data ini adalah :
1.    Logical Operator, yaitu : NOT, AND dan OR
2.    Relational Operator, yaitu : >, <, >=, <=, <> dan =


JENIS DATA NON-STANDARD (USER DEFINED)

ENUMERATED.
Jenis data ini terdiri atas barisan identifier yang terurut dimana setiap identifier tersebut dianggap sebagai suatu individual data item (elemen data yang berdiri sendiri).

Pada saat mendeklarasikan jenis data ini kita harus menuliskan semua elemen-elemennya.

Bentuk umum deklarasinya adalah :

TYPE nama = (data_item_1, data_item_2, ……., data_item_n);
Contoh :
TYPE hari = (sen,sel,rab,kam,jum,sab,ming);
TYPE warna = (red,blue,green,yellow,black,white);

Setelah jenis data ini dideklarasikan, maka selanjutnya kita dapat mendeklarasikan suatu variabel yang berjenis data sama dengan jenis data ini.


Misalnya :
              TYPE nama_hari = (sen,sel,rab,kam,jum,sab,ming);
              VAR libur : nama_hari;

Fungsi standar yang dapat digunakan pada jenis data ini adalah :

PRED, SUCC dan ORD

Misalnya :

     PRED (sel) = sen
     SUCC (sen) = sel
     ORD (sen) = 0
     ORD (sel) = 1

      dsb

SUB-RANGE.

Jenis data ini berupa range dari suatu kumpulan data yang mempunyai urutan..

Bentuk umum deklarasinya adalah :

     TYPE nama = data_item_pertama .. data_item_terakhir;


Contoh :
          TYPE jam_kuliah = 1 .. 10;
tanggal = 1 .. 31;
abjad = ‘A’ .. ‘Z’;

          TYPE bulan = (jan,feb,mar,apr,mei,jun,jul,agt,sep,okt,nov,des);
hari = (sen,sel,rab,kam,jum,sab,ming);
ata = agt .. jan;
pta = feb .. jun;
hari_kerja = sen .. jum;

TANDA OPERASI



Tanda operasi (operator) di dalam bahasa Pascal dikelompokkan ke dalam 9 kategori,

1.    Assignment operator.
2.    Binary operator.
3.    Unary operator.
4.    Bitwise operator.
5.    Relational operator.
6.    Logical operator.
7.    Address operator.
8.    Set operator.
9.    String operator.


Assignment operator

Assignment operator (operator pengerjaan) menggunakan simbol titik dua diikuti oleh tanda sama dengan (:=).

Contoh :
                   A:=B;

Binary operator
          Digunakan untuk mengoperasikan dua buah operand. Operand dapat berbentuk konstanta ataupun variabel. Operator ini digunakan untuk operasi aritmatika yang berhubungan dengan nilai tipe data integer dan real.

Operator

Operasi
Tipe operand
Tipe hasil
*
Perkalian
real,real
integer,integer
real,integer
real
integer
real
DIV
Pembagian bulat
integer,integer
integer
/
Pembagian real
real,real
integer,integer
real,integer
real
real
real
MOD
Sisa pembagian
integer,integer
integer
+
Pertambahan
real,real
integer,integer
real,integer
real
integer
real
-
pengurangan
real,real
integer,integer
real,real
real
integer
real

Contoh :
                   15*5             hasilnya         75
                   20/3             hasilnya         6.6666666667E+00
                   20 div 3         hasilnya         6
                   20 mod 3      hasilnya         2

Unary operator

Operator ini hanya menggunakan sebuah operand saja. Dapat berupa unary minus dan unary plus. Unary minus digunakan untuk menunjukkan nilai negatif, baik pada operang numerik real maupun integer. Unaru plus adalah operator untuk memberai tanda plus.

Contoh :
                   -5       +7
                   -2.5    +2.5

Bitwise operator

Digunakan untuk operasi bit per bit pada nilai integer. Terdiri dari operator NOT, AND, OR, XOR, Shl, Shr.

Relational operator

          Relational operator digunakan untuk  membandingkan hubungan antara dua buah operand dan akan didapatkan hasil tipe boolean, yaitu True atau False. Terdiri dari operator : =, <, >, <=, >=, <>


Logical operator

          Terdapat 4 buah logical operator yaitu : NOT, AND, OR dan XOR. Operator ini bekerja dengan nilai-nilai logika, yaitu True dan False.

Set operator

          Digunakan untuk operasi himpunan.

String operator

          Digunakan untuk operasi string. Hanya ada sebuah operator string saja, yaitu operator + yang digunakan untuk menggabungkan dua buah nilai string.

Contoh : 
                   Nama1 := ‘Arief ‘;
                   Nama2 := ‘Kurniawan’;
                   Nama3 := Nama1 + Nama2;

PRINSIP BAHASA PEMROGRAMAN

Dalam kehidupan sehari–hari, untuk berkomunikasi dengan orang lain, kita harus menggunakan bahasa yang sama dengan orang tersebut. Apabila kita menggunakan Bahasa Indonesia, lawan bicara kita harus mengerti Bahasa Indonesia. Kalau lawan bicara kita tidak mengerti Bahasa Indonesia, kita masih bisa berkomunikasi dengannya melalui penerjemah.

Dalam pemograman komputer, berlaku juga hal seperti di atas. Kita harus menggunakan bahasa yang dimengerti oleh komputer untuk memberikan suatu instruksi. Pada dasarnya, komputer adalah mesin digital, artinya komputer hanya mengenal kondisi ada arus listrik (biasanya dilambangkan dengan 1) dan tidak ada arus listrik (dilambangkan dengan 0).


Dengan kata lain kita harus menggunakan sandi 0 dan 1 untuk melakukan pemrograman komputer. Bahasa pemrograman yang menggunakan sandi 0 dan 1 ini disebut bahasa mesin (assembly). Sebagai contoh, dalam prosesor Intel, terdapat perintah 0011 1010 0000 1011. Perintah dalam bahasa mesin ini sama artinya dengan perintah assembly CMP AL, 0D, yang
artinya bandingkan nilai register AL dengan 0D. CMP di sini sebenarnya adalah singkatan dari CoMPare. Untuk membantu manusia dalam mengkonversi bahasa mesin diperlukan perangkat lunak yang disebut assembler.


Pemrograman dengan bahasa assembly masih terasa sulit bagi kebanyakan orang sehingga dikembangkan bahasa pemrograman yang lebih mudah digunakan. Bahasa pemrograman yang dikembangkan ini lebih condong ke bahasa manusia dan disebut bahasa generasi ketiga / 3GL (Third-Generation Language) atau juga dikenal dengan bahasa tingkat tinggi/ HLL (High-Level Language). Sebagai contoh Basic, Pascal, C, C++, Cobol, dsb. Bahasa generasi ketiga menggunakan kata-kata dalam bahasa Inggris karena bahasa tersebut adalah bahasa internasional, misal ;
Pascal:
writeln (‘Algoritma’);

Atau perintah dalam bahasa C:
printf (“Algoritma\n\r”):

Atau perintah dalambahasa C++:
cout << “Algoritma” << endl;

Ketiga pernyataan di atas bertujuan sama yaitu menuliskan teks ‘algoritma’ ke keluaran standar
(Standard Output), ke layar monitor. Ketiga perintah sederhana di atas sebenarnya terdiri dari puluhan atau bahkan ratusan pernyataan assembly. Perangkat lunak yang menerjemahkan program dalam bahasa manusiawi ke dalam bahasa assembly atau mesin ada dua macam, yaitu interpreter dan kompiler. Interpreter menerjemahkan program baris perbaris artinya jika suatu baris akan diekskusi maka baris tersebut diterjemahkan terlebih dahulu ke bahasa mesin. Apabila baris berikutnya akan diekskusi maka baris tersebut baru diterjemahkan kedalam bahasa mesin. Contoh bahasa pemograman yang menggunakan interpreter adalah basic.Kompiler menerjemahkan semua perintah ke dalam bahasa mesin kemudian menjalankan hasil
penerjemahan. Hasil penerjemahan ini bisa disimpan dalam file atau memori. Contoh bahasa pemrograman yang menggunakan kompiler adalah Pascal, C, dan C++. Khusus untuk Pascal, ada beberapa kompiler tetapi jumlahnya sedikit. Misalnya Turbo Pascal (http://www.inprice.com), GNU Pascal (http://didaktik.physik.uni-essen.de/~gnupascal/home.html), Free Pascal
(http://www.freepascal.sk) , dsb. Kompiler Pascal yang banyak digunakan adalah Turbo Pascal, sehingga pada modul ini juga digunakan Turbo Pascal sebagai acuannya.

Perkembangan bahasa pemrograman setelah bahasa generasi ketiga adalah bahasa generasi keempat atau yang disingkat 4GL (fourth-generation language). Bahasa ini banyak digunakan sebagai aplikasi basis data (database), salah satu contohnya adalah SQL (Structured Query Language). Pada bahasa ini, perintah-perintah yang digunakan lebih manusiawi, misalnya “SELECT Nama,Nilai FROM Mahasiswa”, untuk mengambil data Nama dan Nilai dari basis data Mahasiswa.

Langkah-langkah dalam Pemrograman Komputer

Dalam pemrograman komputer, diperlukan beberapa langkah dan langkah-langkah yang disajikan pada modul ini tidak bersifat mutlak. Artinya Anda tidak harus melakukan dari langkah pertama, kedua, ketiga, dst. Ada beberapa langkah yang harus atau mungkin
diulang sampai beberapa kali. Berikut ini contoh beberapa langkah yang harus dilakukan dalam
pemrograman komputer:

1. Mendefinisikan Masalah.
Mendefinisikan masalah dengan menentukan masalahnya seperti apa, kemudian apa saja yang
harus dipecahkan dengan komputer, yang terakhir adalah apa masukannya dan bagaimana keluarannya.

2. Menentukan Solusi.
Setelah masalah didefinisikan dengan jelas, masukan yang diberikan sudah jelas, keluaran yang
diinginkan sudah jelas, maka langkah selanjutnya adalah mencari jalan penyelesaian masalah. Jika permasalahan terlalu kompleks, biasanya kita harus membaginya ke dalam beberapa modul kecil agar lebih mudah diselesaikan. Sebagai contoh, program untuk menghitung invers matriks, dapat dibagi menjadi beberapa modul kecil. Modul pertama adalah meminta masukan dari pengguna berupa matriks bujur sangkar. Modul kedua adalah mencari invers matriks yang dimasukkan pengguna. Modul terakhir adalah menampilkan hasilnya pada pengguna.

3. Memilih Algoritma.
Langkah ini merupakan salah satu langkah yang penting dalam pemrograman komputer karena pemilihan algoritma yang salah akan menyebabkan program memiliki unjuk kerja yang kurang baik.
4. Menulis Program.
Pada langkah ini dimulai penulisan program komputer untuk memecahkan masalah yang diberikan. Untuk menulis program dapat digunakan salah satu bahasa generasi ketiga. Ada beberapa hal yang harus diperhitungkan sebelum memilih bahasa pemrograman, antara lain masalah yang dihadapi, bahasa pemrograman yang Anda kuasai, dsb.

5. Menguji Program.
Setelah program selesai ditulis dilakukan pengujian. Pengujian pertama adalah; Apakah
program berhasil dikompilasi dengan baik? Pengujian berikutnya; Apakah program dapat
menampilkan keluaran yang diinginkan? Lebih jauh lagi program harus diuji dengan banyak kasus. Sering terjadi, suatu program berjalan baik untuk kasus A, B, C; tetapi menghasilkan sesuatu yang tidak diinginkan untuk kasus X,Y, dan Z. Langkah ini bisa dilakukan berulang-ulang sampai program diyakini benar-benar berjalan sesuai dengan yang diharapkan.

6. Menulis Dokumentasi.
Merupakan hal sepele yang sering dilupakan, karena tidak ada fungsinya pada saat pembuatan program, namun pada masa mendatang akan sangat diperlukan, apalagi bagi orang lain yang mempelajari program kita. Dokumentasi ada dua, yaitu di atas kertas dan menjadi satu dalam program (komentar pendek yang menerangkan fungsi perintah-perintah yang ada dalam program tersebut.

7. Merawat program
Setelah program selesai dan digunakan oleh user, maka sering kali muncul bug / kesalahan yang
sebelumnya tidak terdeteksi, atau juga user ingin menambahkan fasilitas baru, sehingga program harus direvisi.
REFRENSI:
erlangga.staff.gunadarma.ac.id/Downloads/files/.../AP1-C_002.pdf
[Woodman] Mark Woodman. Programming Language Choice: practice and experience. Thompson Computer Press, 1996.
[Rechenber] Rechenber, P. Programming Language as Thought Models. Structured Programming, 11. 1990
[Booch] Booch, Grady. Object-Oriented Analysis and Design. The Benjamin r Commings Publishing Company Inc.
[Martin] J. Martin and J.J. Odell. Object-Oriented Analysis and Design. Prentice Hall, 1992.
marliza.staff.gunadarma.ac.id/Downloads/files/.../pertemuan+III.doc