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.