Aplikasi Deterministic Finite Automata (DFA) dengan Delphi: -Finite State Automata berdasarkan kemampuan berubah state-statenya bisa di kelompokkan ke dalam deterministic maupun non-deterministic.
DFA mempunyai ciri utama yaitu daru satu state tepat satu state berikutnya untuk setiap simbil masukan yang diterima.
Aplikasi Deterministic Finite Automata (DFA) dengan Delphi |
Dan di bawah ini List sourcode nya Aplikasi Deterministic Finite Automata (DFA) dengan Delphi :
procedure Ttfmutama.Button2Click(Sender: TObject);
begin
close;
end;
procedure Ttfmutama.FSAfungsi(state : string; transisi:string);
var
i: integer;
begin
for i:=i to strgrdtransisi.RowCount do
begin
if(state='q0') and (transisi='a') then
begin
state:=strgrdtransisi.cells[1,1];
end;
if(state='q0') and (transisi='b') then
begin
state:=strgrdtransisi.cells[2,1];
end;
if(state='q1') and (transisi='a') then
begin
state:=strgrdtransisi.cells[1,2];
end;
if(state='q1') and (transisi='b') then
begin
state:=strgrdtransisi.cells[2,1];
end;
statehasil:=state;
end;
end;
procedure Ttfmutama.Button1Click(Sender: TObject);
var
j: Integer;
i: Integer;
begin
for j:=1 to strgrdtransisi.RowCount -1 do
begin
if (strgrdtransisi.Cells[1,j] ='') and
(strgrdtransisi.Cells[2,j]='') then
begin
showmessage ('bukan GRAF DFA, karena ada input yang kosong');
end
else begin
showmessage('Graf yang dibuat dari tabel transisi adalah DFA');
end;
end;
end;
procedure Ttfmutama.Button3Click(Sender: TObject);
var
jumlahstring: integer;
i,j,k: integer;
tampung : string;
stateawal :string;
stateakhir: string;
begin
if(edtstateawal.Text='') then
begin
ShowMessage('state awal harus diisi');
edtstateawal.SetFocus;
Exit;
end;
if(edtstateakhir.Text='') then
begin
ShowMessage('state akhir harus diisi');
edtstateakhir.SetFocus;
Exit;
end;
if(edtstateawal.Text='') then
begin
ShowMessage('state awal harus diisi');
edtstateawal.SetFocus;
Exit;
end;
stateawal := edtstateawal.Text;
stateakhir := edtstateakhir.Text;
jumlahstring:=0;
k:=1;
for i := 1 to length(edtstateawal.Text) do
begin
tampung:='';
for j := k to length(edtstateawal.Text) do
begin
tampung:=tampung+''+edtstateawal.Text[j];
end;
FSAfungsi(stateawal,edtstateawal.Text[i]);
mmoketerangan.Lines.Add('('+stateawal+', '+tampung+') = ' + statehasil);
stateawal:=statehasil;
Inc(jumlahstring);
k:=k+1;
if statehasil='' then
begin
break;
end;
end;
if (statehasil=stateakhir) and (jumlahstring=length(edtstateawal.Text)) then
begin
mmoketerangan.Lines.Add('String Diterima');
end
else
begin
mmoketerangan.Lines.Add('String di tolak');
end;
end;
//mmoketerangan.clear;
//end;
procedure Ttfmutama.FormShow(Sender: TObject);
begin
//form /event/on show/klik dan tulis kode dibawah
strgrdtransisi.cells[1,0]:='A';
strgrdtransisi.cells[2,0]:='B';
strgrdtransisi.cells[0,1]:='q0';
strgrdtransisi.cells[0,2]:='q1';
strgrdtransisi.cells[0,3]:='q2';
strgrdtransisi.cells[1,1]:='q1';
strgrdtransisi.cells[2,1]:='q0';
strgrdtransisi.cells[1,2]:='q2';
strgrdtransisi.cells[2,2]:='q1';
strgrdtransisi.cells[1,3]:='q2';
strgrdtransisi.cells[2,3]:='q2';
end;
procedure Ttfmutama.Button4Click(Sender: TObject);
begin
mmoketerangan.Text:='';
{
strgrdtransisi.Cells[1,1]:='';
strgrdtransisi.Cells[1,2]:='';
strgrdtransisi.Cells[1,3]:='';
strgrdtransisi.Cells[2,1]:='';
strgrdtransisi.Cells[2,2]:='';
strgrdtransisi.Cells[2,3]:='';
}
edtstateawal.Text:='';
Refresh;
end;
0 Response to Aplikasi Deterministic Finite Automata (DFA) dengan Delphi
Post a Comment