18 September 2014

Bahasa Reguler - Pertemuan 3 - Teknik Kompilasi


Bahasa regular adalah penyusun ekspresi reguler (ER)
Ekspresi reguler terdiri dari kombinasi simbol-simbol atomik menggunakan 3 operasi yaitu :

– katenasi,
– alternasi, dan
– repetisi / closure

Pada kasus scanner, simbol-simbol atomik adalah karakter-karakter di dalam program sumber. Dua buah ekspresi regular adalah ekuivalen jika keduanya menyatakan bahasa yang sama


Katenasi /konkatenasi atau sequencing disajikan dengan physical adjacency
  • e.g. ekspresi regular ‘ ’ bentuk penyajian sederhana (diasumsikan sebagai definisi yang jelas dari letter dan digit) komposisi terurut dari letter diikuti dengan digit
  •  “<” dan “>” digunakan untuk mengidentifikasi simbol-simbol yang merepresentasikan simbol-simbol spesifik (menggunakan ekspresi regular)
  • Kita bisa menggunakan “::=” (ekivalensi) untuk menggabungkan ekspresi regular yang didefinisikan dengan dan  

Alternasi membolehkan pilihan dari beberapa pilihan dan biasanya disajikan dengan operator ‘|’

  • E.g. ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
  • contoh yang menggunakan juga operator ekivalensi

Bentuk tulisan cepat tertentu juga biasanya digunakan dengan alternasi (khususnya ellips)
  • E.g. ::= a | b | … | z | A | B | … | Z
  • Can use the ellipses (“…”) when a sequence is well defined
 
Terakhir, Repetisi membolehkan ekspresi dari kontruksi yang diulang beberapa kali

Terdapat 2 operator yang digunakan yaitu superscript ‘+’ dan superscript ‘*’ 
  • E.g. ::= +
  • this implies a word consists of one or more letters (* would imply zero or more letters and a word must have at least one letter so we use +) 
Selengkapnya bisa dilihat pada tautan di bawah ini :

Bahasa Reguler - Pertemuan 3 


Matriks - Pertemuan 2 - Aljabar Linear

Susunan segiempat yang terdiri atas bilangan – bilangan real yang tersusun atas baris dan kolom.
Menurut Suryadi dan Machmudi (1984), matriks adalah himpunan skalar (bilangan riil atau kompleks) yang disusun / dijajarkan secara empat persegi panjang (menurut baris-baris dan kolom-kolom)
Dalam http://id.wikipedia.org/, dalam matematika, matriks adalah kumpulan bilangan, simbol, atau ekspresi, berbentuk persegi panjang yang disusun menurut baris dan kolom. Bilangan-bilangan yang terdapat di suatu matriks disebut dengan elemen atau anggota matriks. Contoh matriks dengan 2 baris dan 3 kolom yaitu : 

\begin{bmatrix}1 & 9 & -13 \\20 & 5 & -6 \end{bmatrix}.  


Pemanfaatan matriks misalnya dalam menemukan solusi sistem persamaan linear. Penerapan lainnya adalah dalam transformasi linear, yaitu bentuk umum dari fungsi linear, misalnya rotasi dalam 3 dimensi.
Matriks seperti halnya variabel biasa dapat dimanipulasi, seperti dikalikan, dijumlah, dikurangkan dan didekomposisikan. Dengan representasi matriks, perhitungan dapat dilakukan dengan lebih terstruktur.
A =
\begin{bmatrix}
a_{11} & a_{12} & a_{13} \\
a_{21} & a_{22} & a_{23} \\
a_{31} & a_{32} & a_{33} \\
\end{bmatrix}
\! 

Notasi Matrik 
Matriks pada umumnya ditulis dalam tanda kurung siku/kurung kurawal:
 \mathbf{A} = 
 \begin{bmatrix}
 a_{11} & a_{12} & \cdots & a_{1n} \\
 a_{21} & a_{22} & \cdots & a_{2n} \\
 \vdots & \vdots & \ddots & \vdots \\
 a_{m1} & a_{m2} & \cdots & a_{mn}
 \end{bmatrix}.
 

Operasi Dasar

Penjumlahan dan Pengurangan Matrik
Penjumlahan dan pengurangan matriks hanya dapat dilakukan apabila kedua matriks memiliki ukuran atau tipe yang sama. Elemen-elemen yang dijumlahkan atau dikurangi adalah elemen yang posisi atau letaknya sama.
a_{ij} \pm b_{ij} = c_{ij}\!
atau dalam representasi dekoratfinya


