Aplikasi Finite State Automata (FSA) dengan delphi: - Finite Automata adalah mesin abstrak berupa sistem model matematika dengan masukan dan keluaran diskrit yang dapat mengenali bahasa paling sederhana dan dapat di implementasikan secara nyata dimana sistem dapat berada disalah datu sejumlah berhingga konfigurasi intenral disebut state.

 Untuk kali ini saya akan berbagi Aplikasi Finite State Automata (FSA) yang menggunakan bahasa pemograman Delphi, dan semoga bermanfaat aplikasi ini bagi temen temen yang lagi menempuh mata kuliah TBO (Teori Bahasa Automata)

Gambar Aplikasi Finite State Automata
 Dan Di Bawah Ini Lis Sourcode nya Aplikasi Finite State Automata

Procedure TForm1.FSAfungsi(state:string;transisi:string);
var
i:integer;
begin
if(state='q0')and (transisi='a')then
begin
state:=StringGrid1.Cells[1,1];
end;

if(state='q0')and (transisi='b')then
begin
state:=StringGrid1.Cells[2,1];
end;

if(state='q1')and (transisi='a')then
begin
state:=StringGrid1.Cells[1,2];
end;

if(state='q1')and (transisi='b')then
begin
state:=StringGrid1.Cells[2,2];
end;
end;



procedure TForm1.BitBtn1Click(Sender: TObject);
var
jumlahstring : integer;
i:integer;
state,stateawal,statehasil,stateakhir:string;
begin
if Edit1.Text = '' then
   ShowMessage('Masukkan Input String!!!')
   else begin
   if Edit2.Text = '' then
   ShowMessage('Tentukan State Awal!!!')
   else begin
   if Edit3.Text = '' then
   begin
   ShowMessage('Tentukan State Akhir!!!');
   exit;
   end;
statehasil:=state;
stateawal:=edit2.Text;
stateakhir:=edit3.Text;
jumlahstring:=0;
for i:=1 to Length(Trim(edit1.Text))do
begin
FSAfungsi(stateawal,Edit1.Text[i]);
Memo1.Lines.Add('('+stateawal+','+Edit1.Text[i]+')='+statehasil);
stateawal:=statehasil;
Inc(jumlahstring);
end;

if (statehasil=stateakhir)and (jumlahstring=Length(edit1.text)) then
begin
Memo1.lines.add('String diterima');
end
else
Memo1.lines.add('String ditolak');
end;
end;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
if MessageDlg('Ulangi????',
  mtConfirmation,[mbYes,mbNo],0)=mrYes then
  begin
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
Memo1.Text:='';
end;
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
if MessageDlg('ANDA YAKIN INGIN KELUAR DARI APLIKASI INI?',
  mtConfirmation,[mbYes,mbNo],0)=mrYes then
  begin
    application.Terminate;
  end;
end;

procedure TForm1.formshow(Sender: TObject);
begin
StringGrid1.Cells[0,1]:='q0';
StringGrid1.Cells[0,2]:='q1';
StringGrid1.Cells[1,0]:='a';
StringGrid1.Cells[2,0]:='b';
StringGrid1.Cells[1,1]:='q0';
StringGrid1.Cells[1,2]:='q0';
StringGrid1.Cells[2,1]:='q1';
StringGrid1.Cells[2,2]:='q1';
end;