You are on page 1of 5

PRAKTIKUM STRUKTUR DATA Modul 4 Implementasi Queue dengan Pointer

Program SIMULASI_PARKIR; uses crt; const Terus = 'Tekan sembarang tombol untuk terus'; type Str10 = string[10]; Antri = ^Simpul; Simpul = record Info : Str10; Berikut : Antri end; var Depan, Belakang Pilih, P Keterangan No_Plat : Antri; : char; : string; : Str10; {* mobil terdepan *} {* mobil terakhir *} {* memilih aktifitas *} {* nomor plat mobil *}

{****************************************** * Prosedur untuk membentuk simpul kepala * ****************************************** } procedure INISIALISASI (var Ngarep, Mburi: Antri); begin new(Ngarep); Ngarep^.Info := chr(0); Ngarep^.Berikut := Ngarep; Mburi := Ngarep end; {* prosedur INISIALISASI *} {********************************** * Prosedur untuk mencatat mobil * * yang masuk tempat parkir * **********************************} procedure MASUK (var Ngarep, Mburi : Antri; No_Plat : Str10); var Baru : Antri; begin new(Baru); Baru^.Info := No_Plat; Baru^.Berikut := Ngarep; Mburi^.Berikut := Baru; Mburi := Baru end; {* prosedur MASUK *}

{*************************************************** * Prosedur untuk mengeluarkan mobl dari tempat * * parkir. Prosedur ini berisi fungsi untuk mencek * * apakah mobil yang akan dikeluarkan ada di * * tempat parkir atau tidak. * ***************************************************} procedure KELUAR (var Ngarep, Mburi : Antri; NO_Plat : Str10); var Mobil, Bantu, TM : Antri; P : char; Nomor : integer; {********************************** * Fungsi untuk mencek keberadaan * * mobil di tempat parkir * **********************************} function ADA_MOBIL(var Lok : Antri; D : Antri; X : Str10) : boolean; var Ada : boolean; begin Ada := false; Lok := D^.Berikut; repeat if Lok^.Info = X then Ada := true else Lok := Lok^.Berikut until Ada or (Lok = D); ADA_MOBIL := Ada end; {* fungsi ADA_MOBIL *} begin {* prosedur KELUAR *} if not (ADA_MOBIL(Mobil, Ngarep, No_Plat)) then begin gotoxy(40,9); writeln('MOBIL YANG DIMAKSUD TIDAK ADA'); gotoxy(40,11);write(Terus); P := readkey end else if Mobil = Ngarep^.Berikut then {* Mobil yang dikeluarkan adalah mobil * * yang terletak paling depan *} begin Ngarep^.Berikut := Mobil^.Berikut; dispose(Mobil) end else {* Mobil yang akan dikeluarkan terletak * * di tengah. Semua mobil yang terletak *

end;

* di depannya harus dikeluarkan dahulu *} begin Bantu := Ngarep; clrscr; write ('Mobil yang dikeluarkan '); writeln('sementara:'); write('------------------------'); writeln('----------'); writeln; Nomor := 1; repeat Bantu := Bantu^.Berikut; write('Mobil ke', Nomor:3); write(', Nomor Plat: '); writeln(Bantu^.Info); inc(Nomor); until Bantu^.Berikut^.Info = No_Plat; writeln; write(Terus); P := readkey; Bantu^.Berikut := Mobil^.Berikut; dispose(Mobil) end {* prosedur KELUAR *}

{************************************* * Prosedur untuk membaca data mobil * * yang ada di tempat parkir * *************************************} procedure BACA_MOBIL (Ngarep : Antri); var Bantu : Antri; Nomor : integer; P : char; begin Bantu := Ngarep^.Berikut; if Bantu = Ngarep then {* Tempat parkir kosong *} begin gotoxy(1,4); write('TEMPAT PARKIR KOSONG'); writeln end else {* Tempat parkir terisi sejumlah mobil *} begin Nomor := 1; repeat write('Mobil ke',Nomor:3,', Nomor'); writeln(' Plat: ',Bantu^.Info); Bantu := Bantu^.Berikut; inc(Nomor) until Bantu = Ngarep end end; {* prosedur BACA_MOBIL *}

{***************** * Program utama * *****************} begin {* Inisialisasi senarai *} INISIALISASI(Depan,Belakang); {* Simulasi *} repeat clrscr; writeln('SIMULASI TEMPAT PARKIR'); write('TEMPAT PARKIR HANYA MEMUAT MOBIL '); writeln('DALAM 1 BARIS'); write('---------------------------------'); writeln('-------------'); writeln; writeln(' M : Mobil Masuk'); writeln(' K : Mobil Keluar'); writeln(' C : Cetak Data Mobil'); writeln(' S : Selesai'); writeln; writeln(' PILIH SALAH SATU: '); {* Memilih menu *} repeat gotoxy(23,10); writeln(' '); gotoxy(23,10); Pilih := upcase(readkey); until Pilih in ['M','K','S','C']; {* Mengerjakan pilihan *} case Pilih of 'M' : Keterangan := 'MOBIL MASUK'; 'K' : Keterangan := 'MOBIL KELUAR'; 'C' : begin clrscr; write('Data Mobil di '); writeln('Tempat Parkir'); write('--------------'); writeln('-------------'); writeln; BACA_MOBIL(Depan); writeln; write('Tekan sembarang tombol '); write('untuk kembali ke menu'); P := readkey; end; 'S' : begin clrscr; writeln('SIMULASI SELESAI'); writeln('----------------') end end; if Pilih in ['M','K'] then begin gotoxy(40,5); writeln(Keterangan); gotoxy(40,6); writeln('------------'); gotoxy(40,7);

write('Nomor plat mobil: '); readln(No_Plat); if Pilih = 'M' then MASUK(Depan, Belakang,No_Plat) else KELUAR(Depan,Belakang,No_Plat) end until Pilih = 'S' end. {* program utama *}

You might also like