\begin{bmatrix}
(a_{11} \pm b_{11}) & (a_{12} \pm b_{12}) & (a_{13} \pm b_{13}) \\
(a_{21} \pm b_{21}) & (a_{22} \pm b_{22}) & (a_{23} \pm b_{23}) \\
\end{bmatrix}
=
\begin{bmatrix}
c_{11} & c_{12} & c_{13} \\
c_{21} & c_{22} & c_{23} \\
\end{bmatrix}
\! 

Perkalian Skalar

Matriks dapat dikalikan dengan sebuah skalar.

\lambda\cdot A := (\lambda\cdot a_{ij})_{i=1, \ldots , m; \ j=1, \ldots , n}

Contoh perhitungan :

5 \cdot
  \begin{pmatrix}
    1 & -3 & 2 \\
    1 &  2 & 7
  \end{pmatrix}
  =
  \begin{pmatrix}
   5 \cdot 1 & 5 \cdot (-3) & 5 \cdot 2 \\
   5 \cdot 1 & 5 \cdot   2  & 5 \cdot 7
  \end{pmatrix}
  =
  \begin{pmatrix}
    5 & -15 & 10 \\
    5 & 10  & 35
  \end{pmatrix}
 

Perkalian Matrik
Matriks dapat dikalikan, dengan cara tiap baris dikalikan dengan tiap kolom, lalu dijumlahkan pada baris yang sama ,
 c_{ij}=\sum_{k=1}^m a_{ik}\cdot b_{kj} 
Contoh perhitungan :


  \begin{pmatrix}
    1 & 2 & 3 \\
    4 & 5 & 6 \\
  \end{pmatrix}
  \cdot
  \begin{pmatrix}
    6 & -1 \\
    3 & 2 \\
    0 & -3
  \end{pmatrix}
  =
  \begin{pmatrix}
     1 \cdot 6  +  2 \cdot 3  +  3 \cdot 0 &
     1 \cdot (-1) +  2 \cdot 2 +  3 \cdot (-3) \\
     4 \cdot 6  +  5 \cdot 3  +  6 \cdot 0 &
     4 \cdot (-1) +  5 \cdot 2 +  6 \cdot (-3) \\
  \end{pmatrix}
  =
  \begin{pmatrix}
    12 & -6 \\
    39 & -12
  \end{pmatrix}
 
Demikian contoh ulasan sedikit.  Sedangkan materi presentasi bisa didownload pada link di bawah ini.

Matriks - Pertemuan 2 - Aljabar Linear  

12 September 2014

Contoh Coding membuat Garis

Buat mahasiswa MK Grafika Komputer kelas Adan B, mohon dicoba ini,
Jangan lupa PR-nya !!!!!
Program inti untuk membuat garis terletak pada tulisan warna biru.
Apabila garisnya lebih dari 1, maka kita tinggal meng copy tulisan warna biru menjadi sejumlah garis yang diinginkan.  Tapi ingat, nama variabelnya harus berbeda !!!!!!

Listing Programnya sabagai berikut :

package penggunaanawt;

import java.awt.*;
import java.awt.event.*;
public class Titik extends Frame implements ActionListener{
    int x = 100;
    int y = 100;
public static void main(String[] args) {
    Frame frame = new Titik();
    frame.setSize(640, 480);
    frame.setVisible(true);
}
public Titik() {
setTitle("AWT Titik");
// create menu
    MenuBar mb = new MenuBar();
    setMenuBar(mb);
    Menu menu = new Menu("File");
    mb.add(menu);
    MenuItem mi = new MenuItem("Exit");
    mi.addActionListener(this);
    menu.add(mi);
// end program when window is closed
    WindowListener l = new WindowAdapter()  {
    public void windowClosing(WindowEvent ev) {
    System.exit(0);
    }
    };
this.addWindowListener(l);
// mouse event handler
MouseListener mouseListener = new MouseAdapter() {
public void mouseClicked(MouseEvent ev) {
    x = ev.getX();
    y = ev.getY();
    repaint();
}
};
addMouseListener(mouseListener);
}

public void paint(Graphics g) {

g.setColor(Color.blue);

int jumlahtitik = 1;
    while (jumlahtitik <=100){
        g.fillRect(100+jumlahtitik, 100+jumlahtitik, 1, 1); // membuat titik dengan format (x,y,lebar x pixel, lebar y pixel)
        jumlahtitik++; }

}
public void actionPerformed(ActionEvent ev) {
String command = ev.getActionCommand();
if ("Exit".equals(command)) {
System.exit(0);
}
}
}



