File

Rabu, 15 Februari 2012

teknik kompilasi


LATIHAN 1
1.    Mengapa kita memerlukan bahasa pemrograman?
Jawab:
Karena bahasa pemrograman bisa digunakan sebagai sarana komunikasi antara manusia dan computer dalam membantu pemecahan masalah  yaitu dengan menuliskan perintah-perintah secara jelas sehingga dapat dimengerti dengan mudah oleh computer,  serta bahasa dapat digunakan sebagai panduan untuk perancangan sintak.
2.    Jelaskan istilah berikut:
a.    Translator
Translator merupakan sebuah program suatu translator melakukan pengubahan program sumber (source program) ke dalam program objek (object code), supaya dapat di eksekusi maka bahasa tingkat tinggi harus di translasikan ke dalam bahasa mesin.
b.    Assembler
Assembler merupakan sebuah program computer untuk menerjemahkan bahasa assembly ke dalam object code yang merupakan bahasa mesin dalam computer.
c.    Kompilator
Kompilator merupakan suatu program computer yang digunakan untuk proses translasi dari intuksi yang di tulis dalam bahasa tingkat tinggi  ke dalam object code yang berupa bahasa assembly atau bahasa mesin dalam suatu computer dimana source program dan darta dip roses berbeda.
d.    Interpreter
Interpreter merupakan program computer yang di gunakan untuk menjalankan program lain  hasil translasinya hanya dalam bentuk internal serta source code dan data diprosees bersamaan.



3.    Jelaskan model suatu kompilator?
Jawab:

 










Keterangan:
a.    Analisis merupakan program sumber dipecah-pecah dan dibentuk menjadi bentuk antara (intermediate representation).
b.    Sintesis membangun program sasaran yang di inginkan dari bentuk antara program sumber merupakan rangkaian karakter.
Fase pada proses kompilasi:
a.    Analisis lexical bertugas memebaca program sumber, karakter demi karakter. Sederetan karakter dikelompokkan menjadi satu kesatuan kepada pola kesatuan kelompok karakter (token) yang di tentukan dalam bahasa sumber. Setiap token yang dihasilkan akan di simpan dalam table symbol.
b.    Analisis sintaks bertugas memeriksa pola deretan token dengan aturan sintaks yang di tentukan dalam bahasa sumber. Secara logika deretan token yang bersesuain dengan sintaks tertentu akan dinyatakan sebagai pohon parsing (parse tree).
c.    Analisis semantic bertugas memeriksa token dan ekspresi dengan acuan batasan-batasan yang di tetapkan.
d.    Pembangkit kode bertugas membangkitkan kode antara (intermediate code) berdasarkan pohon parsing. Pohon parse selanjutnya diterjemahkan oleh suatu penerjemah, missal oleh penerjemah berdasarkan sintak. Hasilnya biasanya berupa perintah 3 alamat yang merupakan representasi program untuk suatu mesin abstrak, perintah 3 alamat bias berbentuk quadruples (op, argz, result), tripels(op, arg1. arg2).
e.    Pengoptimal kode bertugas mealkukan (penghematan space dan waktu komputasi) jika ungkin terhadap kode antara.
4.    Sebutkan dan jelaskan factor yang mempengaruhi mutu sebuah kompilator?
Jawab:
a.    Kecepatan dan waktu proses kompilasi
Bbergantung pada penulisan algoritma kompilator yaitu algoritma yang digunakan untuk menulis program kompilator tersebut. Kopilator pengkompilasian yaitu sebuah program khusus yang menghasilkan kompilator tersebut.
b.    Mutu program objek
Tergantung ukuran dan kecepatn eksekuksi program. Misalnya turbo pascal 6 lebih baik dari pada turbo pascal 5 karena program objek (exe) pada ukuran kecil dan proses cepat eksekusi. Tergantung pada transaksi yang di gunakan compiler (merubah source kode ke objek kode).
c.    Integrated environment
Merupakan fasilitas terintegrasi yang dimiliki oleh compiler, missal untuk lakukan editing, debugging, testing, dll.
5.    Sebutkan dan jelaskan teknik pembuatan suatu kompilator?
Jawab:


