Mesin NFA
Ekspresi regular dari DFA diatas
000*11*+(000*11*00*11*)*
Source code dari mesin NFA diatas adalah sebagai berikut :
import java.util.Scanner;
import javax.swing.JOptionPane;
public class mesin{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
String pesan = "Mesin ini menerima String biner 0 dan 1 dimana \n"+
"String tersebut diawali 00 dan di akhiri 1\n\n"+
" =============================\n"+
" NFA \n"+
"=============================\n\n"+
" 0 1 \n"+
" __ __ \n"+
" 0 0 | | 1 | |\n"+
"q0 ---> q1 ---> q2 ---->||q3||\n"+
" | | \n"+
" <------- \n"+
" 0 \n\n"+
"Bentuk RE : 000*11*+(000*11*00*11*)*\n\n"+
"Masukkan String: ";
String String1 =JOptionPane.showInputDialog(null,pesan,"MESIN NFA",JOptionPane.QUESTION_MESSAGE);
//String String1 = input.next();
//int s1= Integer.parseInt(String1);
int s1 = String1.length();
int a=0;
if((String1.charAt(s1-1)=='1')&&(String1.charAt(0)!='1')&&(String1.charAt(1)!='1')){
for(int i=1; i<=(s1);i++){
if((String1.charAt(i-1)=='0')&&(String1.charAt(i)=='0')){
a++;
}
}
if(a>=1){
JOptionPane.showMessageDialog(null,"String "+String1+" diterima oleh mesin","Output",JOptionPane.INFORMATION_MESSAGE);
//System.out.println("String diterima\n");
}
}
else
JOptionPane.showMessageDialog(null,"Maaf string "+String1+" ditolak oleh mesin","Output",JOptionPane.INFORMATION_MESSAGE);
//System.out.println("String ditolak\n");
}
}
Penjelasan Program :
Mesin ini dapat menerima string biner yang diawali dengan 00 dan diakhiri dengan 1.
Langkah pertama dari program ini adalah mengecek panjang karakter dari string yang kita inputkan. misalkan panjang karakter sebagai S1. lalu program ini akan mengecek jika karakter ke S1-1 sama dengan 1, maka program ini akan melakukan perulangan sebanyak S1. dan jika pada perulangan, karakter ke i-1 dan karakter ke i sama dengan 0, maka variabel a akan bertambah. setelah itu akan dicek, jika a lebih besar dari 1 maka akan dicetak string diterima. selain itu akan dicetak string ditolak.
Untuk download programnya klik disini