Welcome

WELCOME TO MY BLOG
"Jadilah diri sendiri apa adanya"

Rabu, 27 April 2016

PROGRAM KONVERSI INFIX KE POSTFIX MENGGUNAKAN BAHASA PASCAL


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