• Tidak ada hasil yang ditemukan

Implementasi Teori Bahasa Dan Automata

N/A
N/A
Protected

Academic year: 2021

Membagikan "Implementasi Teori Bahasa Dan Automata"

Copied!
8
0
0

Teks penuh

(1)

Implementasi Teori Bahasa Dan

Implementasi Teori Bahasa Dan

Automata – Aplikasi Kalkulator

Automata – Aplikasi Kalkulator

Sederhana Dengan Java

Sederhana Dengan Java

Landasan Teori

Landasan Teori

Teori bahasa dan automata merupakan salah satu komponen ilmu informatika, teori ini Teori bahasa dan automata merupakan salah satu komponen ilmu informatika, teori ini merupakan ide dan model fundamental yang mendasari sebuah system komputasi, teori ini juga merupakan ide dan model fundamental yang mendasari sebuah system komputasi, teori ini juga  bisa disebut sebag

 bisa disebut sebagai sebuai sebuah teknik reah teknik rekayasa untuk perankayasa untuk perancangan scangan sistem kompistem komputasi.utasi.

Beberapa bidang ilmu lain yang mendukung pengembangan metode komputasi : Beberapa bidang ilmu lain yang mendukung pengembangan metode komputasi :

1.

1. BiologiBiologi

Mempelajari jaringan neuron yang mengilhami di

Mempelajari jaringan neuron yang mengilhami di temutemukanannya finite kanannya finite automata.automata. 2.

2. Rangkaian ElektronikaRangkaian Elektronika

Mempelajari teori switching sebagai perancangan perangkat keras menggunakan finite Mempelajari teori switching sebagai perancangan perangkat keras menggunakan finite automata.

automata.

3.

3. MatematikaMatematika

Mengembangkan system logika yang berguna untuk masalah pembuktian automata. Mengembangkan system logika yang berguna untuk masalah pembuktian automata. Beberapa model komputasi dalam automata:

Beberapa model komputasi dalam automata:

Finite automata (FA) Finite automata (FA)

Sering juga disebut dengan Finite State Automata (FSA). Terdiri dari Deterministic Finite Sering juga disebut dengan Finite State Automata (FSA). Terdiri dari Deterministic Finite Automata (DFA) dan Non Deterministik Finite Automata (NDFA). Teori dasar dari FA sangat Automata (DFA) dan Non Deterministik Finite Automata (NDFA). Teori dasar dari FA sangat umum yaitu system pada saat berada di salahsatu state dari sejumlah state bergerak diantara umum yaitu system pada saat berada di salahsatu state dari sejumlah state bergerak diantara state-state secara dapat diproduksi yang bergantung pada masukan ke system. Salah satu state-state secara dapat diproduksi yang bergantung pada masukan ke system. Salah satu  penerapanny

 penerapannya a adalah adalah kompilasi kompilasi / / translasi translasi bahasa bahasa pemopemograman graman tingkat tingkat tinggi tinggi menjamenjadi di bahasbahasaa mesin yang ekivalen. Finite automata merupakan jenis otomata yang tidak memiliki memori mesin yang ekivalen. Finite automata merupakan jenis otomata yang tidak memiliki memori sem

sementara, entara, FA adalah kelas mesin dengan kemampuFA adalah kelas mesin dengan kemampuan palian paling terbatas.ng terbatas.

Pushdown Automata (PA) Pushdown Automata (PA)

Terdiri dari Deterministic Pushdown Automata (DFA) dan Non Deterministik Pushdown Terdiri dari Deterministic Pushdown Automata (DFA) dan Non Deterministik Pushdown Automata (NDFA). PA memiliki memori sementara dengan mekanisme stack LIFO (Last In Automata (NDFA). PA memiliki memori sementara dengan mekanisme stack LIFO (Last In First Out)

First Out)..

Turing Machine (TM) Turing Machine (TM)

Memiliki mekanisme Random Access Memory. Memiliki mekanisme Random Access Memory.

(2)

Dalam teori bahasa dan Automata digunakan model state (State Machine Model) atau biasa disebut model transisi (State Transition Model), pengembangan teori automata difasilitasi dengan perkembangan bidang Psycho Linguistik.

Teori Bahasa

Teori bahasa membicarakan bahasa formal (formal language), terutama untuk kepentingan  perancangan kompilator (compiler) dan pemroses naskah (text processor). Bahasa formal adalah kumpulan kalimat. Semua kalimat dalam sebuah bahasa dibangkitkan oleh sebuah tata bahasa (grammar) yang sama. Sebuah bahasa formal bisa dibangkitkan oleh dua atau lebih tata bahasa  berbeda. Dikatakan bahasa formal karena grammar diciptakan mendahului pembangkitan setiap kalimatnya. Bahasa manusia bersifat sebaliknya; grammar diciptakan untuk meresmikan kata-kata yang hidup di masyarakat. Dalam pembicaraan selanjutnya ‘bahasa formal’ akan disebut ‘bahasa’ saja..

Pada pembuatan programnya, saya akan membuat aplikasi kalkulator pertambahan yang mengimplementasikan konsep automata. Secara sederhana programnya akan seperti ini.

S = A + A + A + … A = 1…n

n = (Max Integer)

Berikut ini gambar DFA program.

Penjelasannya sebagai berikut.

A = State Awal B = Final State

A(1…9) -> B

B(0…9) -> B B(+) -> C

(3)

C(1…9) -> B

Selanjutnya buatkan representasi dari A, B, C. Karena A, B, C punya kesamaan yaitu sebagai State jadi kita kita buat aja interface untuk State yang isinya

validateCharacter(char), isFinalState(), isStartState()

public interface State {

public boolean isStartState(); public boolean isFinalState();

public State validateChar(Character c) throws Exception; }

Berikutnya buatkan penampung karakter.

public interface CharHelper {

public List acceptedCharacters(); public State getState();

}

Sekarang dibuatkan implementasi CharHelper.

public class DefaultCharHelper implements CharHelper { private State state;

private List acceptedCharacters; public DefaultCharHelper() { }

public DefaultCharHelper(State state, List acceptedCharacters) { this.state = state;

this.acceptedCharacters = acceptedCharacters; }

public void setAcceptedCharacters(List acceptedCharacters) { this.acceptedCharacters = acceptedCharacters; } public void setState(State state) { this.state = state; } public List acceptedCharacters() { return acceptedCharacters; } public State getState() { return state; } }

(4)

Implementasi State :

public class DefaultState implements State { private boolean startState;

private boolean finalState;

private List charHelpers = new L inkedList();

public DefaultState(boolean startState, boolean finalState) { this.startState = startState;

this.finalState = finalState; }

public DefaultState(boolean startState, boolean finalState, List charHelpers) {

this.startState = startState; this.finalState = finalState; this.charHelpers = charHelpers; }

public void  addCharHelper(CharHelper charHelper) { charHelpers.add(charHelper); } public boolean isStartState() { return startState; } public boolean isFinalState() { return finalState; }

public State validateChar(Character c) throws Exception { for (CharHelper helper : charHelpers) {

if (helper.acceptedCharacters().contains(c)) { return h elper.getState(); } } throw new Exception(); } }

Berikutnya buatkan StateManager.

public class StateManager { private State state;

public StateManager(State state) { this.state = state;

}

public Integer calculate(String input) throws Exception { char[] chars = i nput.toCharArray();

for (char c : chars) { // cek input

(5)

}

// cek apakah state akhir merupakan final state if (!state.isFinalState()) {

// jika tidak berarti error throw new Exception(); }

return calculateValidString(input); }

protected  Integer calculateValidString(String input) {

StringTokenizer tokenizer = new StringTokenizer(input, "+"); List strings = new ArrayList();

while (tokenizer.hasMoreTokens()) { strings.add(tokenizer.nextToken()); }

Integer result = 0;

for (String string : strings) {

result += Integer.parseInt(string); }

return result; }

}

Setelah itu tinggal buat deklarasi karakter yang diterima oleh aplikasi yang telah dibuat, karena dari diagram tadi kita nerima input cuma 0…9 dan karakter  ‘+’ jadi kayak gini dibuatnya dan sebelumnya dikumpulkan juga menjadi group.

public class StateUtilities {

private static List zeroToNine; private static List oneToNine; private static List operators; public static List getOneToNine() {

if (oneToNine == null) { oneToNine = new ArrayList(); oneToNine.add('1'); oneToNine.add('2'); oneToNine.add('3'); oneToNine.add('4'); oneToNine.add('5'); oneToNine.add('6'); oneToNine.add('7'); oneToNine.add('8'); oneToNine.add('9'); } return oneToNine; }

public static List getOperators() { if (operators == null) {

(6)

operators = new ArrayList(); operators.add('+');

}

return operators; }

public static List getZeroToNine() { if (zeroToNine == null) { zeroToNine = new ArrayList(); zeroToNine.add('0'); zeroToNine.add('1'); zeroToNine.add('2'); zeroToNine.add('3'); zeroToNine.add('4'); zeroToNine.add('5'); zeroToNine.add('6'); zeroToNine.add('7'); zeroToNine.add('8'); zeroToNine.add('9'); } return zeroToNine; } }

Berikutnya jalankan programnya, maka akan keluar dialog seperti ini.

Saya coba dengan memasukkan seperti berikut.

(7)

Hasil penjumlahan adalah 1110, berikutnya saya mencoba memasukkan input supaya terjadi error, seperti berikut.

(8)

Referensi

http://eecchhoo.wordpress.com/2009/01/04/teori-bahasa-dan-automata-bikin-aplikasi-kalkulator-pertambahan-pake-java/ Tanggal 10 Sept 2010, Pukul 19.27 WIB

 http://farhan-hariri88.blogspot.com/2010/07/teori-bahasa-dan-automata.html

Tanggal 10 Sept 2010, Pukul 19.30 WIB

 http://prayoga.wordpress.com/category/teori-bahasa-dan-automata/ Tanggal 10 Sept

2010, Pukul 19.38 WIB

Referensi

Dokumen terkait

Hasil penelitian ini adalah aplikasi multimedia sebagai media pembelajaran Teori Bahasa Automata pada materi Konversi Finite Automata bagi mahasiswa Program Studi Teknik

1) Dari penelitian dihasilkan sebuah sistem pembelajaran berbasis multimedia bagi pengguna (mahasiswa) untuk mata kuliah teori bahasa otomata pokok bahasan..

Pada prakteknya ketiga penyederhanaan tersebut ( penghilangan useless, unit,  ) dilakukan bersama pada suatu tata bahasa bebas konteks, yang nantinya menyiapkan

Deterministic Finite Automata (DFA) Input Tape String Output “Terima” atau “Tolak” Finite Automaton.. Untuk menerima

Jika selama proses di atas dihasilkan sebuah nilai pada kolom (v, v’) dengan komponen v merupakan stata penerima sedangkan komponen v’ bukan, atau

Stata Hingga adalah sama dengan bahasa yang dapat dihasilkan oleh

pada awal hasil produksi mengandung variabel yang sama dengan ruas kiri.. STMIK GI MDP Diktat Teori Bahasa dan Automata Hal 89. Produksi yang rekursif kanan menyebabkan

Teori Double Movement dan pengaplikasiannya Metode Double Movement Gerak ganda interpretasi adalah salah satu ilmu linguistik atau bahasa dalam penafsiran Teks-Teks Al-Qur’an maupun