SOAL UJIAN AKHIR SEMESTER
Mata Kuliah : P. Teknik Kompilasi
Tanggal : 16 Juli 2013
Fakultas : ILKOM
Semester/Tahun : ATA 2012/2013
Soal ujian terdiri dari 35 pilihan ganda yang mencakup materi tentang proses kompilasi, semantik analisis, notasi antara, dan optimalisasi program.
1. UNIVERSITAS
GUNADARMA
SK No. 92 / Dikti / Kep / 1996
Fakultas Ilmu Komputer, Teknologi Industri, Ekonomi,
Teknik Sipil & Perencanaan, Psikologi, Sastra
SOAL UJIAN AKHIR SEMESTER
Mata Kuliah : P. Teknik Kompilasi
(IT-011318)
Tanggal : 16 Juli 2013
Fakultas : ILKOM Waktu : 90 menit
Jenjang /Jurusan : S1/SI Dosen : -
Tingakat/Kelas : 3KA01-21,24-33, 35 Sifat Ujian : Tutup Buku
Semester/Tahun : ATA 2012/2013 Jumlah soal : 35 pilihan ganda
Pilih jawaban yang paling benar diantara jawaban a, b, c atau d
1. Di dalam proses kompilasi, Semantik Analisis termasuk kedalam tahapan . . . .
a. Sintesis c. Back end
b. Front end d. Parser
2. Fungsi dari Analisis Semantik adalah . . . .
a. Memecahkan program sumber menjadi besaran leksikal/token
b. Membangkitkan kode antara
c. Memperkecil hasil dan mempercepat proses
d. Menyimpan semua informasi yang berhubungan dengan proses kompilasi
3. Hasil dari tahapan analisis pada Semantik Analisis adalah . . . .
a. Token c. Parsing
b. Intermediate Code d. Tabel Simbol
2. 4. Kegunaan dari Intermediate Code adalah kecuali . . . .
a. Melakukan pemeriksaan terhadap kesesuaian tipe dalam statement-
statement yang ada
b. Intermediate Code lebih mudah dipahami dari pada kode assembly atau kode
mesin
c. Strategi optimisasi lebih mudah dilakukan pada Intermediate Code daripada
pada program sumber dan kode mesin
d. Intermediate Code yang dihasilkan dapat digunakan lagi pada mesin lainnya
5. Macam-macam Intermediate Code kecuali . . . .
a. Notasi Postfix c. Notasi N-Tuple
b. Syntax Tree d. Notasi Token
6. Berdasarkan ekspresi di bawah ini, maka notasi postfix-nya adalah . . . .
(a+b)*c
a. (a+b)c* c. *cab+
b. (ab+)c* d. ab+c*
7. Fungsi dari Analisis Semantik adalah . . . .
a. Memecahkan program sumber menjadi besaran leksikal/token
b. Memperkecil hasil dan mempercepat proses
c. Membangkitkan kode antara
d. Menyimpan semua informasi yang berhubungan dengan proses kompilasi
8. Hasil dari tahapan analisis pada Semantik Analisis adalah . . . .
a. Parsing c. Intermediate Code
b. Token d. Tabel Simbol
3. 9. Kegunaan dari Intermediate Code adalah kecuali . . . .
a. Intermediate Code yang dihasilkan dapat digunakan lagi pada mesin lainnya
b. Melakukan pemeriksaan terhadap kesesuaian tipe dalam statement-
statement yang ada
c. Strategi optimisasi lebih mudah dilakukan pada Intermediate Code daripada
pada program sumber dan kode mesin
d. Intermediate Code lebih mudah dipahami dari pada kode assembly atau kode
mesin
10. Macam-macam Intermediate Code kecuali . . . .
a. Notasi Postfix c. Notasi N-Tuple
b. Notasi Token d. Syntax Tree
11. Berdasarkan ekspresi di bawah ini, maka notasi postfix-nya adalah . . . .
(a+b)*c
a. (a+b)c* c. ab+c*
b. (ab+)c* d. *cab+
12. Perhatikan potongan program di bawah ini !
If a>b then
a:=5
else
b:=10
Maka notasi postfix-nya adalah . . . .
4. a. (1) > b. (1) a c. (1) > d. (1) a
(2) b (2) > (2) a (2) b
(3) a (3) b (3) b (3) >
(4) goto 11 (4) 13 (4) BZ (4) goto 11
(5) BZ (5) a (5) goto 11 (5) BZ
(6) := (6) := (6) a (6) a
(7) 5 (7) 5 (7) 5 (7) 5
(8) a (8) BR (8) := (8) :=
(9) goto 14 (9) 8 (9) BR (9) goto 14
(10) BR (10) b (10) b (10) BR
(11) := (11) := (11) goto 14 (11) b
(12) 10 (12) 10 (12) := (12) 10
(13) b (13) BZ (13) 10 (13) :=
(14) (14) (14) (14)
13. Di dalam notasi postfix jika potongan program percabangan berada pada kondisi
yang salah, maka akan diberikan ekspresi . . . .
a. BZ c. BS
b. BR d. BX
14. Di dalam Intermediate Code bila baris instruksi yang ada terdiri lebih dari 1 tuple
maka dapat diselesaikan dengan menggunakan notasi berikut kecuali . . . .
5. a. N-Tuple c. Triple Notation
b. Notasi Postfix d. Quadruples Notation
15. Bila diberikan ekspresi seperti berikut !
WHILE <eks> DO <statement>
Maka bila diubah kedalam notasi postfix menjadi . . . .
a. <eks> <label 1> BZ <statement> <label 2> BR
b. <label 1> <eks> BR <label 2> <statement> BZ
c. <label 1> BZ <eks> BR <label 2> <statmenent>
d. <statmenent> BR <eks> <label 1> BZ <label 2> <statement>
16. Perhatikan statement berikut ini !
z1 := b * c
z2 := a + z1
x := z2
Jika statement diatas diubah menjadi kode antara dalam bentuk Triples Notation
menjadi . . . .
a. (1) LDA b c. (1) :=, *, a, b, z1
(2) MUL c (2) BZ
(3) STO z1 (3) :=, +, a, z1, z2
(4) LDA a (4) BR
(5) ADD z1 (5) :=, x, z2
6. (6) STO z2
(7) LDA z2
(8) STO x
b. (1) *, b, c, T1 d. (1) *, b, c
(2) +, a, T1, T2 (2) +, a, (1)
(3) :=, T1, T2, x (3) :=, x, (2)
17. Perhatikan statement berikut ini !
A := B*C+D-E/F*G
Jika statement diatas diubah menjadi kode antara dalam bentuk Quadruples
Notation akan menjadi . . . .
a. (1) *, B, C, T1 c. (1) *, B, C, T1
(2) +, C, D, T2 (2) *, F, G, T2
(3) -, D, E, T3 (3) /, E, T2, T3
(4) /, E, F, T4 (4) +, T1, D, T4
(5) *, F, G, T5 (5) -, T4, T3, A
b. (1) *, F, G, T1 d. (1) *, B, C, T1
(2) *, B, C, T2 (2) /, E, F, T2
(3) /, E, F, T3 (3) *, T2, G, T3
(4) +, C, D, T4 (4) +, C, D, T4
(5) -, T4, T3, A (5) -, T4, T2, A
18. Diketahui tata bahasa G_3 berikut aturan semantiknya untuk pengecekan tipe
variabel yang dipakai dalam suatu program.
D → T L {L.in := T.type;}
7. T → int {T.type := integer;}
T → real {T.type := real;}
L→ L1 ‘,’ id {L1.in:=L.in; addtype(id.entry, L.in);}
L → id {addtype(id.entry, L.in);}
Aturan sematik berikut adalah aturan semantik dengan pendekatan yang disebut
sebagai:
a. Recursive descent
b. Translation scheme
c. Syntax directed translation
d. Shift reducing
19. Annotated parse tree untuk kalimat input:
int a,b
berdasarkan tata bahasa G-3 dengan aturan semantik sebagaimana pada soal
no.18 adalah sebagai berikut:
a. Tree
b. tree
D
L
‘,’
L b
int
a
T
T.type = int
D
L.in = addtype()
‘,’
L.in = int; b
int
a
T
D
L
‘,’
L b
int
a
8. c. tree
d. Tree
20. Dependency graph untuk kalimat input int a, b adalah sebagai berikut:
a. Graf
b. Graf
T.type L.in = int;
L.in = int;
b
a
int addtype()
addtype()
D
L
‘,’L bint
T
T.type = int
D
L.in = int; addtype()
‘,’
L.in = int; addtype() b
int
a
9. c. a dan b benar
d. a dan b salah
21. Diketahui tata bahasa G_3 berikut aturan semantiknya untuk maksud yang sama
sebagaimana pada soal no.18, namun ditulis dengan translation scheme, maka
aturan yang benar adalah:
a. Aturan semantik
(a) D → T L {L.in := T.type;}
(b) T → int {T.type := integer;}
(c) T → real {T.type := real;}
(d) L→ L1 ‘,’ id {L1.in:=L.in; addtype(id.entry, L.in);}
(e) L → id {addtype(id.entry, L.in);}
b. Aturan semantik
(a) D → TL {L.in := T.type; {T.type := integer;} {T.type := real;}}
(b) T → int
(c) T → real
(d) L→ L1 ‘,’ {L1.in:=L.in} id {addtype(id.entry, L.in);}
(e) L → id {addtype(id.entry, L.in);}
c. Aturan semantik
(a) D → T{T.type := integer;} {T.type := real;} L {L.in := T.type;}
(b) T → int
(c) T → real
(d) L→ L1 ‘,’ {L1.in:=L.in} id {addtype(id.entry, L.in);}
(e) L → id {addtype(id.entry, L.in);}
d. Aturan semantik
(a) D → TL {L.in := T.type;}
(b) T → int {T.type := integer;}
(c) T → real {T.type := real;}
(d) L→ L1 ‘,’ {L1.in:=L.in} id {addtype(id.entry, L.in);}
(e) L → id {addtype(id.entry, L.in);}
22. Perhatikan cuplikan program berikut:
A := B + 10 * 4; ..... (1)
C := B + D; ...... (2)
F : = B + D – G; ...... (3)
FOR I := 1 to 100 DO ...... (4)
BEGIN
X := X + I; ...... (5)
A : = A + 1; ...... (6)
a
10. B : = 7; ...... (7)
END;
Statement no (1) dapat dioptimasi secara lokal dengan cara :
a. Loop Rolling
b. Redundant-Subexpression Elimination
c. Folding
d. Frequency Reduction
23. Perhatikan cuplikan program berikut:
A := B + 10 * 4; ..... (1)
C := B + D; ...... (2)
F : = B + D – G; ...... (3)
FOR I := 1 to 100 DO ...... (4)
BEGIN
X := X + I; ...... (5)
A : = A + 1; ...... (6)
B : = 7; ...... (7)
END;
Statement no (2) dan (3) dapat dioptimasi secara lokal dengan cara :
a. Folding
b. Redundant-Subexpression Elimination
c. Loop Rolling
d. Frequency Reduction
24. Perhatikan cuplikan program berikut:
A := B + 10 * 4; ..... (1)
C := B + D; ....... (2)
F : = B + D – G; ....... (3)
FOR I := 1 to 100 DO ...... (4)
BEGIN
X := X + I; ....... (5)
A : = A + 1; ....... (6)
B : = 7; ....... (7)
END;
11. Statement no (6) dapat dioptimasi secara lokal dengan cara :
a. Redundant-Subexpression Elimination
b. Strength Reduction
c. Loop Rolling
d. Frequency Reduction
25. Perhatikan cuplikan program berikut:
A := B + 10 * 4; ...... (1)
C := B + D; ....... (2)
F : = B + D – G; ....... (3)
FOR I := 1 to 100 DO ...... (4)
BEGIN
X := X + I; ....... (5)
A : = A + 1; ....... (6)
B : = 7; ....... (7)
END;
Statement no (7) dapat dioptimasi secara lokal dengan cara :
a. Strength Reduction
b. Frequency Reduction
c. Loop Rolling
d. Redundant-Subexpression Elimination
26. Berikut ini proses-proses yang dilakukan saat pernyataan sebuah iterasi
teridentifikasi dalam program sehubungan dengan optimalisasi program, kecuali:
a. Perubahan nilai pada variabel loop harus selalu dijaga.
b. Perlu dilakukan inisialisasi pada variabel loop
c. Dilakukan pengujian terhadap variabel loop apakah sudah mencapai kondisi
terminasi
d. Adjustment yaitu penambahan atau pengurangan nilai pada variabel loop
27. Diketahui sebuah cuplikan program berikut :
J := 7;
IF J < 5 THEN
K : = K -1;
Pada optimasi Global ini disebut :
12. a. Unreachable code
b. Unused Parameter
c. Unused Variable
d. Variable tanpa nilai awal
28. Berikut ini kegunaan Tabel Informasi pada model kompilasi, kecuali:
a. Mempermudah pembuatan dan implementasi dari semantic analyzer
b. Untuk membantu pemeriksaan kebenaran semantik dari program sumber
c. Untuk membantu dan mempermudah dalam pembuatan intermediate code dan
proses pembangkitan kode.
d. Membantu dalam melakukan pemilahan statement program ke dalam
bentuk token-token
29. Tabel informasi atau tabel simbol dibuat pada saat tahap berikut:
a. Pembangkitan Kode
b. Analisis Semantik
c. Analisis Sintaksis
d. Analisis Leksikal
30. Field dalam Tabel Identifier yang menunjukkan informasi obyektif berupa prosedur,
fungsi, tipe, variabel atau konstanta adalah:
a. Nama Identifier
b. Tipe dari Identifier
c. Level Identifier
d. Jenis dari Identifier
31. Karakter-karakter yang merupakan konstanta merupakan elemen dalam tabel
berikut:
a. Tabel Real
b. Tabel Display
c. Tabel String
d. Tabel Array
32. Pengisian tabel display dilakukan dengan konsep berikut:
a. Array
13. b. Parsing
c. Grammar
d. Stack
33. Berikut ini merupakan tabel-tabel yang digunakan saat mencari kelengkapan
informasi suatu identifier, kecuali:
a. Tabel Identifier
b. Tabel String
c. Tabel Real
d. Tabel Array
34. Diketahui himpunan produksi sbb:
S → aS S → aB B → bC C → aC C → a
Himpunan produksi di atas akan menghasilkan bahasa :
a. { | n,m >=1} c. { | n,m >=1}
b. { | n,m >=1} d. { | n,m >=1}
35. Jika di ketahui state diagram sebagai berikut :
String yang dapat di terima (accept) adalah :
a. 10011110 c. 00110101
b. 1010011 d. 1110011