Membuat Program FIFO Dengan Pascal


FIFO (First In, First Out) adalah konsep antrian (queue) di mana data yang pertama kali masuk akan menjadi data yang pertama kali keluar. FIFO banyak digunakan dalam pengelolaan data, seperti buffer jaringan, printer queue, atau manajemen memori.

Di Pascal, kita bisa membuat program FIFO menggunakan array atau pointer. Dalam artikel ini, kita akan menggunakan array untuk implementasi dasar FIFO.


Konsep FIFO

  1. Data dimasukkan ke dalam antrian (queue) melalui ujung belakang (rear).
  2. Data dikeluarkan dari antrian melalui ujung depan (front).
  3. Antrian memiliki batas maksimal (kapasitas), sehingga perlu dilakukan pengecekan apakah antrian penuh atau kosong.

Operasi Dasar FIFO

  1. Enqueue: Menambahkan data ke antrian.
  2. Dequeue: Menghapus data dari antrian.
  3. Display: Menampilkan data dalam antrian.

Contoh Program FIFO di Pascal

Berikut adalah program lengkap FIFO sederhana menggunakan array di Pascal:

program FIFOQueue;

uses crt;

const
  MAX = 5; // Kapasitas maksimum antrian

type
  Queue = record
    data: array[1..MAX] of integer;
    front, rear: integer;
  end;

var
  q: Queue;

// Inisialisasi antrian
procedure InitializeQueue(var q: Queue);
begin
  q.front := 0;
  q.rear := 0;
end;

// Mengecek apakah antrian kosong
function IsEmpty(q: Queue): boolean;
begin
  IsEmpty := q.front = 0;
end;

// Mengecek apakah antrian penuh
function IsFull(q: Queue): boolean;
begin
  IsFull := q.rear = MAX;
end;

// Menambahkan elemen ke antrian (Enqueue)
procedure Enqueue(var q: Queue; value: integer);
begin
  if IsFull(q) then
    writeln('Antrian penuh!')
  else
  begin
    if IsEmpty(q) then
      q.front := 1; // Jika antrian kosong, set front ke 1
    q.rear := q.rear + 1;
    q.data[q.rear] := value;
    writeln('Data ', value, ' berhasil ditambahkan.');
  end;
end;

// Menghapus elemen dari antrian (Dequeue)
procedure Dequeue(var q: Queue);
var
  removedValue: integer;
begin
  if IsEmpty(q) then
    writeln('Antrian kosong!')
  else
  begin
    removedValue := q.data[q.front];
    writeln('Data ', removedValue, ' berhasil dihapus.');
    if q.front = q.rear then
      InitializeQueue(q) // Reset jika antrian menjadi kosong
    else
      q.front := q.front + 1;
  end;
end;

// Menampilkan isi antrian
procedure DisplayQueue(q: Queue);
var
  i: integer;
begin
  if IsEmpty(q) then
    writeln('Antrian kosong!')
  else
  begin
    writeln('Isi antrian:');
    for i := q.front to q.rear do
      write(q.data[i], ' ');
    writeln;
  end;
end;

var
  choice, value: integer;

begin
  clrscr;
  InitializeQueue(q);

  repeat
    writeln('=== Program FIFO dengan Pascal ===');
    writeln('1. Tambah Data (Enqueue)');
    writeln('2. Hapus Data (Dequeue)');
    writeln('3. Tampilkan Antrian');
    writeln('4. Keluar');
    write('Pilih menu: '); readln(choice);

    case choice of
      1: begin
           write('Masukkan data: '); readln(value);
           Enqueue(q, value);
         end;
      2: Dequeue(q);
      3: DisplayQueue(q);
      4: writeln('Keluar dari program...');
    else
      writeln('Pilihan tidak valid!');
    end;

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

end.

Penjelasan Program

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

    • Array data untuk menyimpan elemen antrian.
    • Dua variabel, front dan rear, untuk melacak posisi elemen pertama dan terakhir.
  2. Inisialisasi Queue
    Prosedur InitializeQueue mengatur front dan rear ke 0 untuk menandakan bahwa antrian kosong.

  3. Operasi FIFO

    • Enqueue: Menambahkan elemen ke posisi rear dan menggeser pointer rear.
    • Dequeue: Menghapus elemen dari posisi front dan menggeser pointer front.
    • Display: Menampilkan elemen dari front ke rear.
  4. Pengecekan Penuh atau Kosong

    • IsEmpty mengembalikan true jika front = 0.
    • IsFull mengembalikan true jika rear = MAX.
  5. Menu Utama
    Program menggunakan menu untuk memilih operasi FIFO, seperti Enqueue, Dequeue, atau menampilkan antrian.


Contoh Output Program

Input:

Pilih menu: 1
Masukkan data: 10

Pilih menu: 1
Masukkan data: 20

Pilih menu: 3

Output:

Data 10 berhasil ditambahkan.
Data 20 berhasil ditambahkan.
Isi antrian:
10 20

Input:

Pilih menu: 2
Pilih menu: 3

Output:

Data 10 berhasil dihapus.
Isi antrian:
20

Kesimpulan

Program FIFO di atas adalah implementasi dasar menggunakan Pascal dengan array. Anda dapat mengembangkan program ini lebih lanjut, misalnya dengan menggunakan linked list untuk mengatasi keterbatasan kapasitas atau menambahkan fitur seperti pencarian elemen dalam antrian. Program seperti ini membantu memahami konsep queue dalam struktur data dan penerapannya.

Next Post Previous Post
No Comment
Add Comment
comment url