Tengkyu......... ini tidak termasuk dalam listing....

10 September 2014

Teknik Kompilasi - Materi 2 -- Konsep dan Notasi Bahasa

Untuk dapat menyelami proses kompilasi diperlukan waktu yang lebih guna mengamati perilaku kompilasi.
Terdapat bahasa-bahasa pemrograman yang berbeda macam dan bahkan platform, untuk itu perlu ada keseragaman.

Konsep dan Notasi Bahasa
Teori Bahasa
Bahasa adalah kumpulan kalimat. Kalimat adalah rangkaian kata. Kata adalah komponen terkecil kalimat yang tidak bisa dipisahkan lagi.
Contoh : Si Kucing kecil menendang bola besar ----------->     Bhs Indonesia
               The little cat  kicks a big ball                 ----------->     Bhs Inggris
               for i := start to finish do A[i] := B[i]*sin(i*pi/16.0) -->  Bhs Pascal
Dalam bahasa pemrograman, kalimat dikenal sebagai ekspresi, dan kata sebagai token. Kata terdiri atas beberapa karakter. Kelompok karakter yang membentuk sebuah token dinamakam lexeme untuk token tersebut. Setiap token yang dihasilkan, disimpan dalam tabel simbol.
Derivasi adalah sebuah proses dimana suatu himpunan produksi akan diturunkan / dipilah-pilah dengan melakukan sedertan produksi sehingga membentuk untai terminal.

Grammar dan bahasa

Pengertian dasar
  1. Setiap anggota alfabet, dinamakan sebagai simbol terminal atau token.
  2. Himpunan simbol terminal dinyatakan sebagai VT, sedangkan himpunan simbol non terminal dinyatakan sebagai VN.
  3. Simbol-simbol berikut adalah simbol terminal :
  • Huruf kecil awal alfabet, misal x, y, z.
  • Simbol operator, misal +, -, dan x
  • Simbol tanda baca, misal (,), dan ;
  • String yang tercetak tebal, misal, if, then, dan else
4.  Simbol-simbol berikut adalah simbol non terminal :
  • Huruf besar awal alfabet, misal X, Y, Z.
  • Huruf S sebagai simbol awal.
  • String yang tercetak miring, misal expr dan stmt.
5.      Huruf besar akhir alfabet melambangkan simbol terminal atau non terminal, misal X, Y, Z
6.      Huruf kecil akhir alfabet melambangkan string yang tersusun atas simbol-simbol terminal, misalnya : x, y, z.
7.      Sebuah produksi dilambangkan sebagai a ® b, artinya : dalam sebuah derivasi dapat  dilakukan penggantian simbol a dengan simbol b.
8.      Simbol a dalam produksi berbentuk a ® b disebut ruas kiri produksi sedangkan  simbol b  disebut ruas kanan produksi.
9.      Pengertian terminal berasal dari kata terminate (berakhir), maksudnya derivasi  berakhir jika sentensial yang dihasilkan adalah sebuah kalimat (yang tersusun atas  simbol-simbol terminal itu).
10.  Pengertian non terminal berasal dari kata not terminate (belum / tidak berakhir), maksudnya  derivasi  belum / tidak berakhir jika sentensial  yang dihasilkan mengandung simbol non terminal.
11.  String adalah deretan terbatas (finite) simbol-simbol.  Sebagai contoh, jika ab, dan adalah tiga buah simbol maka abcb adalah sebuah  string yang dibangun dari ketiga simbol tersebut.
12.  Jika adalah sebuah string maka panjang string dinyatakan sebagai ïwï dan  didefinisikan sebagai cacahan (banyaknya) simbol yang menyusun string tersebut.  Sebagai contoh, jika abcb maka ïwï= 4.
13.  String hampa adalah sebuah string dengan nol buah simbol. String hampa dinyatakan dengan simbol e (atau ^) sehingga ïeï= 0. String hampa dapat dipandang sebagai simbol hampa karena keduanya tersusun dari  nol buah simbol.


Grammar dan Klasifikasi Chomsky
Grammar G didefinisikan sebagai pasangan 4 tupel : VN, VT, S, dan Q, dan dituliskan sebagai G(VN, VT, S, Q), dimana :
VT           : himpunan  simbol-simbol  terminal  (atau  himpunan  token -token, atau alfabet)
VN           : himpunan simbol-simbol non terminal
S Î V     : simbol awal (atau simbol start)
Q             : himpunan produksi