TUGAS 2
1.    Sebutkan dan jelaskan sumber perancangan bahasa pemrograman?
Jawab:
a.    Bahasa alami
Jika sumber bahasa alami maka konstuksi bahasanya akan mirip dengan arti sebenarnya, sehingga akan mempermudah program untuk memprogram khususnya bagi yang belum berpengalaman, dapat digunakan sebagai panduan untuk perancangan sintaks sebuah bahasa pemrograman, namun dapat juga menjadi ambigu karena kadang banyak bahasa alami yang memiliki arti  banyak.
b.    Matematika
Jika sumbernya dari matematika maka akan menjadi logis, matematis, dan penuuh dengan konsep. Namun diperlukan kehati-hatian saat menggunakan notasi matematika untuk suatu konsep, karena seorang programmer dan ahli  matematika berbeda-beda dalam menggunakan metode dan memecahkan masalah.
c.    Bahasa pemrograman yang sudah ada
Jika sumbernya dari bahasa pemrograman yang sudah ada, maka pemrogramakan lebih mudah menggunakannya terutama bila bahasa yang dibentuk  berasal dari bahasa yang sudah terkenal. Namun perlu juga hati-hati karena terkadang dalam bahsa yang belum ada masih ada kesalahan.
2.    Jelaskana tujuan perancangan bahasa pemrograman?
Jawab:
a.    Pendeteksian dan pencegahan kesalahan
Membantu mengidentifikasi error yang terjadi,memepermudah menghilangkan kesalahan.
b.    Untuk berkomunikasi dengan manusia
Keterbatasan kemampuan pikir manusia menyulitkan untuk memahami suatu struktur yang kompleks, maka bahasa pemrograman harus dirancang sebaik mungkin. jika tidak maka bahasa tersebut akan membingungkan programnya. Dimana suatu bahasa yang baik harus memeiliki arti yang sesuai dengan semantiknya.
c.    Useablility
Suatu bahasa pemrograman yang baik harus mudah dipelajari dan diingat, artinya kenyamanan programmer harus diperhatikan untuk kelancaran saat memogram karena tidak akan terus menerus melihat ‘help’.
d.    Efektifitas
Bahasa pemrograman yang baik harus dapat memfasilitasi suatu statement yang jelas untuk suatu maksud tertentu, bahasa harus mampu membiarkan pemrogram menyatakan keinginannya dan menghasilkan sauatu hasil yang diinginkan
e.    Efisiensi
Meminimalisir ketidakcocokan antara hardware dengan bahasa.
f.     Compilability
Suatu bahasa yang baik harus mudah dikompilasi, tidak mempersulit proses kompilasi, kompleksitas  muncul karena adanya symbol yang memeiliki arti berbeda-beda.
g.    Machine independent
Jika dan hanya jika program telah sukses di kompilasi dan dieksekusi pada suatu mesin, dan saat pindah mesin dapat berjalan dan menghasilkan output yang tepat sama.
h.    Kesederhanaan
Kesederhanaan dengan pembatasan tujuan-tujuan perhatian pada keterbacaan,pendefinisian yang baik, konsep yang sederhana yang mudah dipelajari, tapi tidak kesederhanaan juga bias diartikan kelemahan si sisi tertentu.
i.      Orthogonality
Sertiap fungsi bekerja tanpa perlu mengetahui struktur dari yang lain seperti operator aritmatika menggabungkan 2 nilai tidak memperdulikan bagaimana nilai tersebut didapat.
j.      Uniformity
Bahasa yang baik harus bersifat uniform (seragam) tidak berbeda dari bahasa yang sudah ada, sehingga pemrogram akan lebih merasa familiar, cepat untuk diingat.
k.    Generalisasi dan spesifikasi
Jika diguunakan berlebihan bias menghasilkan pemakaian yang jarang, san jika diperbolehkan melakukan ini maka lakukan hal lain dengan cara serupa.
3.    Jelaskan detail perancangan bahasa pemrograman?
Jawab:
a.    Microstructure
Prinsip dasar dari suatu konstruksi seperti operator harus jelas wujudnya dengan kata lain token dari suatu bahasa harus mudah dikenali apa itu dan apa yang dilakukanya, aspek terendah dari mikrostructur yaitu set karakter yang digunakan yaitu harus digunakan set karakte standar agar tidak terjadi hal tidak diinginkan pada saat berpindahpindah.
Keyword harus jelas, mudah diucapkan, memiliki arti sesuai dengan bentuknya.
Keyword harus dipilih sedemikian rupa agar tidak sama dengan variable yang dipilih user.
Keyword harus diawali dengan karakter khusus yang menandainya. Selain itu pengaturan komentar yang diawalai dari suatu tanda symbol awal komentar sampai dengan ditentukannya tanda symbol tertentu sebagai akhir komentar.
b.    Struktur data
·         Deklarasi data:
1.    konstanta, tidak boleh berubah dalam program. 
2.    Type, suatu pembentuk tipe data buatan baru.
3.    Variable, bias diubah dalam program.
·         Pendekatannya:       
1.     tidak ada sama sekali
2.    Soft typing, ditentukan suatu tipe data yang bias menerima nilai apapun.
3.    Hard typing, ditentukan suatu tipe data yang memuat satu jenis tipe data saja.
·         Alokasi variable:       
1.    static, pemakaian global Lokal, dinamik, dan otomatis di dalam prosedur / fungsi
2.    Retention, dialokasikan di entry prosedur tapi tidak dibebaskan pada saat keluar digunakan untuk backtracking dan rekursif.
c.    Struktur ekspresi
Berhubungan dengan urutan evaluasi dari sebuah ekspresi, dapat menggunakan :
a.    Explicit bracketing, menggunakan karakter [,],{,} untuk membatasi ekspresi.
b.    Operator binding, melakukan binding kiri ke kanan, kanan ke kiri dan proiritas.
d.         struktur control dan loop
                - jangan menggunakan GOTO/LABEL karena tak tratur
                - struktur control paling sederhana adalah blok (begin-end,{…})
 - pada if kita menggunakan ekspresi Boolean true/false, 0 dan 1, ganjil dan genap
                -  if biasa dibentuk CASE/SWITCH
                - bentuk loop: for, do , while, do, repeat, unti;
