Tugas Mandiri Struktur Data, Membuat Program Antrian,
Jurusan Teknik Informatika,
program animation_queue;
uses wincrt;
const max_elemen =10;
type antri = array [1..max_elemen] of char;
var
antrian : antri;
q : antri;
d : char;
isi : antri;
depan, belakang, pilih : integer;
elemen : char;
procedure kotak;
var
i: integer;
begin
gotoxy(20,15);
for i:= 1 to max_elemen * 4 + 1 do
write('*');
gotoxy(22,16);
for i:= 1 to max_elemen do
write('| ');
writeln('| | | | | | | | | | ');
gotoxy(20,17);
for i:= 1 to max_elemen * 4 + 1 do
write('*');
gotoxy(8,16);writeln('<***** Out');
gotoxy(22+max_elemen*4+1,16);
writeln('<***** In');
end;
procedure letakkan(x: char; r:integer);
begin
gotoxy(18+4*r,16);
write(x);
end;
function kosong(q: antri): boolean;
begin
kosong:=(depan=belakang)
end;
procedure tambah(var antrian: antri;x:char);
begin
if belakang=max_elemen then belakang:=1
else belakang:=belakang+1;
if not (kosong(antrian)) then
begin
antrian[belakang]:=x;
letakkan(x,belakang);
end
else
begin
gotoxy(40,9);
write('OVERFLOW');
repeat
{menunggu sampai ada tombol ditekan}
until keypressed;
gotoxy(40,9);
write(' ':30);
belakang:=belakang-1;
if belakang=0 then
belakang:=max_elemen
end
end;
function qkosong(q:antri):boolean;
begin
qkosong:= (depan = belakang);
end;
procedure Dequeue(var q:antri; ed:char);
begin
if not(qkosong(q)) then
begin
if depan = max_elemen then depan :=1
else depan := depan+1;
ed := isi[depan];
end;
end;
procedure tampil(q: antri);
var i,awal : integer;
begin
CLRSCR;
writeln('ANTRIAN');
if depan = max_elemen then awal :=1
else awal := depan +1;
for i:=awal to belakang do
writeln(i:3,' ':5,isi[i],' ');
READLN;
end;
function hapus(var antrian: antri):char;
begin
if depan=max_elemen then
depan:=1
else
begin
depan:=depan+1;
hapus:=antrian[depan]
end
end;
{program utama}
begin
clrscr;
kotak;
depan:=0;
belakang:=0;
repeat
for pilih:=5 to 9 do
begin
gotoxy(40,pilih);write(' ':39);
end;
gotoxy(1,1);
writeln ('NPM : 110210087 ');
writeln ('kode kelas : 112-IF211-M2');
writeln;
writeln('MENU ');
writeln;
writeln(' 1. Tambahkan sebuah pilihan baru ');
writeln(' 2. Menampilkan antrian ');
writeln(' 3. SELESAI dan TUTUP');
writeln('PILIHAN ANDA:');
writeln;
write ('*** TERIMA KASIH UNTUK MENGGUNAKAN PROGRAM INI ***');
writeln;
write (' PROGRAM DIBUAT OLEH ');
writeln;
write (' JALALUDDIN SOLIN ');
writeln;
write (' http://jlssolin.blogspot.com ');
writeln;
repeat
gotoxy(22,9);writeln(' ');
gotoxy(22,9);readln(pilih);
until (pilih>=1) and(pilih<=3);
case pilih of
1 : begin
write('MASUKKAN PILIHAN ANDA:');readln(elemen);
tambah(antrian,elemen);
end;
2 : begin
if not(kosong(antrian)) then
begin
Dequeue(q,d);
tampil(q);
end
else
begin
gotoxy (30,9);
writeln ('UNDERFLOW');
elemen:=readkey;
gotoxy (30,9);write (' ':30);
end
end
end;
until pilih=3
end.
DESA PASI BIKERS BATAM BERSATU
Jurusan Teknik Informatika,
program animation_queue;
uses wincrt;
const max_elemen =10;
type antri = array [1..max_elemen] of char;
var
antrian : antri;
q : antri;
d : char;
isi : antri;
depan, belakang, pilih : integer;
elemen : char;
procedure kotak;
var
i: integer;
begin
gotoxy(20,15);
for i:= 1 to max_elemen * 4 + 1 do
write('*');
gotoxy(22,16);
for i:= 1 to max_elemen do
write('| ');
writeln('| | | | | | | | | | ');
gotoxy(20,17);
for i:= 1 to max_elemen * 4 + 1 do
write('*');
gotoxy(8,16);writeln('<***** Out');
gotoxy(22+max_elemen*4+1,16);
writeln('<***** In');
end;
procedure letakkan(x: char; r:integer);
begin
gotoxy(18+4*r,16);
write(x);
end;
function kosong(q: antri): boolean;
begin
kosong:=(depan=belakang)
end;
procedure tambah(var antrian: antri;x:char);
begin
if belakang=max_elemen then belakang:=1
else belakang:=belakang+1;
if not (kosong(antrian)) then
begin
antrian[belakang]:=x;
letakkan(x,belakang);
end
else
begin
gotoxy(40,9);
write('OVERFLOW');
repeat
{menunggu sampai ada tombol ditekan}
until keypressed;
gotoxy(40,9);
write(' ':30);
belakang:=belakang-1;
if belakang=0 then
belakang:=max_elemen
end
end;
function qkosong(q:antri):boolean;
begin
qkosong:= (depan = belakang);
end;
procedure Dequeue(var q:antri; ed:char);
begin
if not(qkosong(q)) then
begin
if depan = max_elemen then depan :=1
else depan := depan+1;
ed := isi[depan];
end;
end;
procedure tampil(q: antri);
var i,awal : integer;
begin
CLRSCR;
writeln('ANTRIAN');
if depan = max_elemen then awal :=1
else awal := depan +1;
for i:=awal to belakang do
writeln(i:3,' ':5,isi[i],' ');
READLN;
end;
function hapus(var antrian: antri):char;
begin
if depan=max_elemen then
depan:=1
else
begin
depan:=depan+1;
hapus:=antrian[depan]
end
end;
{program utama}
begin
clrscr;
kotak;
depan:=0;
belakang:=0;
repeat
for pilih:=5 to 9 do
begin
gotoxy(40,pilih);write(' ':39);
end;
gotoxy(1,1);
writeln ('NPM : 110210087 ');
writeln ('kode kelas : 112-IF211-M2');
writeln;
writeln('MENU ');
writeln;
writeln(' 1. Tambahkan sebuah pilihan baru ');
writeln(' 2. Menampilkan antrian ');
writeln(' 3. SELESAI dan TUTUP');
writeln('PILIHAN ANDA:');
writeln;
write ('*** TERIMA KASIH UNTUK MENGGUNAKAN PROGRAM INI ***');
writeln;
write (' PROGRAM DIBUAT OLEH ');
writeln;
write (' JALALUDDIN SOLIN ');
writeln;
write (' http://jlssolin.blogspot.com ');
writeln;
repeat
gotoxy(22,9);writeln(' ');
gotoxy(22,9);readln(pilih);
until (pilih>=1) and(pilih<=3);
case pilih of
1 : begin
write('MASUKKAN PILIHAN ANDA:');readln(elemen);
tambah(antrian,elemen);
end;
2 : begin
if not(kosong(antrian)) then
begin
Dequeue(q,d);
tampil(q);
end
else
begin
gotoxy (30,9);
writeln ('UNDERFLOW');
elemen:=readkey;
gotoxy (30,9);write (' ':30);
end
end
end;
until pilih=3
end.
DESA PASI BIKERS BATAM BERSATU
No comments:
Post a Comment