Implementasi Teori Bahasa Dan Automata

May 4, 2018 | Author: Arief Hidayat Sutomo | Category: N/A
Share Embed Donate


Short Description

mohon di baca dengan baik...

Description

Implementasi Teori Bahasa Dan Automata – Aplikasi Kalkulator Sederhana Dengan Java Landasan Teori 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  bisa disebut sebagai sebagai sebuah sebuah teknik rekayasa rekayasa untuk perancangan perancangan sistem sistem komputasi. komputasi. Beberapa bidang ilmu lain yang mendukung pengembangan metode komputasi : 1. Biologi Mempelajari jaringan neuron yang mengilhami di temukanannya temukanannya finite automata. 2. Rangkaian Elektronika Mempelajari teori switching sebagai perancangan perangkat keras menggunakan finite automata. 3. Matematika

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

Finite automata (FA) 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 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  penerapannya  penerapannya adalah kompilasi / translasi bahasa pemograman pemograman tingkat tinggi menjadi menjadi bahasa bahasa mesin yang ekivalen. Finite automata merupakan jenis otomata yang tidak memiliki memori sementara, sementara, FA adalah kelas mesin dengan kemampuan kemampuan paling pali ng terbatas.

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

Turing Machine (TM) Memiliki mekanisme Random Access Memory.

11-9-2010

TBA :Tugas I

Dani Rusda Taufani/ Taufani/ 10108645/IF-9

1

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 katakata 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

11-9-2010

TBA :Tugas I

Dani Rusda Taufani/ 10108645/IF-9

2

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; } }

11-9-2010

TBA :Tugas I

Dani Rusda Taufani/ 10108645/IF-9

3

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 state = state.validateChar(c);

11-9-2010

TBA :Tugas I

Dani Rusda Taufani/ 10108645/IF-9

4

} // 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) {

11-9-2010

TBA :Tugas I

Dani Rusda Taufani/ 10108645/IF-9

5

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.

Setelah ditekan OK, maka keluar dialog seperti ini.

11-9-2010

TBA :Tugas I

Dani Rusda Taufani/ 10108645/IF-9

6

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

Maka akan keluar dialog sebagai berikut.

11-9-2010

TBA :Tugas I

Dani Rusda Taufani/ 10108645/IF-9

7

Referensi 

http://eecchhoo.wordpress.com/2009/01/04/teori-bahasa-dan-automata-bikinaplikasi-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



http://id.wikipedia.org/wiki/Teori_otomata Tanggal 10 Sept 2010, Pukul 19.41 WIB

11-9-2010

TBA :Tugas I

Dani Rusda Taufani/ 10108645/IF-9

8

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF