Membuat Program LIFO Dengan Pascal

 


LIFO (Last In, First Out) adalah konsep tumpukan (stack) di mana elemen terakhir yang dimasukkan akan menjadi elemen pertama yang dikeluarkan. Prinsip ini sering digunakan dalam berbagai aplikasi, seperti pengelolaan fungsi rekursif, undo operation di perangkat lunak, atau pemrograman berbasis tumpukan (stack-based programming).

Di Pascal, LIFO dapat diimplementasikan menggunakan array atau pointer. Artikel ini menggunakan array untuk implementasi dasar LIFO.


Konsep LIFO

Operasi dasar LIFO meliputi:

  1. Push: Menambahkan elemen ke tumpukan.
  2. Pop: Menghapus elemen dari tumpukan.
  3. Peek (Top): Melihat elemen teratas tumpukan.
  4. Display: Menampilkan semua elemen dalam tumpukan.

Pada implementasi ini, tumpukan memiliki kapasitas maksimal yang perlu dijaga untuk mencegah overflow (tumpukan penuh) atau underflow (tumpukan kosong).


Contoh Program LIFO di Pascal

Berikut adalah implementasi program LIFO sederhana menggunakan Pascal:

program LIFOStack;

uses crt;

const
  MAX = 5; // Kapasitas maksimum tumpukan

type
  Stack = record
    data: array[1..MAX] of integer;
    top: integer;
  end;

var
  s: Stack;

// Inisialisasi tumpukan
procedure InitializeStack(var s: Stack);
begin
  s.top := 0;
end;

// Mengecek apakah tumpukan kosong
function IsEmpty(s: Stack): boolean;
begin
  IsEmpty := s.top = 0;
end;

// Mengecek apakah tumpukan penuh
function IsFull(s: Stack): boolean;
begin
  IsFull := s.top = MAX;
end;

// Menambahkan elemen ke tumpukan (Push)
procedure Push(var s: Stack; value: integer);
begin
  if IsFull(s) then
    writeln('Tumpukan penuh! Tidak dapat menambahkan elemen.')
  else
  begin
    s.top := s.top + 1;
    s.data[s.top] := value;
    writeln('Data ', value, ' berhasil ditambahkan ke tumpukan.');
  end;
end;

// Menghapus elemen dari tumpukan (Pop)
procedure Pop(var s: Stack);
var
  removedValue: integer;
begin
  if IsEmpty(s) then
    writeln('Tumpukan kosong! Tidak ada elemen untuk dihapus.')
  else
  begin
    removedValue := s.data[s.top];
    writeln('Data ', removedValue, ' berhasil dihapus dari tumpukan.');
    s.top := s.top - 1;
  end;
end;

// Melihat elemen teratas tumpukan (Peek)
procedure Peek(s: Stack);
begin
  if IsEmpty(s) then
    writeln('Tumpukan kosong! Tidak ada elemen di atas.')
  else
    writeln('Elemen teratas: ', s.data[s.top]);
end;

// Menampilkan semua elemen dalam tumpukan
procedure DisplayStack(s: Stack);
var
  i: integer;
begin
  if IsEmpty(s) then
    writeln('Tumpukan kosong!')
  else
  begin
    writeln('Isi tumpukan (dari atas ke bawah):');
    for i := s.top downto 1 do
      writeln(s.data[i]);
  end;
end;

var
  choice, value: integer;

begin
  clrscr;
  InitializeStack(s);

  repeat
    writeln('=== Program LIFO dengan Pascal ===');
    writeln('1. Tambah Data (Push)');
    writeln('2. Hapus Data (Pop)');
    writeln('3. Lihat Elemen Teratas (Peek)');
    writeln('4. Tampilkan Semua Elemen');
    writeln('5. Keluar');
    write('Pilih menu: '); readln(choice);

    case choice of
      1: begin
           write('Masukkan data: '); readln(value);
           Push(s, value);
         end;
      2: Pop(s);
      3: Peek(s);
      4: DisplayStack(s);
      5: writeln('Keluar dari program...');
    else
      writeln('Pilihan tidak valid!');
    end;

    writeln; // Baris kosong untuk estetika
  until choice = 5;

end.

Penjelasan Program

  1. Deklarasi Record Stack
    Tipe data Stack adalah record yang berisi:

    • Array data untuk menyimpan elemen tumpukan.
    • Variabel top untuk melacak posisi elemen teratas.
  2. Operasi LIFO

    • Push: Menambahkan elemen ke posisi berikutnya di top.
    • Pop: Menghapus elemen dari posisi top.
    • Peek: Menampilkan elemen di posisi top tanpa menghapusnya.
    • Display: Menampilkan semua elemen dari top hingga elemen pertama.
  3. Pengecekan Penuh atau Kosong

    • IsEmpty mengembalikan true jika top = 0.
    • IsFull mengembalikan true jika top = MAX.
  4. Menu Utama
    Program memiliki menu interaktif untuk memilih operasi seperti Push, Pop, Peek, atau menampilkan elemen dalam tumpukan.


Contoh Output Program

Input:

Pilih menu: 1
Masukkan data: 10

Pilih menu: 1
Masukkan data: 20

Pilih menu: 4

Output:

Data 10 berhasil ditambahkan ke tumpukan.
Data 20 berhasil ditambahkan ke tumpukan.
Isi tumpukan (dari atas ke bawah):
20
10

Input:

Pilih menu: 3
Pilih menu: 2
Pilih menu: 4

Output:

Elemen teratas: 20
Data 20 berhasil dihapus dari tumpukan.
Isi tumpukan (dari atas ke bawah):
10

Kesimpulan

Program LIFO di atas adalah implementasi dasar dengan array menggunakan Pascal. Anda dapat memperluas program ini dengan:

  1. Menggunakan pointer untuk membuat tumpukan dinamis.
  2. Menambahkan fitur seperti pencarian elemen tertentu di dalam tumpukan.
  3. Mengintegrasikan LIFO ke dalam aplikasi yang lebih besar.

Latihan seperti ini membantu memahami konsep dasar struktur data stack dan penerapannya dalam pemrograman.

 

Next Post Previous Post
No Comment
Add Comment
comment url