PROGRAM
KONVERSI INFIX KE POSTFIX
Pada kesempatan kali ini saya akan membahas tentang program untuk mengkonversi notasi infix ke postfix menggunakan bahasa pascal. Program ini dibuat menggunakan software Turbo Pascal. Berikut ini merupakan rincian Kode Program dan Output:
·
Source Code Program :
Gambar Source Code Program
·
Output
Gambar Output
·
Logika Program
§ Program
KONVERSI_INFIX_KE_POSTFIX; Merupakan sebuah pendeklarasian judul program.
§ const
Max_Elemen = 255; Merupakan perintah untuk mendeklarasikan variabel MAX sendiri
dalam program dan memberi nilai 255.
§
Pendeklarasian Tipe data :
type isi = string[Max_Elemen];
stack = record
hasl : isi;
top : 0..Max_Elemen
end;
var Infix : isi; {* notasi infix *}
Lagi : char;
t : stack;
§
Pendeklarasian fungsi macam-macam
operator.
function ALIANSI (macam_op : char) : integer;
begin
case macam_op of
'^' : ALIANSI := 3; {* pangkat *}
'*', '/' : ALIANSI := 2; {* kali atau bagi *}
'+', '-' : ALIANSI := 1; {* plus atau minus *}
'(' : ALIANSI := 0 {* kurung buka *}
end
end;
§
Pendeklarasian prosedur PUSH (operator
yang menambahkan elemen E pada puncak Stack.
procedure PUSH (var t : stack; Elemen : char);
begin
t.top := t.top + 1;
t.hasl[t.top] := Elemen
end;
§
Pendeklarasian Fungsi POP (operator yang
menghapus sebuah elemen dari puncak Stack.
function POP (var t : stack) : char;
begin
POP := t.hasl[t.top];
t.top := t.top - 1
end;
§
Prosedur untuk mencetak hasil konversi
dari infix menuju postfix.
procedure KONVERSI_CETAK (Infix : isi);
var
i : integer;
temp, Kar : char;
opr : set of char;
begin
opr := ['^']+['*']+['/']+['+']+['-'];
for i := 1 to length(Infix) do
begin
Kar := Infix[i]; {* Kurung buka. Push ke dalam
tumpukan *}
if Kar = '(' then PUSH(t, Kar)
else if Kar = ')' then
begin
while T.hasl[t.top] <> '(' do
write(POP(T):2);
temp := POP(T)
end
else if Kar in opr then
begin
while (t.top <> 0) and (ALIANSI(Kar) <=
ALIANSI(T.hasl[t.top])) do
write(POP(T):2);
PUSH(T, Kar)
end
else if Kar <> ' ' then write(Kar:2)
end;
if t.top <> 0 then
repeat
write(POP(T):2)
until t.top = 0;
end;
Listing
program diatas merupakan proses utama pada program. Karakter yang diinputkan
oleh user disimpan pada variabel Infix[i]. Lalu program akan melanjutkan
percabangan untuk karakter selanjutnya yang diinputkan oleh user. Lalu setelah
itu program akan menentukan apakah PUSH atau POP melalui statement yang telah
diberikan: jika elemen TOP dengan level >= maka POP sebagai output sampai
‘(‘, tetapi jika TOP < operator yang diamati maka di PUSH ke dalam stack.
§
Prosedur mencetak tampilan :
begin
writeln(' =======================================');
writeln('| MENGUBAH NOTASI INFIX MENJADI POSTFIX
|');
writeln(' =======================================');
writeln;
repeat
write('Masukkan ungkapan Infix : ');
readln(Infix); writeln;
write('Hasil Ungkapan postfix : ');
§ Statement
yang digunakan untuk memberikan apakah user ingin mengulangi proses atau keluar
dari program.
KONVERSI_CETAK(Infix);
writeln; writeln;
write('Akan mencoba lagi? Y/N : ');
readln(Lagi);
writeln
until not (Lagi in ['Y', 'y'])
end.
#SEMOGA BERMANFAAT
Tidak ada komentar:
Posting Komentar