Anda di halaman 1dari 7

UNIVERSITAS INDO GLOBAL MANDIRI

Jl. Jendral Sudirman No. 629 Km.4 0711-322705 Fax:0711-357754homepage :


http://www.uigm.ac.id/ email : info@uigm.ac.id

KARTU PESERTA UJIAN


Semester Ganjil Tahun 2022/2023

NAMA : Budi Dwi Kurniawan


NPM : 2022110026P
Program Studi : Teknik Informatika

Paraf
NO KODE MATA KULIAH SKS
UTS UAS

1 TI213 Metode Numerik 4

2 TI312 Sistem Berkas 2

3 TI313 Pengantar Robotika 2

4 TI314 Rekayasa Perangkat Lunak 4

5 TI315 Teknik Kompilasi 2

6 TI316 Pembelajaran Mesin 4

7 TI320 Ti & Telekomunikasi (RJ) 2

8 TI319 Jaringan Wireless (RJ) 2

9 TOEIC 03 English For International Comunnication III 0

Total SKS 22

Palembang,....................
Biro Umum Biro Administrasi Akademik

Foto 3 x 4

( ) ( )

Catatan :
Pemegang Kartu Peserta Ujian Dinyatakan telah lunas pembayaran uang kuliah
............................................................................................................................
SOAL UJIAN AKHIR SEMESTER

Mata Kuliah : Teknik Kompilasi


Dosen : Lastri Widya A.
Hari/Waktu : Jum’at/19.00 – 20.40
Sifat Ujian : Open Book / Online

1. Dari string 1010*11001 tentukan dan berikan penjelasan tentang diterima atau ditolak bit
input oleh mesin? (Bobot 20)

2. Jelaskan secara rinci tentang strategi yang dapat dilakukan pada Error Recovery (Bobot 20)!

3. Diberikan Ekspresi :


Susunlah Notasi Infix, Sufix dan postfix (Bobot 20)

4. Jelaskan metode optimasi local pada Machine Independent Optimizer (Bobot 20)

5. Diberikan potongan Statement sebagai berikut:

IF x ! = y THEN
x:=n*a
ELSE
x : = n/a

Susunlah kode Antara triples dan quadruples nation (Bobot 20)


Jawaban :
1. Diagram Fungsi Mesin NDFA

Ꟙ 0 1
Q0 {q1 , q2} {q1}
q1 {q1} {q1}
q2 {q0,q1} {q0,q1}
(q0 , 1) = q1
(q1 , 0) = q1
(q1 , 1) = q0
(q0, 0) = {q1 , q2}
(q2 , 0) = {q0 , q1}
(q1 , 0) = q1
(q1 , 1) = q0
(q0 , 1) = q1
(q1 , 0) = q1
(q1 , 0) = q1
(q1, 1) = q0

Karena berakhir di q0 yang merupakan final state maka string1010*110111 accepted

2. Strategi pada Error Recovery adalah sebagai berikut :


 Mekanisme Ad Hoc
Recovery yang dilakukan tergantung dari pembuatan kompilator sendiri/spesifik, dan tidak
terikat pada suatu aturan tertentu. Cara ini biasa disebut juga Special Purpose error
recovery.
 Syntax Directed Recovery
Melakukan recovery bedasarkan syntax.
Contoh : ada program
begin
A := A + 1
B := B + 1
C := C + 1
end;
kompilator akan mengenali sebagai (dalam notasi BNF)
begin <statement>?<statement>,<statement>end;
? akan diperlakukan sebagai “;”

 Secondary Error Recovery


Berguna untuk melokalisir kesalahan, caranya :

 Panic Mode
Maju uterus dan mengabaikan teks sampai bertemu delimeter (misal ‘:’)
Contoh :
if A := 1
Kondisi := true;
Teks diatas terjadi kesalahan karena tidak ada instruksi THEN, kompilator akan maju
terus sampai bertemu ‘;’

 Unit deletion

Menghapus keseluruhan suatu unit sintaktik (misal: <block>, <exp> , <statement> dan
sebagainya), efeknya sama dengan panic mode tetapi unit deletion memelihara
kebenaran sintaksis dari source program
 Context Sensitive Recovery
Berikan dengan semantik, misal bila terdapat variable yang belum dideklarasikan
(undefined variable) maka diasumsikan tipenya berdasarkan kemunculan.

