Rabu, 22 November 2017

TUGAS TEKNIK KOMPILASI

Nama  :Addrian Reynaldo Manafe
Nim     :15110381
Tugas   :Teknik Kompilasi


1. Definisi mengenai Prefix, infix, dan postfix

Prefix, infix, dan postfix adalah suatu cara penulisan ungkapan-ungkapan yang rumit, misalnya pemakaian tanda kurung dalam operasi matematika.
Prefix adalah metode penulisan dengan meletakkan operator di depan operand dan tanpa menuliskan tanda kurung.
Contoh pemakaian prefix adalah  +AB, – +ABC, * + AB – CD.
Infix adalah cara penulisan ungkapan dengan meletakkan operator di antara dua operand dalam hal ini pemakaian tanda kurung sangat menentukan hasil operasi.
Contoh pemakaian infix adalah A+B, A+B-C, (A+B)*(C-D).
Postfix adalah metode penulisan dengan menuliskan operator setelah operand dan tanpa menuliskan tanda kurung.
Salah satu contoh proses pengubahan infix menjadi postfix dari karakter:
( A + B ) / (( C – D ) * E ^ F)

Stack
Stack merupakan bagian dari struktur data yang dikategorikan ke dalam bentuk linear data, dimana operasi pemasukan maupun pengeluaran data selalu dilakukan pada salah satu sisinya. Dalam dunia komputer, penggunaan stack (tumpukan) merupakan suatu hal yang umum digunakan seperti untuk penentuan alamat memory, penempatan ruang data dan aplikasi lain. Sebagai bagian dari struktur data, aplikasi stack juga digunakan untuk berbagai macam keperluan seperti pengujian kalimat palindrome, penguji tanda kurung (matching parentheses), dan juga berfungsi sebagai konversi dari notasi infix menjadi notasi postfix. 
Pada perhitungan aritmatika, notasi infix adalah notasi yang menempatkan operator ditengah dua operand sedangkan notasi Postfix adalah notasi yang menempatkan operator setelah dua operand. Penggunaan notasi infix merupakan hal yang lumrah digunakan dalam perhitungan aritmatika dibandingkan dengan penggunaan notasi Postfix, akan tetapi bagi mesin kompilasi notasi Postfix merupakan notasi yang digunakan untuk melakukan suatu perhitungan. 
Tulisan ini dibuat untuk memberikan gambaran secara jelas proses simulasi konversi atas dua notasi aritmatika tersebut, berdasarkan studi literatur dari beberapa buku dan dituangkan dengan bantuan bahasa pemrograman Pascal. Adapun proses konversi ini ditujukan untuk menjelaskan bagaimana mesin kompilasi dapat merubah notasi infix yang biasa digunakan oleh berbagai kalangan menjadi notasi Postfix yang dimengerti oleh mesin kompilasi sehingga suatu proses perhitungan aritmatika dapat dilaksanakan oleh komputer. Alasan pemilihan bahasa pemrograman Pascal digunakan karena fleksibilitas bahasa tersebut dalam menerangkan implementasi dan aplikasi dari struktur data dalam bentuk pemrograman

Notasi Infix dan Postfix
Suatu perhitungan aritmatika biasanya berhubungan dengan operand dan operator. Operand merupakan suatu karakter atau elemen yang nilainya dioperasikan dengan bantuan suatu operator untuik menghasilkan suatu solusi.
Misalkan jika diberikan suatu ekspresi aritmatika 2 * 3, maka elemen ‘dua’ dan elemen ‘tiga’ merupakan operand dari ekspresi tersebut dan elemen ‘*’ merupakan operator perkalian atas dua operand yang menghasilkan suatu solusi. Suatu ekspresi aritmatika dapat dibedakan dalam tiga bentuk notasi perhitungan yaitu :

1) Notasi prefix, jika operator ditempatkan sebelum dua operand
2) Notasi infix, jika operator ditempatkan diantara dua operand
3) Notasi postfix, jika operator ditempatkan setelah dua operand
Dalam penggunaannya, dalam kehidupan sehari-hari notasi infix merupakan notasi aritmatika yang paling banyak digunakan untuk mengekspresikan suatu perhitungan artimatik dibanding dengan dua notasi yang lain, akan tetapi notasi Postfix merupakan notasi yang digunakan oleh mesin kompilasi pada komputer dengan maksud untuk mempermudah proses pengkodean, sehingga mesin kompilasi membutuhkan stack untuk proses translasi ekspresi tersebut.

