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
- Data dimasukkan ke dalam antrian (queue) melalui ujung belakang (rear).
- Data dikeluarkan dari antrian melalui ujung depan (front).
- Antrian memiliki batas maksimal (kapasitas), sehingga perlu dilakukan pengecekan apakah antrian penuh atau kosong.
Operasi Dasar FIFO
- Enqueue: Menambahkan data ke antrian.
- Dequeue: Menghapus data dari antrian.
- 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
-
Deklarasi Record Queue
Tipe dataQueueadalah record yang berisi:- Array
datauntuk menyimpan elemen antrian. - Dua variabel,
frontdanrear, untuk melacak posisi elemen pertama dan terakhir.
- Array
-
Inisialisasi Queue
ProsedurInitializeQueuemengaturfrontdanrearke 0 untuk menandakan bahwa antrian kosong. -
Operasi FIFO
- Enqueue: Menambahkan elemen ke posisi
reardan menggeser pointerrear. - Dequeue: Menghapus elemen dari posisi
frontdan menggeser pointerfront. - Display: Menampilkan elemen dari
frontkerear.
- Enqueue: Menambahkan elemen ke posisi
-
Pengecekan Penuh atau Kosong
IsEmptymengembalikantruejikafront = 0.IsFullmengembalikantruejikarear = MAX.
-
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.
