MODUL II
TUMPUKAN (STACK)
Program Tumpukan :
{contoh program Tumpukan}
Program pop_push;
uses wincrt;
const elemen =255; {batas maximum karakter}
type S255 = string [elemen];
tumpukan = recordisi : s255; atas : 0..elemen; end; var T : tumpukan; W : char; kalimat : s255; i,j : integer; procedure awalan (var T : tumpukan); begin T.Atas := 0; end; procedure push (var T : tumpukan; X : char); begin T. Atas := T.Atas+1; T.Isi[T.Atas] := X; end; function pop (var T : tumpukan): char; begin pop := T.Isi[T.Atas]; T.atas := T.atas-1; end; begin {program utama} clrscr; {melakukan proses push} writeln('Masukkan Kalimat : '); read(kalimat); writeln; for i := 1 to length (kalimat) do push (T, kalimat [i]); write('Elemen yang di-push : ', kalimat); writeln; readln; {melakukan proses pop} for i := 1 to length (kalimat) do push (t, kalimat [i]); writeln; writeln('Hasil akhir push dibaca dengan pop : '); {menampilkan hasil proses pop} for j := 1 to length (kalimat) do begin w := pop (T); write(w); end; readln; end. |
Hasil :
____________________________________________________________________________________
Contoh input : Teknik Informatika
Tambahan Karakter : U
Hasil Akhir : UakitamrofnI kinkeT
_________________________________________________________________________
Maka kita hanya menambah variabel (tambah : char) dan sedikit menambah statemen dibagian proses. Inilah programnya yang sudah di modifikasi :
_________________________________________________________________________
Hasil :
________________________________________________________________________
Hasil :
____________________________________________________________________________________
Program Tumpukan (Modifikasi Tambah Karakter) :
Tugas : Modifikasi program diatas untuk menambah sebuah karakter ke dalam tumpukan.Contoh input : Teknik Informatika
Tambahan Karakter : U
Hasil Akhir : UakitamrofnI kinkeT
_________________________________________________________________________
Maka kita hanya menambah variabel (tambah : char) dan sedikit menambah statemen dibagian proses. Inilah programnya yang sudah di modifikasi :
_________________________________________________________________________
Program pop_pushModifikasi;
uses wincrt;
const elemen =255; {batas maximum karakter}
type S255 = string [elemen];
tumpukan = recordisi : s255; atas : 0..elemen; end; var T : tumpukan; W, tambah : char; kalimat : s255; i,j : integer; procedure awalan (var T : tumpukan); begin T.Atas := 0; end; procedure push (var T : tumpukan; X : char); begin T. Atas := T.Atas+1; T.Isi[T.Atas] := X; end; function pop (var T : tumpukan): char; begin pop := T.Isi[T.Atas]; T.atas := T.atas-1; end; begin {program utama} clrscr; writeln('Masukkan Kalimat : '); read(kalimat); writeln; for i := 1 to length (kalimat) do push (T, kalimat [i]); writeln('Elemen yang di-push : ', kalimat); readln; writeln('Tambah karakter : '); readln(tambah); {melakukan proses pop} for i := 1 to length (kalimat) do push (t, kalimat [i]); writeln; writeln('Hasil akhir : '); write(tambah); {menampilkan hasil proses pop} for j := 1 to length (kalimat) do begin w := pop (T); write(w); end; readln;
end.
|
Hasil :
________________________________________________________________________
Program Pop dan Push Animasi :
Procedure PushAnim; uses wincrt; Const Max = 10; Var Top, I : byte; Pil, Temp, E : char; Stack : array [1..Max] of char; Begin For I:=1 to 18 do Begin GotoXY (23+I ,7); write(Temp); {Delay(30);} GotoXY(23,7); ClrEol; End; for I:=1 to 14-top do begin {delay(30);} GotoXY(41,6+I); write(' '); GotoXY(41,7+I); write(Temp); end; End; Procedure PopAnim (Temp:char); Begin For I := 1 to 14-top do Begin {Delay(30);} GotoXY(41,22-I-Top); write(' '); GotoXY(41,21-I-Top); write(Temp); End; For I:=1 to 19 do Begin GotoXY(40+I ,7); write(Temp); {delay(30);} GotoXY(16,7); ClrEol; End; End; Procedure Push(e:char); Begin Inc (Top); Stack[Top] := e; PushAnim; End; Procedure Pop(e:char); Begin If Top <> 0 then Begin E:=stack[Top]; PopAnim(e); Dec(Top); End else Begin GotoXY(1,7); write('Stack Telah Kosong'); readkey; GotoXY(1,7); ClrEol End; End; Begin Clrscr; Writeln('Animasi Stack'); Writeln('1. PUSH'); Writeln('2. POP'); Writeln('3. QUIT'); Writeln('Pilihan Anda [1/2/3] = '); GotoXY(46,6); Write('\'); GotoXY(46,8); Write('/'); GotoXY(38,10); Write('\ /'); For I:=1 to 11 do Begin GotoXY (38,10+I); If I=11 then write('|_____|') else write ('| |'); End; Top := 0; Repeat GotoXY(24,5);ClrEol; Pil :=readkey; Write(pil); If Pil ='1' then Begin If Top<> max then Begin GotoXY(1,7); write('Masukkan satu huruf ='); Temp:=readkey;write(Temp); Push(Temp); GotoXY(1,7);ClrEol; End else Begin GotoXY(1,7);write('Stack sudah penuh'); readkey; GotoXY(1,7);ClrEol; End; End else If pil ='2' then Pop(Temp); Until pil ='3'; End. |
Hasil :
____________________________________________________________________________________
Tidak ada komentar:
Posting Komentar