TEKNIK KOMPILASI
Vending Machine
OLEH :
SHABRINA
MYRATUN FUAH
A. JUDUL LAPORAN
Vending machine (mesin penjual otomatis)
B. TUJUAN LAPORAN
1. Mahasiswa dapat membuat diagram state dari deskripsi program yang
akan di buat.
2. Mahasiswa dapat membuat tabel transisi dari diagram state yang
telah di buat.
3. Mahasiswa dapat menuangkan diagram state yang telah di buat
kedalam bahasa pemrograman, yaitu bahasa pascal.
4. Mahasiswa dapa menguasai bahasa pemrograman pascal.
C. TEORI DASAR
1. Finite State Automata
Finite State Automata / State Otomata berhingga, selanjutnya kita
sebut
sebagai
FSA,
bukanlah
mesin
fisik
tetapi
suatu
model
matematika dari suatu sistem yang menerima input dan output diskrit.
Finite State Automata merupakan mesin otomata dari bahasa
regular. Suatu Finite State Automata memiliki state yang banyaknya
berhingga, dan dapat berpindah-pindah dari suatu state ke state lain.
Secara formal finite state automata dinyatakan oleh 5 tupel atau
M=(Q, , , S, F), dimana :
Q = himpunan state / kedudukan
= himpunan simbol input / masukan / abjad
= fungsi transisi
S = state awal / kedudukan awal (initial state)
F = himpunan state akhir
Finite State Automata yang memiliki tepat satu state berikutnya
untuk setiap symbol masukan yang diterima disebut Deterministic
Finite Automata.
Sebagai contoh, kita memiliki sebuah otomata seperti pada
gambar di bawah ini.
q2
q0
q1
q2
a
q0
q1
q1
b
q1
q2
q2
mendapat input a
disebut non-deterministik
(tidak
pasti
q0
A
{q 0
b
{q1 }
q1
,q1}
{q1 }
{q1 }
2. Analisis leksikal
a.
Masukan bagi sebuah compiler/interpreter adalah program
sumber yang strukturnya berupa deretan dari karakter-karakter
b.
or rather unstructured
Pemrosesan individual karakter yang ketidakefisiennya sangat
c.
d.
e.
menjadi
deretan
token-token
i.e.
scanner
a. Kepala Program
b. Bagian Deklarasi
c. Bagian Pernyataan/Statemen
Kepala program terdiri dari kata program dan nama program.
Kepala
program
bisa
tidak
dituliskan.
Bagian
deklarasi
berisi
D. DESKRIPSI PROGRAM
Terdapat sebuah program vending machine (mesin jaja) yang menjual suatu
jenis minuman vending machine tersebut hanya dapat menerima uang koin Rp.
500 dan Rp. 1000. Jika koin tersebut dimasukan kedalam mesi maka
keluarannya berupaminuman.
E. DIAGRAM STATE
q0
X
a
X
$ Rp. 500
q1
b
X
Rp.
3000
$ Rp.
2500
$ Rp.
1500
b
a
q5
$ Rp.
2000
a,b
q4
q6
keterangan
a= 500
b=1000
$= transaksi
N= tombol membatalkan transaksi
L= tombol melanjutkan transaksi
F. TABEL TRANSISI
state
q2
q3 a
input
transaksi
x
Q0
a
Q1
b
Q2
Q1
Q2
Q3
Q0
Q2
Q3
Q4
Q0
Q3
Q4
Q5
Q0
Q4
Q5
Q6
Q0
Q5
Q6
Q0
Q6
G. LISTING PROGRAM
uses crt;
var
a,b,c,harga,sisa,temp : longint;
Rp.
1000
|');
writeln('+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~|');
writeln('|
|');
writeln(#13#10,'|
Harga minuman Rp.3000,-
|',
#13#10 );
writeln('|
|');
writeln('|
Ketentuan Vending Machine Minuman :
|');
writeln('| -------------------------------------------------------| ');
writeln('|
a:500
|');
writeln('|
b:1000
|');
writeln('|--------------------------------------------------------|');
textcolor(4);
writeln('|
Membatalkan transaksi tekan X
|');
textcolor(1);
writeln('======================================
====================');
writeln;
input_uang :
write('Silahkan masukkan kode koin anda : ');
readln(input);
if (input = 'a') then
harga := harga + a
tersisa
',
temp,
#13#10);
goto input_uang;
end;
writeln('Maaf, kode koin yang anda masukkan salah, silahkan
ulangi transaksi');
readkey;
clrscr();
goto mulai;
batal:
writeln(#13#10,
'---------------------------------------------------------------------------');
writeln('Transaksi dibatalkan. Uang anda akan
dikeluarkan.');
I. ANALISIS DATA
Dibawah ini merupakan penjelasan dari intruksi-instruksi pascal yang
digunakan dalam pembuatan program vending machine. Berikut adalah
penjelasannya:
1. Write = Perintah write digunakan untuk menuliskan output, dengan posisi
cursor penunjuk aktif, terletak pada akhir output yang ditampilkan pada
baris yang sama. Write tidak menambahkan CR setelah menampilkan data
semua argument. Write menampilkan hasil tanpa ganti baris dan tampilan
berikutnya akan disambung dalam baris yang sama.
2. Writeln= Perintah writeln digunakan untuk menuliskan output, dengan posisi
cursor penunjuk aktif, terletak pada awal baris berikutnya. Writeln
menambahkan CR setelah menampilkan data semua argument. Writeln
digunakan untuk menampilkan tampilan perbaris, akan ganti baris untuk
tampilan berikutnya. Argumen perintah writeln boleh berupa ekspresi.