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:

hasil diatas disebut kalimat palindrom
kalimat palindrom adalah kalimat yang susunannya sama dengan keadaan terbaliknya.


                Logika dan Algoritma 


Komentar

Postingan populer dari blog ini

Pemrograman Struktur data Algoritma