Aturan produksi dinyatakan sebagai a ® b, artinya a menurunkan b 
Berdasarkan komposisi bentuk ruas kiri dan ruas kanan produksinya (a ® b), Noam Chomsky mengklasifikasikan 4 tipe grammar :
  1. Grammar tipe ke-0 : Unrestricted Grammar (UG)
Ciri : a, b Î (VT½VN)*, ïaï> 0
  1. Grammar tipe ke-1 : Context Sensitive Grammar (CSG)
Ciri : a, b Î (VT½VN)*, 0 < ïaï £ ïbï
  1. Grammar tipe ke-2 : Context Free Grammar (CFG)
Ciri : a Î V, b Î (VT½VN)*
  1. Grammar tipe ke-3 : Regular Grammar (RG)
Ciri : a Î V, b Î {V, VTVN} atau a Î V, b Î {VT, VNVT}
               
Ciri-ciri RG sering dituliskan sebagai :
a Î V, b Î {a, bC} atau a Î V, b Î {a, Bc}



Kelas Grammar

Tabel 1. Mesin pengenal Bahasa
Kelas Bahasa
Mesin Pengenal Bahasa
Unrestricted Grammar (UG)
Mesin Turing (Turing Machine), TM
Context Sensitive Grammar (CSG)
Linear Bounded Automaton, LBA
Context Free Gammar (CFG)
Automata Pushdown (Pushdown Automata), PDA
Regular Grammar, RG
Automata Hingga (Finite Automata)

 
Gambar 1. Hirarki Chomsky
Notasi BNF
Aturan-aturan produksi dapat dinyatakan dalam bentuk BNF ( Backus Naur Form)
Beberapa simbol yang dipakai dalam notasi BNF dapat dilihat pada Tabel 2.
Tabel 2. Simbol-simbol BNF
::=
Identik dengan simbol à pada aturan produksi
|
Menyatakan “atau”
<  >
Mengapit simbol variabel / non terminal
{  }
Pengulangan 0 sampai n kali

Contoh, terdapat aturan produksi sebagai berikut :
                E à T | T+E | T-E, T à a
Notasi BNF :
                E ::= | + | - , T ::= a

Diagram Sintaks
Diagram sintaks merupakan alat bantu dalam pembentukan parser / analisis sintaks. Notasi yang terdapat dalam diagram sintaks :
             Empat persegi panjang melambangkan simbol variabel / non terminal.
             Bulatan melambangkan simbol terminal

Misal, terdapat aturan produksi :
        Tà F*T | F/T | F
Diagram sintaksnya adalah sebagai berikut :
 
Gambar 2. Diagram Produksi

Selengkapnya dapat dilihat pada presentasi di link berikut :


09 September 2014

Persamaan Garis Saling Tegak Lurus

Pertanyaan :

Menjawab pertanyaan saudara di atas, mudah-mudahan saya bisa memberikan solusi yang tepat buat saudara.

Berarti titik B dan C adalah sebuah garis lurus (apabila dari titik B s/d titik C ditarik garis), sehingga titik A kalau ditarik pasti akan melalui garis BC dan tegak lurus padanya.
Misalnya : titik B=(2,3) dan C=(8,7) serta titik A=(7,4), maka gambarnya adalah sebagai berikut :

Gambar 1. Garis BC dan sebuah garis tegak lurus BC melalui A

Maka, langkah-langkahnya adalah sebagai berikut :

1.  Mencari persamaan garis BC terlebih dahulu


Dengan melakukan penyilangan diperoleh persamaan garis BC sebagai berikut :

(y-3)*6 = 4*(x-2)
6y-18 = 4x -8
6y – 4x – 10 = 0

2. Mencari gradient garis m1
6y - 4x -10 = 0
6y = 4x +10  à dibagi dengan 6 untuk memperoleh y saja (untuk membulatkan angka, setiap suku harus dikali atau dibagi dengan penyebutnya), menjadi :
y = 4/6 x +10/6, sehingga gradiennya adalah m=  4/6
          
            3. Syarat dari 2 garis tegak lurus adalah m1.m2 = -1
m1.m2 = -1
4/6.m2=-1
m2=-1/4/6 è -6/4
            
            4.  Persamaan garis yang melalui titik A(7,4) dan tegak lurus pada garis BC adalah :
y-y1 = m2(x-x2)
y-4=-6/4(x-7)
y-4=-6/4x-42/4
y=-6/4x-42/4+4
y=-6/4x-22/4 à pindahkan  -26/4x-22/4 ke sisi kiri, sehingga menjadi 
y+(26/4)x+22/4=0