TUGAS TEKNIK KOMPILASI (TEKNIK KOMPILASI MODUL II)
OLEH BASRUDDIN
09 024 014 030
JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS ISLAM MAKASSAR 2009
A. Definisi Definisi Bahasa Bahasa Pemro Pemrogra graman man Bahasa Bahasa pemrog pemrograma raman n adalah adalah bahasa bahasa yang yang digunak digunakan an untuk untuk menulis menulis program komputer, dimana dapat menginstruksikan komputer untuk melakukan seperti komputasi berdasarkan suatu algoritma tertentu dan mengorganisasikan aliran aliran kontro kontroll antar antarper peran angka gkat, t, yang yang beris berisii susu susuna nan n defin definis isii dan dan manip manipula ulasi si struktur data dan pengkontrolan alir eksekusi program. Bahas Bahasa a pemr pemrog ogra rama man n berbe berbeda da denga dengan n bahas bahasa a alami. alami. Bahas Bahasa a alami alami digunakan untuk berinteraksi antarmanusia, sedangkan bahasa pemrograman diguna digunaka kan n untuk untuk berko berkomu munik nikas asii antar antara a manus manusia ia denga dengan n komp komput uter. er. Targ Target et bahasa pemrograman pemrograman berbeda – beda. Misalnya Postscript adalah bahasa yang ditargetkan untuk mengkontrol printer dan tampilan.
B. Pembagian Bahasa Pemrograman
Beberapa pembagian bahasa pemrograman antara lain 1.
Typed dan Untyped Programming language
Pada bahasa pemrograman ini lebih ditekankan pada pendeklarasian tipe data yang digunakan. Pada Typed Programming language tipe data harus dideklarasikan dideklarasikan dan tidak bias menerima tipe data selain yang dideklarasikan, dideklarasikan, sedangka sedangkan n pada pada Untyped Untyped Program Programmin ming g languag language e tipe data tidak tidak hgarus hgarus dideklarasikan terlebih dahulu. 2.
Static dan Dynamic Typing Programming Language
Pada Pada baha bahasa sa pemr pemrog ogra ram man ini ini
lebi lebih h berd berdas asar arka kan n pad pada
com compile pilerr
/
interpreternya. interpreternya. Pada Static Typing Programmin Programming g Language pengecekan pengecekan tipe data data dilak dilakuka ukan n pada pada saat saat prog program ram terse tersebut but dikom dikompil pilasi asi ( compil compile e time time), sedangkan Dynamic Typing Programming Language pengecekan tipe data dilakukan pada saat program tersebut dieksekusi ( run time) 3.
Weak dan Strong Programming Language
Pada bahasa pemrograman ini ditekanan pada pengisian tipe data. Weak Programming Language suatu tipe data bisa diisi tipe data lain, sedangkan Strong Programming Language tipe data harus sesuai.
C. Kriteria Bahasa Pemrograman yang baik
1) Clarity, Clarity, simplic simplicity, ity, dan unity unity 2) Orth Orthog ogon onal alit ity y 3) Sesuai dengan tujuan
4) Mendu Mendukun kung g abs abstra traksi ksi 5) IDE 6) Port Portab abil ilit itas as Biaya:: biaya biaya eksek eksekus usi, i, biaya biaya trans translas lasi, i, biaya biaya penc pencipt iptaa aan, n, testin testing, g, biaya biaya 7) Biaya pemeliharaan
D. Dasar Pengelompokkan Bahasa Pemrograman
Bahasa pemrograman dikelompokkan berdasarkan pada sumber bahasa yang digunakan.
Jika sumbe sumberr baha bahasa sa yang yang digun digunak akan an beras berasal al dari dari bahas bahasa a alami alami maka maka 1. Jika konstruksi bahasanya akan mirip dengan arti sebenarnya. Hal itu tentu akan memp memper ermu muda dah h
kita kita untu untuk k
memp mempel elaj ajar arii
baha bahasa sa pemp pempro rogr gram am,,
namu namun n
terkadang terjadi penafsiran ganda dikarenakan banyak bahasa alami yang memiliki arti banyak (ambigu). Contoh : SQL bahasa yang digunakan digunakan berasal dari matematika matematika maka bahasa bahasa 2. Jika sumber bahasa pemrogr pemrograman aman akan menjadi menjadi sangat sangat logis, logis, matema matematis, tis, dan penuh penuh dengan dengan konsep – konsep. Contoh: MATLAB, SciLab, MathCad 3. Jika sumber bahasa yang digunakan berasal dari bahasa pemrograman yang
sudah ada, maka kita akan lebih mudah menggunakannya, terutama bila bahasa yang dibentuk berasal dari bahasa yang sudah sangat terkenal. Tapi perlu perlu juga juga diing diingat at bahw bahwa a bahas bahasa a yang yang sudah sudah adap adapun un terka terkadan dang g masi masih h memiliki kekurangan / kesalahan yang serius untuk itu bahasa yang lebih baru baru harus harus menam menamba bah h fitur fitur baru baru yang yang lebih lebih bagus bagus dan dan meng mengeli elimi minas nasii kesalahan / kekurangan. Contoh: Java mengadopsi beberapa bahasa, seperti C, C++.
E. Tujuan Perancangan Bahasa Pemrograman
Tujuan dari pembuatan dan perancangan bahasa pemrograman adalah agar agar manus manusia ia bisa bisa berko berkomu munik nikasi asi deng dengan an comput computer. er. Peranc Perancang angan an bahas bahasa a pemro pemrogra grama man n harus harusla lah h disus disusun un deng dengan an baik baik dan dan memi memilik likii arti arti yang yang sesua sesuaii
dengan dengan semanti semantikny knya, a, agar agar tidak tidak membing membingungk ungkan an pemrogra pemrogramny mnya a dan untuk untuk menghind menghindari ari penafsi penafsiran ran ganda. ganda. Di samping samping itu suatu suatu bahasa bahasa pemrogr pemrograma aman n haruslah memenuhi beberapa criteria dasar antara lain : 1. Usability Suatu bahasa pemrograman yang baik harus mudah dipelajari dan diingat. Usability dapat juga disebut kenyamanan pemrogram untuk menggunakan
suatu bahasa pemrograman tertentu. 2. Efek Efekti tifi fita tas s Bahasa pemrograman yang baik harus dapat memfasilitasi suatu statemen yang jelas untuk untuk suatu maksud maksud tertentu. tertentu. Sebaiknya Sebaiknya bahasa harus harus mampu membiarkan pemrogram menyatakan keinginannya dan mengahasilkan suatu hasil yang diinginkan. 3. Compilability Suatu bahasa yang baik harus mudah dikompilasi. Tidak mempersulit proses kompilasi. kompilasi. Kompleksitas Kompleksitas dapat muncul muncul karena adanya adanya simbol yang memiliki memiliki arti arti yang berb berbed eda-b a-bed eda. a.
Misal Misal tanda tanda parenthesis.
biasanya digunakan untuk: a. Menge Mengelom lompok pokkan kan sub sub ekspres ekspresii b. Pembata Pembatasan san argum argumen en dalam dalam fungsi fungsi / prosedur prosedur c. Indeks Indeks pada pada array array (pada (pada C, C++, Java, Java, VB) VB) d. Ekspres Ekspresii matem matematik atika a dan dan logika logika 4. Machine Independent
Tanda Tanda parenth parenthesi esis s
Disebut demikian jika dan hanya jika program telah sukses dikompilasi dan dieksekusi pada suatu mesin, saat dipindah ke mesin lainnya dapat berjalan dengan dengan benar benar dan menghasilk menghasilkan an output output yang tepat sama. sama.
Tidak Tidak semua semua
bahasa harus bersifat machine independent , ada yang harus spesifik sesuai dengan mesinnya. mesinnya. Misalnya sistem sistem operasi, operasi, bahasa aritmatika aritmatika floating point (bdk. PASCAL?), karakter – karakter yang didukung (bdk. UNICODE?), dan karakter kontrol (bdk. BELL?) 5. Kesederhanaan ( Simplicity )
Meman Memang g baha bahasa sa yang yang seder sederha hana na baik baik dan dan muda mudah h dipela dipelajar jari, i, tapi tapi tidak tidak kesederhanaan juga bisa berarti kelemahan disuatu sisi tertentu. 6. Uniformity Suatu bahasa yang baik harus bersifat uniform (seragam) tidak ‘berbeda’ dari bahasa – bahasa yang sudah sudah ada. Sehingga pemrogram pemrogram akan lebih lebih merasa familiar, cepat untuk diingat.
F. Detail Perancangan Bahasa Pemrograman
Prinsip dasar dari suatu perancangan bahasa pemrograman adalah kejalasan dari suatu konstruksi konstruksi penyusun bahasa pemrograman itu sendiri. Dengan kata lain, token dari suatu bahasa pemrograman harus mudah untuk dikenali. Microstructure meliputi beberapa hal : 1. Keyword Keyword yang digunakan harus yang standar namun jelas, mudah diucapkan dan memiliki arti yng sesuai dengan bentukannya untuk menghindari hal – hal
yang tidak diinginkan. Keyword harus dipilih sedemikian rupa agar tidak sama dengan variabel yang dipilih user. Hal – hal yang perlu diperhatikan dalam penentuan keyword antara lain ; adalah h “reserved ”, ”, tidak tidak boleh boleh dipak dipakai ai user user dalam dalam memb membua uatt a. Keyword adala variabel, agar tidak terjadi tabrakan dan ambiguitas. yang baik baik haru harus s diaw diawal alii deng dengan an kara karakt kter er khus khusus us yan yang b. Keyword yang menadainya. 2. Komentar.
Penulisan suatu komentar harus diawali dengan suatu tanda simbol sebagai penanda awal komentar sampai dengan ditemukannya ditemukannya tanda simbol tertentu sebagai akhir komentar, walaupun ada karakter apapun didalamnya termasuk spasi. Simbol komentar idealnya a. Terdiri dari 2 karakter, karakter, lebih baik barupa barupa karakter karakter yang sama sama b. Simbo Simbolny lnya a jarang jarang digun digunak akan. an. c. Terdiri Terdiri dari dari karakter karakter yang yang berloka berlokasi si sama pada pada keyboar keyboard d d. Dibedakan antara simbol komentar sebaris dan banyak baris ( multi line ).
Simbol komentar multi line harus ditutup dengan simbol yang sama pula tanpa memperhatikan karakter apapun didalamnya. 3. Stuk Stuktu turr Eks Ekspr pres esii Struk Struktur tur eksp ekspres resii berhu berhubu bunga ngan n denga dengan n uruta urutan n dan dan evalu evaluas asiny inya, a, bisa bisa menggunakan : a. Explicit Bracketing : menggunakan karakter [,],{,},(,), ‘,’
b. Aturan dan urutan urutan operator operator : kiri ke kanan, kanan ke kiri, dan prioritas prioritas 4. Stru Strukt ktur ur Data ata Ada Ada bebe bebera rapa pa aspe aspek k yang yang dipe diperh rhat atik ikan an dala dalam m stru strukt ktur ur data data baha bahasa sa pemrograman
a. Dekl Deklar aras asii data data 1) Konstant Konstanta, a, tidak tidak boleh boleh berubah berubah dalam dalam program program 2) Type, suatu pembentuk tipe data buatan baru
3) Variabel Variabel,, bisa bisa diubah diubah dalam dalam program program b. Tipe data
Ada beberapa bahasa pemrograman yang telah menyediakan tipe data tersendiri namun ada pula yang tidak menyediakannya sama sekali. Pada jenis jenis bahasa bahasa pemrogr pemrograma aman n Soft suatu jenis jenis tipe tipe data data dapat dapat Soft Typing Typing suatu menampung nilai apa pun contohnya scripting language, sedangkan pada jenis bahasa pemrograman pemrograman Hard Typing satu jenis tipe data hanya dapat menampung satu jenis nilai data saja. Pada umumnya tipe data dapat dikelompokkan 1) Tipe Tipe dat data a prim primit itif if Tipe data ini disediakan langsung oleh bahasa pemrograman yang ada. Contoh integer, real, float, byte, char. Tipe data primitif ini dapat dike dikemb mban angk gkan an
menj menjad adii
tipe tipe data data
komp komple leks ks sepe sepert rtii
enum enumer eras asii
(set/himpunan). Misal: Type gelar = (S1, S2, S3). Dapat juga berupa range dari suatu tipe data integer. Misal type tanggal = 1 to 31. Tipe data karakter dan string juga termasuk tipe data primitif, namun tidak semua bahasa memiliki memiliki tipe data string seperti bahasa C dan C+ +. Tipe data string adalah kumpulan (rangkaian) karakter-karaker yang dibentuk menjadi array. Tipe data karakter hanya bisa menerima 1 huruf sedangkan string banyak huruf. Pada C dan C++ string sama
dengan char[ ]. Tipe data string harus memiliki panjang maksimum untuk untuk keperl keperlua uan n penyi penyimp mpana anan n di memo memori. ri. Namu Namun n ada ada juga juga suatu suatu bahasa yang mampu membuat penyimpanan array di memori yang bersifat dinamis. Tipe data terakhir adalah tipe data boolean. Tipe data ini tidak dimiliki semua semua bahasa bahasa,, seper seperti ti C. Pada Pada C, tipe tipe data data boole boolean an bisa bisa dibua dibuatt sendiri dengan menggunakan sintaks: #define false 0 #define true 1 2) Comp Comple lex x data data typ type e Contohnya adalah tipe data seperti pointer. Pointer dapat membentuk tipe data record yang kompleks seperti Stack, List, dan Queue. Ada beberapa bahasa yang juga menyediakan fungsi untuk mengubah tipe data dari tipe data tertetu ke tipe data lainnya. Contoh: Di Delphi ada fungsi StrToInt() atau di VB ada fungsi val() 3) User User Defin Defined ed Data Data Type Type Tipe data yang yang dibuat sendiri sendiri oleh pemrogram. pemrogram. Tipe data seperti seperti ini menambah kekompleksitasan kompilasi 5. Struk Struktur tur Kon Kontr trol ol dan dan Loop Loop Struktur kontrol pada bahasa pemrograman yang palng sederhana ada lah penggun penggunaan aan begin begin – end ataupau ataupaun n { - } tapi tapi yang cukup terken terkenal al adalah adalah penggunaan selection statement yaitu if . . . then . . . else, serta penggunaan
proc proced edur ure e dan dan func functi tion on.. Pada Pada eksp ekspre resi si loop loop atau atau peru perula lang ngan an seri sering ng digunakan for, do..while, while..do, repeat..until 6. Stru Strukt ktur ur Komp Kompil ilas asii Menya Menyangk ngkut ut selur seluruh uh aspek aspek pada pada saat saat prog program ram dikom dikompi pilas lasi. i. Salah Salah satu satu fasi fasili lita tas s komp kompil iler er adal adalah ah adan adanya ya fasi fasili lita tas s meny menyis isip ipak akan an berk berkas as atau atau pengikutsertaan. Ada juga yang memfasilitasi untuk memilih bagian tertentu dari teks untuk dikompile. Contoh : Run to Cursor, go to definition, Run stepby-step
7. Stru Strukt ktur ur I/O I/O I/O adalah struktur input dan output. Ada 3 macam kemungkinan bentuk: a. Format-free form : langsung ditampilkan sehingga mudah bagi user untuk
memeriksa kebenaran program. Contoh pada VB. b. Formatted form : output ditampilkan secara terformat, seperti di C : printf(),
delphi/VB : format(). ditampilkan dalam file sekuensial, index sekuensial, sekuensial, dan c. File form : output ditampilkan direct. 8. Skene Skenena nario rio Peranc Perancan angan gan a. Tentuka Tentukan n apa apa yang diingink diinginkan. an. b. Tentuka Tentukan n featu feature re yang yang mungk mungkin in c. Tentuka Tentukan n desain desain dan sesua sesuaikan ikan deng dengan an feature featurenya nya d. Tentukan Tentukan rincian, rincian, interpret/compile, interpret/compile, dan error checking. checking. e. Tuliska Tuliskan n user user manual manual dan help. help. f. Evaluas Evaluasilah ilah,, jika jika salah salah mulai mulai lagi lagi dari dari langkah langkah 3.
g. Jika sudah benar, optimisasilah dan uji segala kemungkinan.
h. Cobakan Cobakan kepa kepada da penggun pengguna, a, tunggu tunggu reaks reaksinya inya.. i.
Perba Perbaiki iki bug bug dan dan mula mulaii vers versii baru baru..