Thursday, November 1, 2012

Teori Bahasa & Automata : Contoh Mesin DFA (part 3)


Teori bahasa dan Automata :  Contoh Mesin Deterministic Finite Automata (DFA)  ( part 3 )
- Buat teman-teman yang mengambil kuliah Teori Bahasa dan Automata, kalau di part 1 dan part 2 kita membuat program untuk membuat file dan memasukkan datanya, serta untuk menampilkan isi file tersebut maka pada bagian ini kita membuat program untuk mengecek apakah isi file tersebut diterima atau ditolak oleh mesin yang sudah kita rancang.
 - Menggunakan program pascal.
- Bila dijalankan maka akan tampil seperti gambar diatas. Bagian yang di kotakin warna kuning adalah input masukan berupa nama file dan lokasi penyimpanannya.
- Apabila ada yang kurang jelas silahkan hubungi email /FB/YM saya. Insya Allah,saya bantu.
- Semoga bermanfaat.


program dfa;
type
   sigma='A'..'C';
   state=(s0,s1,s2);

var
   transitiontable : array[state,sigma] of state;
   finalstate : set of state;
   fileteks : text;
   namafile : string[64];
   isibaris : string;

function delta(s:state; c:sigma) : state;
begin
   delta := transitiontable[s,c];
end;

function deltabar(s:state) : state;
var
   t : state;
   i,k : integer;
begin
   t :=s;
   i :=1;
   k :=length(isibaris);
   for i:=1 to k do
      begin
         t :=delta(t,isibaris[i]);
         read(isibaris[i]);

      end;
   deltabar :=t;
end;

function accept : boolean;
begin
   accept := deltabar(s0) in finalstate
end;

procedure initialize;
begin
   finalstate := [s2];
   transitiontable[s0,'A'] := s1;
   transitiontable[s0,'B'] := s0;
   transitiontable[s0,'C'] := s2;
   transitiontable[s1,'A'] := s2;
   transitiontable[s1,'B'] := s0;
   transitiontable[s1,'C'] := s0;
   transitiontable[s2,'A'] := s0;
   transitiontable[s2,'B'] := s0;
   transitiontable[s2,'C'] := s1;
end;

begin

   write('Masukkan Nama File : '); read(namafile);
   assign(fileteks,namafile);
   reset(fileteks);
   writeln('Isi File Tersebut Adalah sbb : ');
   while not eof(fileteks) do
     begin
       readln(fileteks,isibaris);
       writeln(isibaris);
     end;
  close(fileteks);
  readln;
  writeln ('Apakah Diterima [ ENTER ]: ');
   initialize;
   if accept then
      write( 'ACCEPTED ( DITERIMA )')
   else
      write('REJECTED (DITOLAK ) ') ;

readln;
readln;
end.






Lihat Juga :
- Mesin DFA (Part 1 ) : Membuat File penyimpanan bertipe teks dan mengisi file dengan input masukan menggunakan Pascal

- Mesin DFA ( Part 2 ) : Melihat Isi File Bertipe Teks Menggunakan Pascal





Stay cool in Gudang Hikmah

No comments:

Post a Comment