Translate

Senin, 21 Januari 2013

SOAL UAS SEMESTER 5, MATEMATIKA DISKRIT





SOAL

1.    Buatlah contoh dari:

-          Kesalahan leksikal
Jawab :
§  Sedikit yang dapat dideteksi, Contoh :: jika fi  ditemukan pada program C
§  fi  (  a ==  f (x)) ………..  
§  penganalisa leksikal tidak dapat menentukan bahwa fi  salah ejaan.
§  Kesalahan ini akan dideteksi di fase lain  yakni parser6

-          Kesalahan sintaks
Jawab :
Kesalahan Sintaks : A:=X+(B*(C+D) {jumlah kurungnya kurang}
      
-          Kesalahan semantiks
Jawab :
  Tipe data yang salah.  Contoh : Var Siswa : Integer             Siswa := 'Yanuar  {tipe string}
  Variabel belum didefinisikan.   Contoh : B := B + 1     {B belum didefinisikan}



2.    Mengapa mencari kesalahan semantik lebih sulit daripada kesalahan leksikal dan sintaksis!

Jawab :
Karena dalam penganalisaan kesalahan pada semantik akan  memeriksa token dan ekspresi dari batasan-batasan yang ditetapkan. Batasan-batasan tersebut misalnya :
a.              Panjang maksimum ekspresi tunggal adalah 80 karakter,
b.             Operasi aritmatika harus melibatkan operan-operan yang bertipe sama
c.              Panjang maksimum token identifier adalah 8 karakter
d.             Nilai bilangan bulat adalah -32768 s/d 32767,


3.    Lakukan optimasi lokal yang diperlukan pada potongan program berikut, dan jelaskan optimasi apa saja yang diterapkan.

A:=B+10*4;
C:=B+D;
F:=B+D-G;
FOR I:= 1 TO 100 DO
BEGIN
                        X:=X+I;
{optimasi lokal folding, dimana 10*4 di ganti menjadi 40 sebagai nilai komputasinya}

                        A:=A+X;
                        B:= 7;
END;
Jawab
{optimasi lokal redundant, dimana B+D di ganti menjadi C yang merupakan komputasi dari B+D

A:=B+40; 
C:=B+D;
F:=C-G;                                                           
FOR I:= 1 TO 100 DO
BEGIN
                        X:=X+I;
                        A:=A+X;
     END;


4.    Apakah kita dapat  melakukan optimasi redundant subexpression elimination pada statement berikut:
a. A:=B+C;
    A:=X+Y;
    F:=B+C+G+H;

b. A:=B+C;
    B:=X+Y;
    F:=B+C+G+H;
Jawab :
a.       (No), karena fariabel A sudah di definisikan kembali dengan ekspresi baru, yang asalnya A:=B+C menjadi A:=X+Y, sehingga pada F:=B+C+G+H, pada ekspresi B+C tidak dapat di gantikan menjadi fariable A karena A sudah berubah menjadi A:=X+Y.
b.      (Yes), karena A masih terdefinisi sebagai A:=B+C, sehingga F:=B+C+G+H dapat di ubah menjadi F:=A+G+H.


5.    Dapatkah kita melakukan optimasi frequency reduction pada loop berikut,
10 FOR I:=1 TO 10 DO
20   A:=I+1;
30
Jawab :
Bisa, karena nominal 10, 20, 30 tidak terlalu penting untuk di eksekusi sehingga dapat di pindahkan karena kalo tidak di pindahkan hanya akan mengganggu kinerja program.
10
20
30
FOR I:=1 TO 10 DO
A:=I+1;


6.    Apakah cukup efisien melakukan optimasi loop unrolling untuk statement berikut:
FOR I := 1 to 100 DO
A(I) := “  
Jawab :
Tidak memungkinkan, karena tidak efisien jika harus mengoptimasikan menjadi A(1) – A(100), hanya akan menghabiskan memory.



7.    Lakukan optimasi global sederhana pada program berikut,
PROGRAM  Test;
VAR A,B,C: INTEGER;
BEGIN
B:=5;
WHILE  B < 3 DO
B;=B+1;
C:=10 +B;
END.
Jawab :
PROGRAM  Test;
VAR A,B,C: INTEGER;
BEGIN
B:=5;
WHILE  B < 3 DO
B:=B+1;
C:=10 +B;
END.



8.    Apa kegunaan dari tabel informasi?
Jawab :
Dua fungsi penting  Tabel Informasi
·         Untuk membantu pemeriksaan kebenaran semantik dari program sumber
·         Untuk membantu dan mempermudah dalam pembuatan intermediate code dan proses pembuatan kode-kode (pembangkitan kode),
Dan kegunaan lainnya dari tabel infoormasi yaitu :
·          Nomor baris variabel yang dideklarasikan
·         Nomor baris variabel yang direferensikan
·         Field link
·         Object  time address
·         Dimensi dari identifier yang bersangkutan
·         Tipe identifier



9.    Mengapa diperlukan referensi  ke tabel lain dari tabel simbol ?
Jawab :
Karena untuk;
o  Membantu pemeriksaan kebenaran semantik dari program sumber.
o  Membantu dan mempermudah pembuatan intermediate code dan proses pembangkitan kode.



10. Apa pertimbangn dalam menentukan suatu elemen menjadi bagian yang diperlukan dari tabel simbol?
Jawab :
Elemen pada Tabel Simbol bermacam-macam, tergantung pada jenis bahasanya.
Misalnya :
o   Tipe identifier : Berisi keterangan/informasi tipe dari  record dan string, maupun procedure dan function.
o   Nomor baris variabel direferensikan.
o   Field link.
o   No urut identifier : Menentukan nomor urut identifier  dalam tabel simbol.
o   Nama identifier : Berisi nama-nama identifier (nama variabel, nama tipe, nama konstanta, nama procedure, nama fungsi, dll) yang terdapat pada program sumber. Nama-nama ini akan dijadikan referensi pada waktu analisa semantik, pembuatan intermediate code, serta pembangkitan kode.
o   Object time address : address yang mengacu ke alamat tertentu.
o   Dimensi dari identifier yang bersangkutan.
o   Nomor baris variabel dideklarasikan.

Tidak ada komentar:

Posting Komentar