Jumat, 02 Mei 2014

Membuat Antrian dengan Pascal

Program ILUSTRASI_ANTRIAN;

uses crt;

const Max_Elemen = 10;

type Antri = array[1..Max_Elemen] of char;

Var Antrian      : Antri;
    Depan,
    Belakang,
    pilih        : integer;
    Elemen       : char;

{ Prosedur untuk menggambar kotak antrian }

procedure KOTAK;
var I : integer;

Begin
  gotoxy(20,15);
  for I := 1 to Max_Elemen*4 + 1 do write('-');
  gotoxy(20,16);
  for I := 1 to Max_Elemen do write ('! ');
  writeln('!'); gotoxy(20,17);

  For I := 1 to Max_Elemen*4 + 1 do
  gotoxy(8,16); write(',<---- Keluar');
  gotoxy(22+Max_Elemen*4+1,16);
  writeln('<-----');
end;

{Prosedur  utk meletak: kan elemnen dalam kotak antrian}
procedure LETAKKAN (x : char; R : Integer);

begin
  gotoxy(18+4*R,16);
  write(X)
end;

{Fungsi ntuk cek keadaan Antrian}

Function Kosong(Q : Antri) : boolean;
BEGIN
  Kosong := (Depan = Belakang)
End;

{Prosedur namabah antrian baru jk blm penuh}

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
    {Antrian penuh}
    Begin
      gotoxy(40,9);
      Write('ANTRIAN SUDAH PENUH');

      repeat
      until keypressed;

      gotoxy(40,9);
      write(' ',30); Belakang := Belakang - 1;
      if Belakang = 0 then
         Belakang := Max_Elemen
    end
End;

{Prosedur hapus Elemen}

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('DAFTAR MENU PILIHAN');
  Writeln('-------------------');
  Writeln;
  Writeln(' 1. Nambah Elemen Baru ');
  Writeln(' 2. Menghapus Elemen');
  Writeln(' 3. Selesai');
  Writeln; Writeln;
  Writeln(' Pilih salah satu');
  Repeat
     gotoxy(22,9); writeln(' ');
     gotoxy(22,9); readln(pilih)
  Until (pilih >= 1) and (Pilih <= 3);
  case pilih of
      {milih aktifitas}
      1 : begin
          {Nambah elemen ke dalam antrian}
          gotoxy(40,6);
          writeln('Namhah Elemen');
          Writeln('-------------');
          gotoxy(40,8);
          write('Isikah Elemen: ');
          gotoxy(40,9);
          write('Isikan Elemenya : ');
          Readln(Elemen);
          TAMBAH(Antrian,Elemen);
          end;

       2 : Begin
             {Hapus Elemen dari Antrian}
             If not (KOSONG(Antrian)) then
                begin
                  Elemen := Hapus(Antrian);
                  LETAKKAN(' ',Depan)
                END
             else
                begin
                  gotoxy(30,9);
                  writeln('ANTRIAN KOSONG ....');
                  Elemen := readkey;
                  gotoxy (30,9); write(' ':30)
                end
            end
end;
     until pilih = 3
end.

Silahkan dicoba ...
Semoga Berhasil 

0 komentar: