Stack dalam Pemrograman Pascal
Tumpukan (stack) Dalam Pascal
Secara sederhana, tumpukan dapat diartikan sebagai suatu kumpulan data yang seolah-olah ada data yang diletakkan di atas data yang lain. Satu hal yang perlu diingat adalah bahwa dapat ditambah (menyisipkan) data, dan mengambil (menghapus) data lewat ujung yang sama, yang disebut sebagai ujung atas tumpukan (top of stack).
Untuk lebih memahami operasi yang terjadi pada tumpukan, berikut disajikan contoh program yang memanfaatkan tumpukan untuk membalik kalimat. Dalam hal ini yang dibalik adalah seluruh kalimat, bukan per kata. Anda dapat mencoba, dengan mengacu pada program ini, membalik kalimat dengan melakukan pembalikan perkata. Sebagai contoh, jika kalimat yang dibaca adalah:
BELAJAR PASCAL ADALAH MUDAH DAN MENYENANGKAN
setelah dibalik, maka kalimat di atas dapat menjadi:
NAKGNANEYNEM NAD HADUM HALADA LACSAP RAJALEB
Dalam program yang akan disajikan, kalimat yang akan dibalik disimpan dalam suatu perubah. Kemudian dengan menggunakan proses tumpukan, setiap karakter diambil dan dimasukkan dalamnya. Dengan cara ini, karakter pertama dari kalimat tersebut akan menempati bagian bahwa tumpukan dan karakter terakhir akan menempati bagian atas tumpukan. Dengan demikian, jika semua karakter dalam tumpukan di pop, kalimat akan terbalik.
Program selengkapnya tersaji di bawah ini.
program balik_kalimat;
uses
crt;
const
elemen = 255; { batas maksimum karakter }
type
s255 = string[elemen];
tumpukan = record
isi : s255;
atas : 0..elemen
end;
var
t : tumpukan; { nama tumpukan }
i : integer; { pencacah }
kalimat : s255; { kalimat yang dibalik }
n,m : char;
{ ****************************** }
{ prosedur inisialisasi tumpukan }
{ ****************************** }
procedure awalan ( var t : tumpukan );
begin
t.atas := 0;
end; { akhir prosedur awalan }
{ ********************************************************** }
{ prosedur untuk memastikan elemen ke dalam tumpukan }
{ dalam hal ini cacah karakter maksimum tidak boleh dari 255 }
{ ********************************************************** }
procedure push ( var t : tumpukan; x : char );
begin
t.atas := t.atas + 1;
t.isi[t.atas] := x;
end; { akhir Prosedur push }
{ ******************************************* }
{ fungsi untuk mengambil elemen dari tumpukan }
{ ******************************************* }
function pop ( var t : tumpukan ) : char;
begin
pop := t.isi[t.atas];
t.atas := t.atas - 1;
end; { akhir fungsi pop }
{ ************************** }
{ program utama }
{ ************************** }
begin
clrscr;
awalan (t);
writeln (' Tumpukan untuk membalik kalimat ');
writeln (' -------------------------------- ');
writeln;
{ kalimat yang akan dibalik }
writeln ('Isikan sembarang kalimat : ');
readln (kalimat);
writeln;
writeln(' Kalimat asli : '); ;writeln (kalimat);
writeln('setelah dibalik : ');
{ mempush kalimat ke dalam tumpukan }
for i := 1 to length(kalimat) do
push(t, kalimat[i]);
{ mempop isi tumpukan sehingga diperoleh kalimat }
{ yang dibaca terbalik pembacaannya }
for i := 1 to length(kalimat) do
write (pop(t));
readln;
end.
Maka Hasilnya akan seperti ini:
Komentar
Posting Komentar