STACK DALAM BAHASA PASCAL
IMPLEMENTASI STACK DALAM BAHASA PASCAL
Implementasi dalam bahasa
Pascal dapat dilakukan dengan memanfaatkan struktur data record dan array. Array
dipergunakan untuk menyimpan elemen-elemen yang dimasukkan. Selain itu
diperlukan pula suatu variabel untuk mencatat banyaknya elemen yang adadi dalam
array yang sekaligus menunjukkan TOS. Pada implementasi di bawah ini:
- konstanta maxelm menyatakan banyaknya elemen maksimum yang dapat ditampung oleh stack
- typeelemen adalah tipe data yang akan disimpan di dalam stack (bisa integer, word, real, boolean, char , string atau lainya)
- banyak adalah field yang menyatakan banyaknya elemen dalam stack saat itu, yang sekaligus menyatakan TOS
Deklarasi tipe untuk tumpukan (stack):
type tumpukan = record
banyak :0..maxelm;
elemen : array[1..maxelm] of typeelemen;
end; Selain prosedur untuk POP dan PUSH, kita dapat pula menambahkan sejumlah fungsi untuk membantu penanganan kesalahan diantaranya adalah fungsi PENUHS (untuk mengecek apakah stack penuh) fungsi KOSONGS (untuk mengecek apakah stack kosong) dan fungsi SIZES (untuk mengetahui banyaknya elemen di dalam stack). Masing-masing sub program di atas dapat disajikan pseudocode-nya sebagai berikut:
type tumpukan = record
banyak :0..maxelm;
elemen : array[1..maxelm] of typeelemen;
end; Selain prosedur untuk POP dan PUSH, kita dapat pula menambahkan sejumlah fungsi untuk membantu penanganan kesalahan diantaranya adalah fungsi PENUHS (untuk mengecek apakah stack penuh) fungsi KOSONGS (untuk mengecek apakah stack kosong) dan fungsi SIZES (untuk mengetahui banyaknya elemen di dalam stack). Masing-masing sub program di atas dapat disajikan pseudocode-nya sebagai berikut:
Procedure Inisialisasi(var S : tumpukan);
begin
S. banyak¬ 0
end;
Function PENUHS(S : tumpukan): boolean;
begin
Jika S.banyak = maxelm maka
PENUHS ¬ true
else PENUHS ¬false
end;
Function KOSONGS(S : tumpukan):boolean;
begin
If S.banyak = 0 then
KOSONGS ¬ true
else KOSONGS¬false
end;
Procedure PUSH(data : tipeelemen; var S : tumpukan);
begin
If not
KOSONGS(S) then
begin
- S.banyak ¬ S.banyak +1
- S.elemen[S.banyak]¬data
end
else
Tampilkan pesan kesalahan "Stack Penuh"
end;
Procedure POP(var S : tumpukan; var data : typeelemen);
begin
If not
KOSONGS(S) then
begin
- data¬S.elemen[S.banyak]
- S.banyak ¬ S.banyak - 1
end
else
Tampilkan pesan kesalahan "Stack kosong"
End;