- bentuk prosedur/fungsi memiliki parsing parameter by reference dan by   vakue
e.         struktur kompilasi
menyangkut seluruh aspek pada saat kompilasi adanya fasilitas menyimpan berkas, dan      memfasilitasi untuk memeilih tertentu dari teks untuk di compile.

f.     Struktur I/O
Fasilitas untuk menangani masukan dari keluaran
Format – free, untuk komunikasi sederhana bagi programmer untuk memeriksa kebenaran program
Formatted, output ditampilkan sescara berformat
File-form, output ditampilkan dalam file sekuensi, indexs ekuensial, direct
4.    Jelaskan scenario perancangan bahasa pemrograman?
Jawab:
1.    Tentukan apa yang diinginkan.
2.    Tentukan feature yang mungkin
3.    Tentukan desain dan sesuaikan dengan featurenya
4.    Tentukan rincian, parsing, dan error checking.
5.    Tuliskan user manual dan help.
6.    Evaluasilah, jika salah mulai lagi dari langkah 3.
7.    Jika sudah benar, optimisasilah dan uji segala kemungkinan.
8.    Cobakan kepada pengguna, tunggu reaksinya.
9.    Perbaiki bug dan mulai versi baru.


TUGAS 3
1.    Jelaskan kegunaan hal-hal berikut ini dalam pengembangan suatu kompilator:
a.    Finite State Automata (FSA)
Jawab :
FSA adalah mesin yang dapat mengenali kelas bahasa reguler dan memiliki sifat-sifat :
1. Pita masukan (input tape) berisi rangkaian simbol (string) yang berasal dari himpunan simbol / alfabet.
2. Setiap kali setelah membaca satu karakter, posisi read head akan berada pada simbol berikutnya.
3. Setiap saat, FSA berada pada status tertentu
4. Banyaknya status yang berlaku bagi FSA adalah berhingga

b.    Tata bahasa bebas konteks
Jawab:
Tata bahasa bebas konteks ialah cara yang menunjukkan bagamana menghasilkan untai-untai dalam sebuah bahasa. Kegunaannya apabila terdapat lebih banyak bagian yang belum terturunkan dan bisa terjadi dimana saja. Ketika penurunan itu sudah lengkap, semua bagian yang belum terturunkan telahdiganti oleh string-string (yang mungkin saja kosong) dari himpunan symbol terminal. Bahasa bebas konteks menjafi dasar dalam pembentukan suatu parser analisis sintaks.
c.    Diagram keadaan
Jawab:
Digunakan untuk mendapatkan token, mmepremudah melakukan analisi lexical.
d.    Notasi BNF
Jawab:
Digunakan sebagai notasi standard dalam penyimbolan aturan produksi bias dinyatakan dengan notasi BNF dan BNF menggunakan abstraksi untuk struktur syntax.


e.    Diagram sintaks
Jawab:
Diagram syntax digunakan sebagai alat bantu dalam pemmbuatan parser / analisis sintaksis, menggunakan symbol persegi panjang untuk non terminal dan digunakan sebagai lingkaran untuk symbol terminal.
2.    Buatlah diagram kadaan untuk sebuah bahasa yang memiliki kumpulan token-token berikut:
“+,-,/,*,**,<,<=,>,>=,=,<>, integer, identifier
3.    Buatlah diagram sintaks untuk setiap notasi BNF berikut:
::= { }|


TUGAS 4
1.    Sebutkan dan jelaskan tugas scanner pada sebuah kompilator?
Jawab :
a.    Memecah program sumber menjadi besaran leksik/token
b.    Mengidentifikasikan semua besaran yang membuat  suatu bahasa
c.    Mentransformasikan ke token-token
d.    Menentukan jenis dari token-token
e.    Menangani kesalahan
f.     Menangani tabel simbol

2.    Jelaskan istilah-istilah berikut:
a.    Token
Jawab :
Token merupakan unit atau elemen dasar bahasa komputer (seperti 'kata' di bahasa manusia), dimana unit tersebut tidak terbagi lagi. Token merupakan bagian hasil dari pemecahan sumber program yaitu penerjemahan lexeme pada saat melakukan scanner.

b.    Blank
c.    Identifier
Jawab:
Identifier merupakan keyword ata nama sebuah variable.
d.    Keyword
Jawab:
Keyword adalah kata kunci yang sudah didefinisikan oleh suatu bahasa.misal: begin, end, if, then, else dalam pascal.
e.    Delimeter
Jawab:
Delimeter merupakan pemisah atau pembatas, seperti kurung buka, kurung-tutup, titik, koma, titik-dua, titik-koma, dan white space,
f.     White-space
Jawab:
White space merupakan pemisah yang diabaikan oleh program, seperti enter, spasi, garis baris, dan akhir file.