3. Optimasi dalam sebuah iterasi


 Loop Unrolling
Menggantikan suatu loop dengan menulis statement dalam loop beberapa kali. Contoh
pada instruksi :
For I:= 1 to 2 DO
A (I) := 0;
Terdapat instruksi untuk inisialisasi I menjadi 1. Serta operasi penambahan nilai/incre-
ment 1 dan pengecekan nilai variable I pada setiap perulangan. Sehingga assignment pada
tubuh perulangan menjadi tujuh instruksi, ditambah dengan instruksi assignment pada
tubuh perulangan menjadi tujuh instruksi. Dapat dioptimasikan menjadi :
A [1] := 0;
A [2] := 0,-
Frequency Reduction : Pemindahan statement ke tempat yang lebih jarang dieksekusi.
Contoh :
FOR I:= 1 TO 10 DO
BEGIN
X:= 5;
A:= A+I;
END;
Kita lihat tidak terjadi perubahan/manipulasi pada variable X didalam iterasi, karena itu
kitab isa mengeluarkan instruksi tersebut ke luar iterasi, menjadi
X :=5;
FOR I = I TO 10 DO
BEGIN
A = A+I
END;

4. Metode Optimasi Lokal pada Machine Independent Optimizer adalah :


 Folding
Mengganti Konstanta atau ekspresi yang bisa dievaluasi pada saat compile time dengan
nilai komputasinya, misalnya instruksi
A := 2 + 3 + B bisa diganti menjadi A := 5 + B;

 Redundant-Subexpression Ellimination
Sebuah ekspresi yang sudah pernah dikomputasi, digunakan lagi hasilnya, ketimbang
melakukan komputasi ulang. Misalkan terdapat urutan instruksi :
A := B + C
X := Y + B + C
Kemunculan kedua dari B + C yang redunan bisa diatasi dengan memanfaatkan hasil
komputasi yang sudah ada pada instruksi sebelumnyo. Perhatikan, hal ini bisa dilakukan
dengan catatan belum ada perubahan pada variable yang berkaitan

 Optimasi dalam sebuah iterasi


 Loop Unrolling
Menggantikan suatu loop dengan menulis statement dalam loop beberapa kali.
Contoh pada instruksi :
FOR I := 1 to 2 DO
A (I) := 0 ;
Terdapat instruksi untuk inisialisasi I menjadi 1. Serta operasi penambahan nilai/incr-
oment 1 dan pengecekan niali variable I pada setiap perulangan. Sehingga assignment
pada tubuh perulangan menjadi tujuh instruksi. Dapat dioptimalkan menjadi :
A[1] := 0;
A[2] := 0;
Frequency Reduction : Pemindahan statement ke tempat yang lebih jarang dieksekusi.
Contoh :
FOR I := 1 TO 10 DO
BEGIN
X := 5;
A := A + 1;
END;
Kita lihat tidak terjadi perubahan/manipulasi pada variable X didalam iterasi, karena
itu kitab isa mengeluarkan instruksi tersebut ke luar literasi, menjadi
X := 5;
FOR I := 1 TO I DO
BEGIN
A := A + 1;
END;
 Strengtj Reduction
Penggantian suatu operasi dengan jenis operasi lain yang lebih cepat dieksekusi.
Misalkan pada beberapa computer operasi perkalian memerlukan waktu lebih banyak
untuk dieksekusi dari pada operasi penjumlahan, maka penghematan waktu bisa
dilakukan denga mengganti operasi perkalian tertentu dengan penjumlahan.
Contoh lain, Instruksi
A := A + 1;
Dapat digantikan dengan
INC (A);

5. Diberikan potongan statement berikut


IF x ! = y THEN
x : = n*a
Else
x : = n/a

Kode Antara Triples Notation


1. ! = x,y
2. BZ,(1),(6) {Bila kondisi (1) salah maka loncar ke no (6)}
3. *,n,a
4. := ,x,(3)
5. BR, ,(8)
6. /,n/a
7. :=,x,(6)

Kode antara Quadruples Notation

1. ! =; x,y,T 1
2. BZ,(1),(5) {bila kondisi (1) salah maka loncat ke no (5)}
3. *,n,a,T2

Anda mungkin juga menyukai