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 dataQueue
adalah record yang berisi:- Array
data
untuk menyimpan elemen antrian. - Dua variabel,
front
danrear
, untuk melacak posisi elemen pertama dan terakhir.
- Array
-
Inisialisasi Queue
ProsedurInitializeQueue
mengaturfront
danrear
ke 0 untuk menandakan bahwa antrian kosong. -
Operasi FIFO
- Enqueue: Menambahkan elemen ke posisi
rear
dan menggeser pointerrear
. - Dequeue: Menghapus elemen dari posisi
front
dan menggeser pointerfront
. - Display: Menampilkan elemen dari
front
kerear
.
- Enqueue: Menambahkan elemen ke posisi
-
Pengecekan Penuh atau Kosong
IsEmpty
mengembalikantrue
jikafront = 0
.IsFull
mengembalikantrue
jikarear = 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.