Konversi notasi infix ke postfix
Berdasarkan teori yang diterangkan tersebut di atas, proses konversi infix menjadi notasi Postfix dalam implementasinya membutuhkan stack pada proses konversinya, adapun proses tersebut memiliki 4 (empat) aturan yang digunakan, yaitu :
Jika ditemukan simbol kurung buka “(“
Operasi push pada stack akan digunakan untuk menyimpan simbol tersebut ke dalam stack.
Jika ditemukan simbol kurung buka “)”
Operasi pop digunakan untuk mengeluarkan operator-operator yang berada di dalam stack.
Jika terdapat simbol operator
Jika dalam suatu untai notasi infix ditemukan simbol operator maka operasi yang dilakukan pada stack terbagi atas :
Jika TOP(S) dari stack tersebut kosong atau berisi simbol “(“ maka operasi push akan digunakan untuk memasukan operator tersebut pada posisi di TOP(S)
Jika operator yang berada dipuncak stack merupakan elemen yang memiliki tingkat yang sama atau lebih tinggi maka operasi pop digunakan untuk mengeluarkan operator tersebut diikuti operasi push untuk menyimpan operator hasil scanning untai.
Jika operator yang berada di puncak stack memiliki tingkat yang lebih rendah dari operator yang discan, maka operator baru akan langsung dimasukan ke dalam stack dengan operasi push.

Sintaks notasi Postfix :
<operan><operan><operator>
Misalkan ekspresi :
(a + b)*(c + d)
kalau kita nyatakan dalam postfix :
ab + cd + *

Kita dapat mengubah instruksi kontrol program yang ada ke dalam notasi Postfix. Misal :
IF<exp>THEN<stmt1>ELSE<stmt2>
diubah ke dalam Postfix :
<exp> <label1> BZ <stmt1> <label2> BR  <stmt2>
                                                                                                 label1                    label2
Keterangan :
BZ       =  branch if zero (zero =  salah)          {bercabang/meloncat jika kondisi yang dites salah}
BR       =  branch                                           {bercabang/meloncat tanpa ada kondisi yang dites}

Arti dari notasi Postfix di atas adalah sebagai berikut.

“Jika kondisi ekspresi salah, maka instruksi akan meloncat ke Label1dan menjalankan statement2. Bila kondisi ekspresi benar, maka statement1 akan dijalankan lalu meloncat ke Label2. Label1 dan Label1 dan Label2 sendiri menunjukan posisi tujuan loncatan, untuk Label1 posisinya tepat sebelum statement2, dan Label2 setelah statement2”

Dalam implementasi ke kode antara, label bisa berupa nomor baris instruksi. Untuk lebih jelasnya bisa dilihat contoh berikut.
                        IF  a > b  THEN
              c := d
          ELSE
              c := e

Bila diubah ke salam Postfix

11.   a
12.   b
13.   > 
14.   22         {menunjuk label1}
15.   BZ
16.   c
17.   d
18.   :=
19.    
20.   25         {menunjuk label2}
21.   BR
22.   c
23.   e
24.   :=
25.    

Notasi Postfix di atas bisa dipahami sebagai berikut.
Bila ekspresi (a > b) salah, maka loncat ke instruksi no.22
Bila ekspresi (a > b) benar, tidak terjadi loncatan, instruksi berlanjut ke 16 sampai 18, lalu loncat ke 25

2. Defenisi Triples Notation , Indirect Triples dan Quaduples Notation

Triples Notation
            Memiliki format
                        <operator><operand><operand>
contoh, instruksi :
                        A:=D*C+B/E

Bila dibuat Kode Antara tripel:
1.  *,D,C
2.  /,B,E
3.  +,(1),(2)
4.  :=,A,(3)

            Kekurangan dari notasi tripel adalah sulit pada saat melakukan optimasi, maka dikembangkan Indirect Triples yang memiliki dua list (senarai), yaitu list instruksi dan list eksekusi. List instruksi berisi notasi tripel, sedangkan list eksekusi mengatur urutan eksekusinya. Misalnya terdapat urutan instruksi :

            A := B+C*D/E
            F := C*D

List Instruksi :                                      List Eksekusi
1.  *,C,D                                                          1.   1
2.   /, (1), E                                          2.   2
3.  +, B, (2)                                          3.   3
4.  :=, A, (3)                                         4.   4
5.  :=, F, (1)                                          5.   1
                                                            6.   5

Inderec Triples
kekurangan dari notasi tripel adalah sulit pada saat melakukan optimasi , maka di kembangkan Inderec Triples yang memiliki 2 list yaitu list isntruksi dan list eksikusi.list instruksi berisi notasi tripel, sedangkan list eksikusi mengatur urutan eksikusinya misalnya terdapat urutan instruksi berikut:

A := B+C*D/E
            F := C*D

List Instruksi :                                      List Eksekusi
1.  *,C,D                                                          1.   1
2.   /, (1), E                                          2.   2
3.  +, B, (2)                                          3.   3
4.  :=, A, (3)                                         4.   4
5.  :=, F, (1)                                          5.   1
                                                            6.   5


Quaduples Notation
Format instruksi Quadruples
                        <operator><operan><operan><hasil>
hasil adalah temporary yang bisa ditempatkan pada memory atau register


contoh instruksi:
            A:=D*C+B/E

Bila dibuat dalam Kode Antara :
1.   *,D,C,T1
2.   /,B,E,T2
3.  +,T1,T2,A

Rabu, 25 Oktober 2017

Teknik Kompilasi

Nama : Addrian Reynaldo Manafe
Nim    :15110381
UTS    : Teknik Kompilasi


soal:



jawaban:

      1.       Bentuk Grammar : 
      G     = (S, ∑, δ, q0, F)
      Q     = {q0, q1, q2, q3, q4}
      ∑     = {a, b}
      S      = q0

      F      = q3
2. Tabel Transisi

Senin, 23 Oktober 2017

UTS Sistem Pakar



  1. apa itu sistem pakar? jelaskan !


Sistem Pakar(dalam bahasa Inggris :expert system) adalah sistem informasi yang berisi dengan pengetahuan dari pakar sehingga dapat digunakan untuk konsultasi. Pengetahuan dari pakar di dalam sistem ini digunakan sebagi dasar oleh Sistem Pakar untuk menjawab pertanyaan (konsultasi).Kepakaran (expertise) adalah pengetahuan yang ekstensif dan spesifik yang diperoleh melalui rangkaian pelatihan, membaca, dan pengalaman. Pengetahuan membuat pakar dapat mengambil keputusan secara lebih baik dan lebih cepat daripada non-pakar dalam memecahkan problem yang kompleks. Kepakaran mempunyai sifat berjenjang, pakar top memiliki pengetahuan lebih banyak daripada pakar yunior. Tujuan Sistem Pakar adalah untuk mentransfer kepakaran dari seorang pakar ke komputer, kemudian ke orang lain (yang bukan pakar). Sistem pakar adalah suatu program komputer yang mengandung pengetahuan dari satu atau lebih pakar manusia mengenai suatu bidang spesifik. Jenis program ini pertama kali dikembangkan oleh periset kecerdasan buatan pada dasawarsa 1960-an dan 1970-an dan diterapkan secara komersial selama 1980-an. Bentuk umum sistem pakar adalah suatu program yang dibuat berdasarkan suatu set aturan yang menganalisis informasi (biasanya diberikan oleh pengguna suatu sistem) mengenai suatu kelas masalah spesifik serta analisis matematis dari masalah tersebut. Tergantung dari desainnya, sistem pakar juga mampu merekomendasikan suatu rangkaian tindakan pengguna untuk dapat menerapkan koreksi. Sistem ini memanfaatkan kapabilitas penalaran untuk mencapai suatu simpulan.

    2. Berikan 2 contoh aplikasi sistem pakar yang sudah ada ! jelaskan fungsi dan kegunaannya !


a. Kunci Ponsel dengan “Software” Deteksi Wajah
Sistem pengamanan ponsel tampaknya akan semakin kokoh dan memanfaatkan sisi personal sebagai medianya. Hal ini menandakan bahwa era password dan PIN sudah semakin kurang aman. Adalah para ilmuwan di Universitas Manchester mengembangkan perangkat lunak yang akan digunakan di ponsel dengan memanfaatkan wajah penggunanya. Sebenarnya, perangkat ini sudah diadopsi pada notebook, webcam, dan Xbox. Cara kerja software ini adalah dengan memanfaatkan kamera ponsel (khususnya kamera depan) yang akan meng-capture wajah si pemilik ponsel. Kemudian ada 22 titik di wajah yang menjadi kunci verifikasi untuk selanjutnya ponsel pun aktif seperti sedia kala. Dengan cara ini, ditengarai akan lebih akurat dan tentu jauh lebih aman karena pada dasarnya wajah setiap orang memiliki perbedaan yang signifikan, meskipun kembar. Lantas apa bedanya dengan pendeteksi wajah yang selama ini sudah digunakan?
“Mobile face tracker (nama umum perangkat lunak yang sudah ada, Red) hanya menentukan titik di wajah secara perkiraan saja untuk kemudian dibuat skala,” kata Dr Phil Tresadern, ketua tim pembuatan software ini. Pemanfaatnya bahkan bisa digunakan tidak hanya sekadar membuka menu, tetapi juga akses ke e-mail, social network, dan paling penting online banking. “Prosesnya sangat cepat dan saya tidak melihat hal lain yang akan menjadi rival, khususnya di pemakaian ponsel,” ujar Tresadern lagi. Proyek percobaan akan dilakukan pertama kali pada Nokia N900 dan akan menjadi bagian dari proyek Mobile Biometrics (MoBio).

b. Aplikasi Deteksi Cuaca
Dalam bidang ini AI dapat digunakan untuk menganalisis keadaan iklim, mensimulasikan keadaan iklim tersebut dan menganalisis dampak dari perubahan iklim tersebut baik jangka pendek maupun jangka panjang. Hal ini tentu dapat dimanfaatkan oleh manusia untuk mengambil suatu tindakan yang tepat untuk mengatasi perubahan iklim yang terjadi. Contoh lainnya adalah Di daerah amerika yang memiliki potensi munculnya angin tornado yang sangat besar AI dapat digunakan untuk menganalisis pola pergerakan dari angin tersebut, hal ini berdampak untuk meminimalkan jatuhnya korban jiwa akibat angin tornado ini, karena manusia dapat mengambil keputusan yang benar kemanakah mereka harus menjauhi angin tornado tersebut.

Rabu, 04 Oktober 2017

TUGAS II TEKNIK KOMPILASI


  1. Proses Kompilasi
    Definisi : Kompilator (compiler) adalah sebuah program yang membaca suatu program yang ditulis dalam suatu bahasa sumber (source language) dan menterjemahkannya ke dalam suatu bahasa sasaran (target language).

    Proses kompilasi dikelompokkan ke dalam dua kelompok besar :
    •  analisa : program sumber dipecah-pecah dan dibentuk menjadi bentuk antara (intermediate representation)
    •  sintesa : membangun program sasaran yang diinginkan dari bentuk antara fase-fase proses sebuah kompilasi.
  2. Perbedaan dan persamaan proses kompilasi setiap program
    Perbedaan compiler dengan interprter adalah terletak pada proses eksekusi kodenya. Compiler akan menerjemahkan isi kode program secara keseluruhan, sedangkan interpreter akan menerjemahkan dengan cara baris demi baris. karena proses eksekusinya dilakukan per-baris, maka interpreter lebih lambat dibandingkan dengan compiler dan persamaannya itu adalah sama-sama menerjemahkan bahasa pemograman menjadi bahasa mesin.

Rabu, 20 September 2017

Tugas Teknik Kompilasi


  1. Siapa itu chomsky.....?
    Avram Noam Chomsky (lahir di Philadelphia, Pennsylvania, Amerika Serikat, 7 Desember 1928; umur 88 tahun) adalah seorang profesor linguistik dari Institut Teknologi Massachusetts. Salah satu reputasi Chomsky di bidang linguistik terpahat lewat teorinya tentang tata bahasa generatif.
    Kepakarannya di bidang linguistik ini mengantarkannya merambah ke studi politik. Chomsky telah menulis lebih dari 30 buku politik, dengan beragam tema. Dan sejak 1965 hingga kini, dia menjelma menjadi salah satu tokoh intelektual yang paling kritis terhadap kebijakan luar negeri Amerika Serikat. Buku-buku bertema politiknya kerap dianggap terlalu radikal untuk diresensi atau ditampilkan media AS.
    Selama lima dasawarsa ini, Chomsky telah menjalin kontrak secara langsung dengan lebih dari 60 penerbit di seluruh dunia dan sudah menulis lebih dari 30 buku bertema politik. Dan baris-baris kalimat dalam tulisannya muncul di lebih dari 100 buku, mulai dari karya ilmiah tentang linguistik, politik, hingga kumpulan kuliah, wawancara dan esai.
    Noam Chomsky yang kemudian sering disebut Chomsky dikenal sebagai tokoh intelektual yang berani "melawan arus" mapan (atau istilah populernya sebagai antikemapanan), baik terhadap kalangan kolega yang disebut-sebutnya sebagai "pembebek garis resmi kebijakan Amerika Serikat" ataupun para elit pemerintahan di Amerika Serikat. Tulisan dan artikelnya serta pendapatnya yang sering menyentakkan publik dan elit pemerintahan Amerika Serikat terutama dalam perspektif dia yang berbeda seputar peran Amerika Serikat di berbagai tempat di dunia mulai dari Nikaragua, Amerika Tengah, Vietnam hingga Timur Tengah.
  2. Apa itu Linear Bounded automaton (LBA)
    Linear bounded otomata adalah ekseptor untuk kelas 
    bahasa context-sensitive. [1]: 225-226 Satu-satunya batasan yang ditempatkan pada tata bahasa untuk bahasa semacam itu adalah bahwa tidak ada produksi yang memetakan string ke string yang lebih pendek. Jadi, tidak ada turunan dari sebuah string dalam bahasa yang peka konteks dapat mengandung bentuk sentensial lebih lama dari pada string itu sendiri. Karena ada korespondensi satu-ke-satu antara automata linear-bounded dan tata bahasa semacam itu, tidak ada rekaman lebih dari yang diduduki oleh string asli yang diperlukan agar string dikenali oleh robot.
  3. Contoh Bahasa Pemrograman Contex Sensitive Grammar
    Context Sensitive Grammar (Tata Bahasa Tergantung Konteks)
    Tata bahasa ini terdiri dari produksi berbentuk :
    a ® b  dengan  ½a½  <==  ½b½
    dimana a adalah string dan ½a½ adalah panjang string a demikian juga b adalah string dan ½b½ adalah panjang string b. String adalah merupakan deretan simbol baik terminal maupun non terminal.
    Contoh :
    G = ( {S, B, C}, {a, b, c}, S, Q )
    Dimana Q terdiri dari produksi berikut :
    1.      S     ® aSBC ½ abC
    2.      bB  ® bb
    3.      BC ® bc
    4.      CB ® BC
    5.      CC ® cc
  4. contoh Bahasa Pemrograman Context Free Gammar
    Context Free Grammar ( Tata Bahasa Bebas konteks)
    Tata bahasa ini terdiri dari produksi berbentuk :
    a ® b  dengan  ½a½  <==  ½b½
    dimana a adalah anggota Vn sedangkan b adalah string. Berarti Context Free Grammar seluruh produksi ruas kirinya hanya terdiri dari satu simbol yaitu simbol non terminal.
    Contoh :
    G = ( {S, C}, {a, b}, S, Q )
    Dimana Q terdiri dari produksi berikut :
    1.      S ® aSa
    2.      S ® aCa
    3.      C ® b
  5. contoh Bahasa Pemrograman Regular Grammar
    Regular Grammar
    Tata bahasa ini terdiri dari produksi berbentuk :
    a ® b  dengan  ½a½  <==  ½b½
    dimana a adalah anggota Vn dan b mempunyai bentuk aB atau a dengan a anggota Vt dan B anggota Vn.

    Contoh :
    G = ( {S, A, B, C}, {a, b}, S, Q )
    Dimana Q terdiri dari produksi berikut :
    1.      S ® aS ½ aB
    2.      B ® bC
    3.      C ® aC
    4.      C ® a


Rabu, 03 Mei 2017

TUGAS II TBO

Nama : Addrian R. Manafe
NIM   : 15110381


  1. Diagram State




Tabel transisi untuk input nya


Q
ð
&(q,ð)
Q0
a
Q0
Q0
b
Q1
Q1
a
Q1
Q1
c
Q2
Q2
a
Q2
Q2
c
Q1
Q1
b
Q0




Tugas IV TBO

Nama: Addrian R. Manafe
Nim   : 15110381

Soal dan jawaban TBO

Buatlah NFA di atas menjadi DFA yang baru  (5 langkah)

Jawab :

1. Membuat himpunan DFSA
Q’ = {Ø, {a}, {b}, {c}, {a,b}, {a,c}, {b,c}, {a,b,c} }
2. Membuat Initial State DFSA
q0’ = {a,b}
3. Membuat Final State DFSA

F’ = {{a}, {a,b}, {a,c}, {a,b,c}}
4. Membuat Diagram Transisi DFSA

δ =
0
1
Ø
Ø
Ø
a
a,b
a
b
b
b,c
c
a
Ø
ab
a,b
a,b,c
ac
a,b
a
bc
a,b
b,c
abc
a,b
a,b,c

5. Penghapusan State tak diperlukan





Menghilangkan yang tidak perlu



Rabu, 15 Maret 2017

Tugas Teori Bahasa Dan Otomata

Soal:
1.Bagaimana proses pencarian di google di bandingkan dengan Yahoo..?

Jawab:

Menurut pemahaman saya proses pencarian di google lebih mudah dan cepat di bandingkan dengan pencarian pada yahoo…karena Kesimpulan saya adalah google lebih unggul di banding yahoo,karena ada beberapa point yang menyatakan produk yang di minati begitu banyak pengunjung. Misal periklanan, yahoo cuma hanya orang yang memasang iklan(advertisement) dan tidal menyediakan publisher. Sedangkan google, advertisement dan publisher. Dan di bantu dengan beberapa aplikasi seperti adroid,google nexus,youtube dan lain-lain.